diff --git a/packages/runtime/src/helpers/edge.ts b/packages/runtime/src/helpers/edge.ts index 76ee557d64..093850e078 100644 --- a/packages/runtime/src/helpers/edge.ts +++ b/packages/runtime/src/helpers/edge.ts @@ -89,6 +89,23 @@ globalThis.process = { env: {...Deno.env.toObject(), NEXT_RUNTIME: 'edge', 'NEXT const self = {} let _ENTRIES = {} +class Response extends globalThis.Response { + constructor(body, init) { + super(body, init); + // Next.js uses this extension to the Headers API implemented by Cloudflare workerd + this.headers.getAll = (name) => { + name = name.toLowerCase(); + if (name !== "set-cookie") { + throw new Error("Headers.getAll is only supported for Set-Cookie"); + } + return [...this.headers.entries()] + .filter(([key]) => key === name) + .map(([, value]) => value); + }; + } +} + + // Next uses blob: urls to refer to local assets, so we need to intercept these const _fetch = globalThis.fetch const fetch = async (url, init) => {