@whatwg-node/server 0.9.0 → 0.9.1-alpha-20230627124545-b7237a8
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/utils.js +15 -8
- package/esm/utils.js +15 -8
- package/package.json +1 -1
package/cjs/utils.js
CHANGED
|
@@ -145,21 +145,26 @@ 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
|
|
149
|
-
const
|
|
148
|
+
function getHeaderPairs(headers) {
|
|
149
|
+
const headerPairs = new Map();
|
|
150
150
|
headers.forEach((value, key) => {
|
|
151
|
+
let headerValues = headerPairs.get(key);
|
|
152
|
+
if (headerValues === undefined) {
|
|
153
|
+
headerValues = [];
|
|
154
|
+
headerPairs.set(key, headerValues);
|
|
155
|
+
}
|
|
151
156
|
if (key === 'set-cookie') {
|
|
152
157
|
const setCookies = headers.getSetCookie?.();
|
|
153
158
|
if (setCookies) {
|
|
154
159
|
setCookies.forEach(setCookie => {
|
|
155
|
-
|
|
160
|
+
headerValues.push(setCookie);
|
|
156
161
|
});
|
|
157
162
|
return;
|
|
158
163
|
}
|
|
159
164
|
}
|
|
160
|
-
|
|
165
|
+
headerValues.push(value);
|
|
161
166
|
});
|
|
162
|
-
return
|
|
167
|
+
return headerPairs;
|
|
163
168
|
}
|
|
164
169
|
async function sendAsyncIterable(serverResponse, asyncIterable) {
|
|
165
170
|
for await (const chunk of asyncIterable) {
|
|
@@ -172,9 +177,11 @@ async function sendAsyncIterable(serverResponse, asyncIterable) {
|
|
|
172
177
|
endResponse(serverResponse);
|
|
173
178
|
}
|
|
174
179
|
function sendNodeResponse(fetchResponse, serverResponse, nodeRequest) {
|
|
175
|
-
serverResponse.writeHead(fetchResponse.status, fetchResponse.statusText
|
|
176
|
-
|
|
177
|
-
|
|
180
|
+
serverResponse.writeHead(fetchResponse.status, fetchResponse.statusText);
|
|
181
|
+
const headerPairs = getHeaderPairs(fetchResponse.headers);
|
|
182
|
+
for (const [key, value] of headerPairs) {
|
|
183
|
+
serverResponse.setHeader(key, value);
|
|
184
|
+
}
|
|
178
185
|
// Optimizations for node-fetch
|
|
179
186
|
if (fetchResponse.bodyType === 'Buffer' ||
|
|
180
187
|
fetchResponse.bodyType === 'String' ||
|
package/esm/utils.js
CHANGED
|
@@ -135,21 +135,26 @@ 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
|
|
139
|
-
const
|
|
138
|
+
function getHeaderPairs(headers) {
|
|
139
|
+
const headerPairs = new Map();
|
|
140
140
|
headers.forEach((value, key) => {
|
|
141
|
+
let headerValues = headerPairs.get(key);
|
|
142
|
+
if (headerValues === undefined) {
|
|
143
|
+
headerValues = [];
|
|
144
|
+
headerPairs.set(key, headerValues);
|
|
145
|
+
}
|
|
141
146
|
if (key === 'set-cookie') {
|
|
142
147
|
const setCookies = headers.getSetCookie?.();
|
|
143
148
|
if (setCookies) {
|
|
144
149
|
setCookies.forEach(setCookie => {
|
|
145
|
-
|
|
150
|
+
headerValues.push(setCookie);
|
|
146
151
|
});
|
|
147
152
|
return;
|
|
148
153
|
}
|
|
149
154
|
}
|
|
150
|
-
|
|
155
|
+
headerValues.push(value);
|
|
151
156
|
});
|
|
152
|
-
return
|
|
157
|
+
return headerPairs;
|
|
153
158
|
}
|
|
154
159
|
async function sendAsyncIterable(serverResponse, asyncIterable) {
|
|
155
160
|
for await (const chunk of asyncIterable) {
|
|
@@ -162,9 +167,11 @@ async function sendAsyncIterable(serverResponse, asyncIterable) {
|
|
|
162
167
|
endResponse(serverResponse);
|
|
163
168
|
}
|
|
164
169
|
export function sendNodeResponse(fetchResponse, serverResponse, nodeRequest) {
|
|
165
|
-
serverResponse.writeHead(fetchResponse.status, fetchResponse.statusText
|
|
166
|
-
|
|
167
|
-
|
|
170
|
+
serverResponse.writeHead(fetchResponse.status, fetchResponse.statusText);
|
|
171
|
+
const headerPairs = getHeaderPairs(fetchResponse.headers);
|
|
172
|
+
for (const [key, value] of headerPairs) {
|
|
173
|
+
serverResponse.setHeader(key, value);
|
|
174
|
+
}
|
|
168
175
|
// Optimizations for node-fetch
|
|
169
176
|
if (fetchResponse.bodyType === 'Buffer' ||
|
|
170
177
|
fetchResponse.bodyType === 'String' ||
|