@whatwg-node/server 0.6.4 → 0.6.5-alpha-20230207082824-72139f9
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/index.js +39 -9
- package/index.mjs +39 -9
- package/package.json +2 -2
package/index.js
CHANGED
|
@@ -138,12 +138,42 @@ function configureSocket(rawRequest) {
|
|
|
138
138
|
(_d = (_c = rawRequest === null || rawRequest === void 0 ? void 0 : rawRequest.socket) === null || _c === void 0 ? void 0 : _c.setNoDelay) === null || _d === void 0 ? void 0 : _d.call(_c, true);
|
|
139
139
|
(_f = (_e = rawRequest === null || rawRequest === void 0 ? void 0 : rawRequest.socket) === null || _e === void 0 ? void 0 : _e.setKeepAlive) === null || _f === void 0 ? void 0 : _f.call(_e, true);
|
|
140
140
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
141
|
+
function endResponse(serverResponse) {
|
|
142
|
+
// @ts-expect-error Avoid arguments adaptor trampoline https://v8.dev/blog/adaptor-frame
|
|
143
|
+
serverResponse.end(null, null, null);
|
|
144
|
+
}
|
|
145
|
+
function getHeadersObj(headers) {
|
|
146
|
+
return new Proxy({}, {
|
|
147
|
+
get(_target, prop) {
|
|
148
|
+
return headers.get(prop);
|
|
149
|
+
},
|
|
150
|
+
set(_target, prop, value) {
|
|
151
|
+
headers.set(prop, value);
|
|
152
|
+
return true;
|
|
153
|
+
},
|
|
154
|
+
has(_target, prop) {
|
|
155
|
+
return headers.has(prop);
|
|
156
|
+
},
|
|
157
|
+
deleteProperty(_target, prop) {
|
|
158
|
+
headers.delete(prop);
|
|
159
|
+
return true;
|
|
160
|
+
},
|
|
161
|
+
ownKeys() {
|
|
162
|
+
const keys = [];
|
|
163
|
+
headers.forEach((_, key) => keys.push(key));
|
|
164
|
+
return keys;
|
|
165
|
+
},
|
|
166
|
+
getOwnPropertyDescriptor() {
|
|
167
|
+
return {
|
|
168
|
+
enumerable: true,
|
|
169
|
+
configurable: true,
|
|
170
|
+
};
|
|
171
|
+
},
|
|
144
172
|
});
|
|
145
|
-
|
|
146
|
-
|
|
173
|
+
}
|
|
174
|
+
async function sendNodeResponse(fetchResponse, serverResponse, nodeRequest) {
|
|
175
|
+
const headersObj = getHeadersObj(fetchResponse.headers);
|
|
176
|
+
serverResponse.writeHead(fetchResponse.status, fetchResponse.statusText, headersObj);
|
|
147
177
|
// eslint-disable-next-line no-async-promise-executor
|
|
148
178
|
return new Promise(async (resolve) => {
|
|
149
179
|
serverResponse.once('close', resolve);
|
|
@@ -153,20 +183,20 @@ async function sendNodeResponse(fetchResponse, serverResponse, nodeRequest) {
|
|
|
153
183
|
(fetchResponse.bodyType === 'String' || fetchResponse.bodyType === 'Uint8Array')) {
|
|
154
184
|
// @ts-expect-error http and http2 writes are actually compatible
|
|
155
185
|
serverResponse.write(fetchResponse.bodyInit);
|
|
156
|
-
serverResponse
|
|
186
|
+
endResponse(serverResponse);
|
|
157
187
|
return;
|
|
158
188
|
}
|
|
159
189
|
// Other fetch implementations
|
|
160
190
|
const fetchBody = fetchResponse.body;
|
|
161
191
|
if (fetchBody == null) {
|
|
162
|
-
serverResponse
|
|
192
|
+
endResponse(serverResponse);
|
|
163
193
|
return;
|
|
164
194
|
}
|
|
165
195
|
if (fetchBody[Symbol.toStringTag] === 'Uint8Array') {
|
|
166
196
|
serverResponse
|
|
167
197
|
// @ts-expect-error http and http2 writes are actually compatible
|
|
168
198
|
.write(fetchBody);
|
|
169
|
-
serverResponse
|
|
199
|
+
endResponse(serverResponse);
|
|
170
200
|
return;
|
|
171
201
|
}
|
|
172
202
|
configureSocket(nodeRequest);
|
|
@@ -185,7 +215,7 @@ async function sendNodeResponse(fetchResponse, serverResponse, nodeRequest) {
|
|
|
185
215
|
break;
|
|
186
216
|
}
|
|
187
217
|
}
|
|
188
|
-
serverResponse
|
|
218
|
+
endResponse(serverResponse);
|
|
189
219
|
}
|
|
190
220
|
});
|
|
191
221
|
}
|
package/index.mjs
CHANGED
|
@@ -135,12 +135,42 @@ function configureSocket(rawRequest) {
|
|
|
135
135
|
(_d = (_c = rawRequest === null || rawRequest === void 0 ? void 0 : rawRequest.socket) === null || _c === void 0 ? void 0 : _c.setNoDelay) === null || _d === void 0 ? void 0 : _d.call(_c, true);
|
|
136
136
|
(_f = (_e = rawRequest === null || rawRequest === void 0 ? void 0 : rawRequest.socket) === null || _e === void 0 ? void 0 : _e.setKeepAlive) === null || _f === void 0 ? void 0 : _f.call(_e, true);
|
|
137
137
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
138
|
+
function endResponse(serverResponse) {
|
|
139
|
+
// @ts-expect-error Avoid arguments adaptor trampoline https://v8.dev/blog/adaptor-frame
|
|
140
|
+
serverResponse.end(null, null, null);
|
|
141
|
+
}
|
|
142
|
+
function getHeadersObj(headers) {
|
|
143
|
+
return new Proxy({}, {
|
|
144
|
+
get(_target, prop) {
|
|
145
|
+
return headers.get(prop);
|
|
146
|
+
},
|
|
147
|
+
set(_target, prop, value) {
|
|
148
|
+
headers.set(prop, value);
|
|
149
|
+
return true;
|
|
150
|
+
},
|
|
151
|
+
has(_target, prop) {
|
|
152
|
+
return headers.has(prop);
|
|
153
|
+
},
|
|
154
|
+
deleteProperty(_target, prop) {
|
|
155
|
+
headers.delete(prop);
|
|
156
|
+
return true;
|
|
157
|
+
},
|
|
158
|
+
ownKeys() {
|
|
159
|
+
const keys = [];
|
|
160
|
+
headers.forEach((_, key) => keys.push(key));
|
|
161
|
+
return keys;
|
|
162
|
+
},
|
|
163
|
+
getOwnPropertyDescriptor() {
|
|
164
|
+
return {
|
|
165
|
+
enumerable: true,
|
|
166
|
+
configurable: true,
|
|
167
|
+
};
|
|
168
|
+
},
|
|
141
169
|
});
|
|
142
|
-
|
|
143
|
-
|
|
170
|
+
}
|
|
171
|
+
async function sendNodeResponse(fetchResponse, serverResponse, nodeRequest) {
|
|
172
|
+
const headersObj = getHeadersObj(fetchResponse.headers);
|
|
173
|
+
serverResponse.writeHead(fetchResponse.status, fetchResponse.statusText, headersObj);
|
|
144
174
|
// eslint-disable-next-line no-async-promise-executor
|
|
145
175
|
return new Promise(async (resolve) => {
|
|
146
176
|
serverResponse.once('close', resolve);
|
|
@@ -150,20 +180,20 @@ async function sendNodeResponse(fetchResponse, serverResponse, nodeRequest) {
|
|
|
150
180
|
(fetchResponse.bodyType === 'String' || fetchResponse.bodyType === 'Uint8Array')) {
|
|
151
181
|
// @ts-expect-error http and http2 writes are actually compatible
|
|
152
182
|
serverResponse.write(fetchResponse.bodyInit);
|
|
153
|
-
serverResponse
|
|
183
|
+
endResponse(serverResponse);
|
|
154
184
|
return;
|
|
155
185
|
}
|
|
156
186
|
// Other fetch implementations
|
|
157
187
|
const fetchBody = fetchResponse.body;
|
|
158
188
|
if (fetchBody == null) {
|
|
159
|
-
serverResponse
|
|
189
|
+
endResponse(serverResponse);
|
|
160
190
|
return;
|
|
161
191
|
}
|
|
162
192
|
if (fetchBody[Symbol.toStringTag] === 'Uint8Array') {
|
|
163
193
|
serverResponse
|
|
164
194
|
// @ts-expect-error http and http2 writes are actually compatible
|
|
165
195
|
.write(fetchBody);
|
|
166
|
-
serverResponse
|
|
196
|
+
endResponse(serverResponse);
|
|
167
197
|
return;
|
|
168
198
|
}
|
|
169
199
|
configureSocket(nodeRequest);
|
|
@@ -182,7 +212,7 @@ async function sendNodeResponse(fetchResponse, serverResponse, nodeRequest) {
|
|
|
182
212
|
break;
|
|
183
213
|
}
|
|
184
214
|
}
|
|
185
|
-
serverResponse
|
|
215
|
+
endResponse(serverResponse);
|
|
186
216
|
}
|
|
187
217
|
});
|
|
188
218
|
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@whatwg-node/server",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.5-alpha-20230207082824-72139f9",
|
|
4
4
|
"description": "Fetch API compliant HTTP Server adapter",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@whatwg-node/fetch": "
|
|
7
|
+
"@whatwg-node/fetch": "0.6.10-alpha-20230207082824-72139f9",
|
|
8
8
|
"tslib": "^2.3.1"
|
|
9
9
|
},
|
|
10
10
|
"repository": {
|