From fb34f3172cf5f32c8e70151c2dcfdc5913ac8b8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Orb=C3=A1n?= Date: Tue, 5 Sep 2023 12:21:46 +0200 Subject: [PATCH] fix(cookies): use `Headers#getSetCookie` when available (#540) Co-authored-by: Kiko Beats --- .changeset/unlucky-sloths-explode.md | 6 ++++++ packages/cookies/src/response-cookies.ts | 11 +++++------ pnpm-lock.yaml | 24 ++++++++++++------------ 3 files changed, 23 insertions(+), 18 deletions(-) create mode 100644 .changeset/unlucky-sloths-explode.md diff --git a/.changeset/unlucky-sloths-explode.md b/.changeset/unlucky-sloths-explode.md new file mode 100644 index 00000000..e95145c8 --- /dev/null +++ b/.changeset/unlucky-sloths-explode.md @@ -0,0 +1,6 @@ +--- +'@edge-runtime/primitives': patch +'@edge-runtime/cookies': patch +--- + +use `Headers#getSetCookie` when available diff --git a/packages/cookies/src/response-cookies.ts b/packages/cookies/src/response-cookies.ts index d1a3c416..5504c9b9 100644 --- a/packages/cookies/src/response-cookies.ts +++ b/packages/cookies/src/response-cookies.ts @@ -19,15 +19,14 @@ export class ResponseCookies { constructor(responseHeaders: Headers) { this._headers = responseHeaders - const setCookie = - // @ts-expect-error See https://github.com/whatwg/fetch/issues/973 - responseHeaders.getAll?.('set-cookie') ?? - responseHeaders.get('set-cookie') ?? - [] + const setCookie = responseHeaders.getSetCookie?.() + responseHeaders.get('set-cookie') ?? [] const cookieStrings = Array.isArray(setCookie) ? setCookie - : splitCookiesString(setCookie) + : // TODO: remove splitCookiesString when `getSetCookie` adoption is high enough in Node.js + // https://developer.mozilla.org/en-US/docs/Web/API/Headers/getSetCookie#browser_compatibility + splitCookiesString(setCookie) for (const cookieString of cookieStrings) { const parsed = parseSetCookie(cookieString) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2724cb63..008fb7ff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,7 +27,7 @@ importers: version: 0.19.2 finepack: specifier: latest - version: 2.10.15 + version: 2.11.0 git-authors-cli: specifier: latest version: 1.0.46 @@ -703,7 +703,7 @@ packages: '@changesets/write': 0.2.3 '@manypkg/get-packages': 1.1.3 '@types/is-ci': 3.0.0 - '@types/semver': 7.5.0 + '@types/semver': 7.5.1 ansi-colors: 4.1.3 chalk: 2.4.2 enquirer: 2.3.6 @@ -719,7 +719,7 @@ packages: semver: 7.5.4 spawndamnit: 2.0.0 term-size: 2.2.1 - tty-table: 4.2.1 + tty-table: 4.1.6 dev: true /@changesets/config@2.3.1: @@ -2170,8 +2170,8 @@ packages: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} dev: false - /@types/semver@7.5.0: - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + /@types/semver@7.5.1: + resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} dev: true /@types/serve-static@1.15.1: @@ -3914,8 +3914,8 @@ packages: pkg-dir: 4.2.0 dev: true - /finepack@2.10.15: - resolution: {integrity: sha512-adX1h0YEF0hZKT6MZDZm0FnO26YUffxR/ioi6IVg6yckvWugOTsNPr5pw9spABoOFggP2Qb4qbi6ZHZBOZ6Rjg==} + /finepack@2.11.0: + resolution: {integrity: sha512-E5N+iiO7VJBG25Mre+0mTD72vlDOipj7fu/47W6n5QsJyDabyrRoyzhEkaC4EN3TqxYvmIoL0OXM+oIp3KqNzg==} engines: {node: '>=4'} hasBin: true dependencies: @@ -6500,8 +6500,8 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /mixme@0.5.9: - resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} + /mixme@0.5.4: + resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} engines: {node: '>= 8.0.0'} dev: true @@ -7849,7 +7849,7 @@ packages: /stream-transform@2.1.3: resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} dependencies: - mixme: 0.5.9 + mixme: 0.5.4 dev: true /streamsearch@1.1.0: @@ -8352,8 +8352,8 @@ packages: - ts-node dev: true - /tty-table@4.2.1: - resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} + /tty-table@4.1.6: + resolution: {integrity: sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw==} engines: {node: '>=8.0.0'} hasBin: true dependencies: