diff --git a/.changeset/quiet-crews-hunt.md b/.changeset/quiet-crews-hunt.md new file mode 100644 index 000000000000..74a6abe9e4a6 --- /dev/null +++ b/.changeset/quiet-crews-hunt.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-cloudflare-workers': patch +--- + +Support assigning multiple values to a header diff --git a/packages/adapter-cloudflare-workers/files/entry.js b/packages/adapter-cloudflare-workers/files/entry.js index 09c6dd322edf..f7a7e397a620 100644 --- a/packages/adapter-cloudflare-workers/files/entry.js +++ b/packages/adapter-cloudflare-workers/files/entry.js @@ -41,7 +41,7 @@ async function handle(event) { if (rendered) { return new Response(rendered.body, { status: rendered.status, - headers: rendered.headers + headers: makeHeaders(rendered.headers) }); } } catch (e) { @@ -58,3 +58,22 @@ async function handle(event) { async function read(request) { return new Uint8Array(await request.arrayBuffer()); } + +/** + * @param {Record} headers + * @returns {Request} + */ +function makeHeaders(headers) { + const result = new Headers(); + for (const header in headers) { + const value = headers[header]; + if (typeof value === 'string') { + result.set(header, value); + continue; + } + for (const sub of value) { + result.append(header, sub); + } + } + return result; +}