@whatwg-node/server 0.8.11-alpha-20230613182236-ce4ebc7 → 0.8.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -150,7 +150,7 @@ function createServerAdapter(serverAdapterBaseObject, options) {
150
150
  event.respondWith(response$);
151
151
  }
152
152
  function handleRequestWithWaitUntil(request, ...ctx) {
153
- const serverContext = ctx.length > 1 ? (0, utils_js_1.completeAssign)(...ctx) : ctx[0] || {};
153
+ const serverContext = (ctx.length > 1 ? (0, utils_js_1.completeAssign)(...ctx) : ctx[0]) || {};
154
154
  if (serverContext.waitUntil == null) {
155
155
  const waitUntilPromises = [];
156
156
  addWaitUntil(serverContext, waitUntilPromises);
package/cjs/utils.js CHANGED
@@ -145,6 +145,20 @@ function endResponse(serverResponse) {
145
145
  // @ts-expect-error Avoid arguments adaptor trampoline https://v8.dev/blog/adaptor-frame
146
146
  serverResponse.end(null, null, null);
147
147
  }
148
+ function getHeadersArray(headers) {
149
+ const headersArray = [];
150
+ headers.forEach((value, key) => {
151
+ if (key === 'set-cookie') {
152
+ const setCookieValues = value.split(',');
153
+ setCookieValues.forEach(setCookieValue => {
154
+ headersArray.push('set-cookie', setCookieValue.trim());
155
+ });
156
+ return;
157
+ }
158
+ headersArray.push(key, value);
159
+ });
160
+ return headersArray;
161
+ }
148
162
  async function sendAsyncIterable(serverResponse, asyncIterable) {
149
163
  for await (const chunk of asyncIterable) {
150
164
  if (!serverResponse
@@ -156,19 +170,12 @@ async function sendAsyncIterable(serverResponse, asyncIterable) {
156
170
  endResponse(serverResponse);
157
171
  }
158
172
  function sendNodeResponse(fetchResponse, serverResponse, nodeRequest) {
159
- fetchResponse.headers.forEach((value, key) => {
160
- if (key === 'set-cookie') {
161
- const setCookieValues = value.split(',');
162
- serverResponse.setHeader('set-cookie', setCookieValues);
163
- return;
164
- }
165
- serverResponse.setHeader(key, value);
166
- });
167
- serverResponse.statusCode = fetchResponse.status;
168
- serverResponse.statusMessage = fetchResponse.statusText;
173
+ serverResponse.writeHead(fetchResponse.status, fetchResponse.statusText,
174
+ // @ts-expect-error Node supports arrays as headers
175
+ getHeadersArray(fetchResponse.headers));
169
176
  // Optimizations for node-fetch
170
- if (fetchResponse.bodyType === 'String' ||
171
- fetchResponse.bodyType === 'Buffer' ||
177
+ if (fetchResponse.bodyType === 'Buffer' ||
178
+ fetchResponse.bodyType === 'String' ||
172
179
  fetchResponse.bodyType === 'Uint8Array') {
173
180
  // @ts-expect-error http and http2 writes are actually compatible
174
181
  serverResponse.write(fetchResponse.bodyInit);
@@ -146,7 +146,7 @@ function createServerAdapter(serverAdapterBaseObject, options) {
146
146
  event.respondWith(response$);
147
147
  }
148
148
  function handleRequestWithWaitUntil(request, ...ctx) {
149
- const serverContext = ctx.length > 1 ? completeAssign(...ctx) : ctx[0] || {};
149
+ const serverContext = (ctx.length > 1 ? completeAssign(...ctx) : ctx[0]) || {};
150
150
  if (serverContext.waitUntil == null) {
151
151
  const waitUntilPromises = [];
152
152
  addWaitUntil(serverContext, waitUntilPromises);
package/esm/utils.js CHANGED
@@ -135,6 +135,20 @@ function endResponse(serverResponse) {
135
135
  // @ts-expect-error Avoid arguments adaptor trampoline https://v8.dev/blog/adaptor-frame
136
136
  serverResponse.end(null, null, null);
137
137
  }
138
+ function getHeadersArray(headers) {
139
+ const headersArray = [];
140
+ headers.forEach((value, key) => {
141
+ if (key === 'set-cookie') {
142
+ const setCookieValues = value.split(',');
143
+ setCookieValues.forEach(setCookieValue => {
144
+ headersArray.push('set-cookie', setCookieValue.trim());
145
+ });
146
+ return;
147
+ }
148
+ headersArray.push(key, value);
149
+ });
150
+ return headersArray;
151
+ }
138
152
  async function sendAsyncIterable(serverResponse, asyncIterable) {
139
153
  for await (const chunk of asyncIterable) {
140
154
  if (!serverResponse
@@ -146,19 +160,12 @@ async function sendAsyncIterable(serverResponse, asyncIterable) {
146
160
  endResponse(serverResponse);
147
161
  }
148
162
  export function sendNodeResponse(fetchResponse, serverResponse, nodeRequest) {
149
- fetchResponse.headers.forEach((value, key) => {
150
- if (key === 'set-cookie') {
151
- const setCookieValues = value.split(',');
152
- serverResponse.setHeader('set-cookie', setCookieValues);
153
- return;
154
- }
155
- serverResponse.setHeader(key, value);
156
- });
157
- serverResponse.statusCode = fetchResponse.status;
158
- serverResponse.statusMessage = fetchResponse.statusText;
163
+ serverResponse.writeHead(fetchResponse.status, fetchResponse.statusText,
164
+ // @ts-expect-error Node supports arrays as headers
165
+ getHeadersArray(fetchResponse.headers));
159
166
  // Optimizations for node-fetch
160
- if (fetchResponse.bodyType === 'String' ||
161
- fetchResponse.bodyType === 'Buffer' ||
167
+ if (fetchResponse.bodyType === 'Buffer' ||
168
+ fetchResponse.bodyType === 'String' ||
162
169
  fetchResponse.bodyType === 'Uint8Array') {
163
170
  // @ts-expect-error http and http2 writes are actually compatible
164
171
  serverResponse.write(fetchResponse.bodyInit);
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@whatwg-node/server",
3
- "version": "0.8.11-alpha-20230613182236-ce4ebc7",
3
+ "version": "0.8.11",
4
4
  "description": "Fetch API compliant HTTP Server adapter",
5
5
  "sideEffects": false,
6
6
  "dependencies": {
7
- "@whatwg-node/fetch": "0.9.7-alpha-20230613182236-ce4ebc7",
7
+ "@whatwg-node/fetch": "^0.9.6",
8
8
  "tslib": "^2.3.1"
9
9
  },
10
10
  "repository": {