@whatwg-node/server 0.6.1 → 0.6.2-alpha-20230205160326-cd8fd84
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 +32 -13
- package/index.mjs +32 -13
- package/package.json +2 -2
- package/utils.d.ts +1 -1
package/index.js
CHANGED
|
@@ -132,32 +132,51 @@ function isReadableStream(stream) {
|
|
|
132
132
|
function isFetchEvent(event) {
|
|
133
133
|
return event != null && event.request != null && event.respondWith != null;
|
|
134
134
|
}
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
function configureSocket(rawRequest) {
|
|
136
|
+
var _a, _b, _c, _d, _e, _f;
|
|
137
|
+
(_b = (_a = rawRequest === null || rawRequest === void 0 ? void 0 : rawRequest.socket) === null || _a === void 0 ? void 0 : _a.setTimeout) === null || _b === void 0 ? void 0 : _b.call(_a, 0);
|
|
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
|
+
(_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
|
+
}
|
|
141
|
+
async function sendNodeResponse(fetchResponse, serverResponse, nodeRequest) {
|
|
142
|
+
fetchResponse.headers.forEach((value, name) => {
|
|
137
143
|
serverResponse.setHeader(name, value);
|
|
138
144
|
});
|
|
139
|
-
serverResponse.statusCode = status;
|
|
140
|
-
serverResponse.statusMessage = statusText;
|
|
145
|
+
serverResponse.statusCode = fetchResponse.status;
|
|
146
|
+
serverResponse.statusMessage = fetchResponse.statusText;
|
|
141
147
|
// eslint-disable-next-line no-async-promise-executor
|
|
142
148
|
return new Promise(async (resolve) => {
|
|
143
149
|
serverResponse.once('close', resolve);
|
|
144
|
-
|
|
150
|
+
// Our Node-fetch enhancements
|
|
151
|
+
if ('bodyType' in fetchResponse && fetchResponse.bodyType != null && (fetchResponse.bodyType === 'String' || fetchResponse.bodyType === 'Uint8Array')) {
|
|
152
|
+
// @ts-expect-error http and http2 writes are actually compatible
|
|
153
|
+
serverResponse.write(fetchResponse.bodyInit);
|
|
154
|
+
serverResponse.end();
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
// Other fetch implementations
|
|
158
|
+
const fetchBody = fetchResponse.body;
|
|
159
|
+
if (fetchBody == null) {
|
|
145
160
|
serverResponse.end();
|
|
161
|
+
return;
|
|
146
162
|
}
|
|
147
|
-
|
|
163
|
+
if (fetchBody[Symbol.toStringTag] === 'Uint8Array') {
|
|
148
164
|
serverResponse
|
|
149
165
|
// @ts-expect-error http and http2 writes are actually compatible
|
|
150
|
-
.write(
|
|
166
|
+
.write(fetchBody);
|
|
151
167
|
serverResponse.end();
|
|
168
|
+
return;
|
|
152
169
|
}
|
|
153
|
-
|
|
170
|
+
configureSocket(nodeRequest);
|
|
171
|
+
if (isReadable(fetchBody)) {
|
|
154
172
|
serverResponse.once('close', () => {
|
|
155
|
-
|
|
173
|
+
fetchBody.destroy();
|
|
156
174
|
});
|
|
157
|
-
|
|
175
|
+
fetchBody.pipe(serverResponse);
|
|
176
|
+
return;
|
|
158
177
|
}
|
|
159
|
-
|
|
160
|
-
for await (const chunk of
|
|
178
|
+
if (isAsyncIterable(fetchBody)) {
|
|
179
|
+
for await (const chunk of fetchBody) {
|
|
161
180
|
if (!serverResponse
|
|
162
181
|
// @ts-expect-error http and http2 writes are actually compatible
|
|
163
182
|
.write(chunk)) {
|
|
@@ -221,7 +240,7 @@ RequestCtor = fetch.Request) {
|
|
|
221
240
|
};
|
|
222
241
|
const response = await handleNodeRequest(nodeRequest, defaultServerContext, ...ctx);
|
|
223
242
|
if (response) {
|
|
224
|
-
await sendNodeResponse(response, serverResponse);
|
|
243
|
+
await sendNodeResponse(response, serverResponse, nodeRequest);
|
|
225
244
|
}
|
|
226
245
|
else {
|
|
227
246
|
await new Promise(resolve => {
|
package/index.mjs
CHANGED
|
@@ -129,32 +129,51 @@ function isReadableStream(stream) {
|
|
|
129
129
|
function isFetchEvent(event) {
|
|
130
130
|
return event != null && event.request != null && event.respondWith != null;
|
|
131
131
|
}
|
|
132
|
-
|
|
133
|
-
|
|
132
|
+
function configureSocket(rawRequest) {
|
|
133
|
+
var _a, _b, _c, _d, _e, _f;
|
|
134
|
+
(_b = (_a = rawRequest === null || rawRequest === void 0 ? void 0 : rawRequest.socket) === null || _a === void 0 ? void 0 : _a.setTimeout) === null || _b === void 0 ? void 0 : _b.call(_a, 0);
|
|
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
|
+
(_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
|
+
}
|
|
138
|
+
async function sendNodeResponse(fetchResponse, serverResponse, nodeRequest) {
|
|
139
|
+
fetchResponse.headers.forEach((value, name) => {
|
|
134
140
|
serverResponse.setHeader(name, value);
|
|
135
141
|
});
|
|
136
|
-
serverResponse.statusCode = status;
|
|
137
|
-
serverResponse.statusMessage = statusText;
|
|
142
|
+
serverResponse.statusCode = fetchResponse.status;
|
|
143
|
+
serverResponse.statusMessage = fetchResponse.statusText;
|
|
138
144
|
// eslint-disable-next-line no-async-promise-executor
|
|
139
145
|
return new Promise(async (resolve) => {
|
|
140
146
|
serverResponse.once('close', resolve);
|
|
141
|
-
|
|
147
|
+
// Our Node-fetch enhancements
|
|
148
|
+
if ('bodyType' in fetchResponse && fetchResponse.bodyType != null && (fetchResponse.bodyType === 'String' || fetchResponse.bodyType === 'Uint8Array')) {
|
|
149
|
+
// @ts-expect-error http and http2 writes are actually compatible
|
|
150
|
+
serverResponse.write(fetchResponse.bodyInit);
|
|
151
|
+
serverResponse.end();
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
// Other fetch implementations
|
|
155
|
+
const fetchBody = fetchResponse.body;
|
|
156
|
+
if (fetchBody == null) {
|
|
142
157
|
serverResponse.end();
|
|
158
|
+
return;
|
|
143
159
|
}
|
|
144
|
-
|
|
160
|
+
if (fetchBody[Symbol.toStringTag] === 'Uint8Array') {
|
|
145
161
|
serverResponse
|
|
146
162
|
// @ts-expect-error http and http2 writes are actually compatible
|
|
147
|
-
.write(
|
|
163
|
+
.write(fetchBody);
|
|
148
164
|
serverResponse.end();
|
|
165
|
+
return;
|
|
149
166
|
}
|
|
150
|
-
|
|
167
|
+
configureSocket(nodeRequest);
|
|
168
|
+
if (isReadable(fetchBody)) {
|
|
151
169
|
serverResponse.once('close', () => {
|
|
152
|
-
|
|
170
|
+
fetchBody.destroy();
|
|
153
171
|
});
|
|
154
|
-
|
|
172
|
+
fetchBody.pipe(serverResponse);
|
|
173
|
+
return;
|
|
155
174
|
}
|
|
156
|
-
|
|
157
|
-
for await (const chunk of
|
|
175
|
+
if (isAsyncIterable(fetchBody)) {
|
|
176
|
+
for await (const chunk of fetchBody) {
|
|
158
177
|
if (!serverResponse
|
|
159
178
|
// @ts-expect-error http and http2 writes are actually compatible
|
|
160
179
|
.write(chunk)) {
|
|
@@ -218,7 +237,7 @@ RequestCtor = Request) {
|
|
|
218
237
|
};
|
|
219
238
|
const response = await handleNodeRequest(nodeRequest, defaultServerContext, ...ctx);
|
|
220
239
|
if (response) {
|
|
221
|
-
await sendNodeResponse(response, serverResponse);
|
|
240
|
+
await sendNodeResponse(response, serverResponse, nodeRequest);
|
|
222
241
|
}
|
|
223
242
|
else {
|
|
224
243
|
await new Promise(resolve => {
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@whatwg-node/server",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.2-alpha-20230205160326-cd8fd84",
|
|
4
4
|
"description": "Fetch API compliant HTTP Server adapter",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@whatwg-node/fetch": "0.6.
|
|
7
|
+
"@whatwg-node/fetch": "0.6.7-alpha-20230205160326-cd8fd84",
|
|
8
8
|
"tslib": "^2.3.1"
|
|
9
9
|
},
|
|
10
10
|
"repository": {
|
package/utils.d.ts
CHANGED
|
@@ -28,5 +28,5 @@ export declare function isNodeRequest(request: any): request is NodeRequest;
|
|
|
28
28
|
export declare function isServerResponse(stream: any): stream is NodeResponse;
|
|
29
29
|
export declare function isReadableStream(stream: any): stream is ReadableStream;
|
|
30
30
|
export declare function isFetchEvent(event: any): event is FetchEvent;
|
|
31
|
-
export declare function sendNodeResponse(
|
|
31
|
+
export declare function sendNodeResponse(fetchResponse: Response, serverResponse: NodeResponse, nodeRequest: NodeRequest): Promise<void>;
|
|
32
32
|
export declare function isRequestInit(val: unknown): val is RequestInit;
|