@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.
- package/cjs/createServerAdapter.js +1 -1
- package/cjs/utils.js +19 -12
- package/esm/createServerAdapter.js +1 -1
- package/esm/utils.js +19 -12
- package/package.json +2 -2
|
@@ -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.
|
|
160
|
-
|
|
161
|
-
|
|
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 === '
|
|
171
|
-
fetchResponse.bodyType === '
|
|
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.
|
|
150
|
-
|
|
151
|
-
|
|
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 === '
|
|
161
|
-
fetchResponse.bodyType === '
|
|
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
|
|
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
|
+
"@whatwg-node/fetch": "^0.9.6",
|
|
8
8
|
"tslib": "^2.3.1"
|
|
9
9
|
},
|
|
10
10
|
"repository": {
|