@whatwg-node/server 0.9.3 → 0.9.4-alpha-20230717121215-bb27f02
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 +24 -21
- package/cjs/utils.js +5 -1
- package/cjs/uwebsockets.js +29 -0
- package/esm/createServerAdapter.js +24 -21
- package/esm/utils.js +3 -0
- package/esm/uwebsockets.js +29 -0
- package/package.json +1 -1
- package/typings/utils.d.cts +1 -0
- package/typings/utils.d.ts +1 -0
|
@@ -95,29 +95,31 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
|
95
95
|
const request = (0, utils_js_1.normalizeNodeRequest)(nodeRequest, fetchAPI.Request);
|
|
96
96
|
return handleRequest(request, serverContext);
|
|
97
97
|
}
|
|
98
|
-
|
|
98
|
+
function requestListener(nodeRequest, serverResponse, ...ctx) {
|
|
99
99
|
const waitUntilPromises = [];
|
|
100
100
|
const defaultServerContext = {
|
|
101
101
|
req: nodeRequest,
|
|
102
102
|
res: serverResponse,
|
|
103
103
|
};
|
|
104
104
|
addWaitUntil(defaultServerContext, waitUntilPromises);
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
105
|
+
return handleNodeRequest(nodeRequest, defaultServerContext, ...ctx)
|
|
106
|
+
.then(response => {
|
|
107
|
+
if (response) {
|
|
108
|
+
return (0, utils_js_1.sendNodeResponse)(response, serverResponse, nodeRequest);
|
|
109
|
+
}
|
|
110
|
+
return new Promise(resolve => {
|
|
111
111
|
serverResponse.statusCode = 404;
|
|
112
112
|
serverResponse.once('end', resolve);
|
|
113
113
|
serverResponse.end();
|
|
114
114
|
});
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
115
|
+
})
|
|
116
|
+
.finally(() => {
|
|
117
|
+
if (waitUntilPromises.length > 0) {
|
|
118
|
+
return handleWaitUntils(waitUntilPromises);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
119
121
|
}
|
|
120
|
-
|
|
122
|
+
function handleUWS(res, req, ...ctx) {
|
|
121
123
|
const waitUntilPromises = [];
|
|
122
124
|
const defaultServerContext = {
|
|
123
125
|
res,
|
|
@@ -130,15 +132,16 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
|
130
132
|
res,
|
|
131
133
|
fetchAPI,
|
|
132
134
|
});
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
135
|
+
return handleRequest(request, serverContext).then(response => {
|
|
136
|
+
if (!response) {
|
|
137
|
+
res.writeStatus('404 Not Found');
|
|
138
|
+
res.end();
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
return (0, uwebsockets_js_1.sendResponseToUwsOpts)({
|
|
142
|
+
response,
|
|
143
|
+
res,
|
|
144
|
+
});
|
|
142
145
|
});
|
|
143
146
|
}
|
|
144
147
|
function handleEvent(event, ...ctx) {
|
package/cjs/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.completeAssign = exports.isRequestInit = exports.sendNodeResponse = exports.isFetchEvent = exports.isReadableStream = exports.isServerResponse = exports.isNodeRequest = exports.isReadable = exports.normalizeNodeRequest = exports.isAsyncIterable = void 0;
|
|
3
|
+
exports.isPromise = exports.completeAssign = exports.isRequestInit = exports.sendNodeResponse = exports.isFetchEvent = exports.isReadableStream = exports.isServerResponse = exports.isNodeRequest = exports.isReadable = exports.normalizeNodeRequest = exports.isAsyncIterable = void 0;
|
|
4
4
|
const fetch_1 = require("@whatwg-node/fetch");
|
|
5
5
|
function isAsyncIterable(body) {
|
|
6
6
|
return (body != null && typeof body === 'object' && typeof body[Symbol.asyncIterator] === 'function');
|
|
@@ -243,3 +243,7 @@ function completeAssign(...args) {
|
|
|
243
243
|
return target;
|
|
244
244
|
}
|
|
245
245
|
exports.completeAssign = completeAssign;
|
|
246
|
+
function isPromise(val) {
|
|
247
|
+
return val != null && typeof val === 'object' && typeof val.then === 'function';
|
|
248
|
+
}
|
|
249
|
+
exports.isPromise = isPromise;
|
package/cjs/uwebsockets.js
CHANGED
|
@@ -5,6 +5,34 @@ function isUWSResponse(res) {
|
|
|
5
5
|
return !!res.onData;
|
|
6
6
|
}
|
|
7
7
|
exports.isUWSResponse = isUWSResponse;
|
|
8
|
+
class UWSAbortSignal extends EventTarget {
|
|
9
|
+
throwIfAborted() {
|
|
10
|
+
if (this.aborted) {
|
|
11
|
+
throw new DOMException('Aborted', 'AbortError');
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
constructor(res) {
|
|
15
|
+
super();
|
|
16
|
+
this.aborted = false;
|
|
17
|
+
this._onabort = null;
|
|
18
|
+
res.onAborted(() => {
|
|
19
|
+
this.aborted = true;
|
|
20
|
+
this.dispatchEvent(new Event('request aborted'));
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
get onabort() {
|
|
24
|
+
return this._onabort;
|
|
25
|
+
}
|
|
26
|
+
set onabort(value) {
|
|
27
|
+
this._onabort = value;
|
|
28
|
+
if (value) {
|
|
29
|
+
this.addEventListener('request aborted', value);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this.removeEventListener('request aborted', value);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
8
36
|
function getRequestFromUWSRequest({ req, res, fetchAPI }) {
|
|
9
37
|
let body;
|
|
10
38
|
const method = req.getMethod();
|
|
@@ -38,6 +66,7 @@ function getRequestFromUWSRequest({ req, res, fetchAPI }) {
|
|
|
38
66
|
method,
|
|
39
67
|
headers,
|
|
40
68
|
body: body,
|
|
69
|
+
signal: new UWSAbortSignal(res),
|
|
41
70
|
});
|
|
42
71
|
}
|
|
43
72
|
exports.getRequestFromUWSRequest = getRequestFromUWSRequest;
|
|
@@ -91,29 +91,31 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
|
91
91
|
const request = normalizeNodeRequest(nodeRequest, fetchAPI.Request);
|
|
92
92
|
return handleRequest(request, serverContext);
|
|
93
93
|
}
|
|
94
|
-
|
|
94
|
+
function requestListener(nodeRequest, serverResponse, ...ctx) {
|
|
95
95
|
const waitUntilPromises = [];
|
|
96
96
|
const defaultServerContext = {
|
|
97
97
|
req: nodeRequest,
|
|
98
98
|
res: serverResponse,
|
|
99
99
|
};
|
|
100
100
|
addWaitUntil(defaultServerContext, waitUntilPromises);
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
101
|
+
return handleNodeRequest(nodeRequest, defaultServerContext, ...ctx)
|
|
102
|
+
.then(response => {
|
|
103
|
+
if (response) {
|
|
104
|
+
return sendNodeResponse(response, serverResponse, nodeRequest);
|
|
105
|
+
}
|
|
106
|
+
return new Promise(resolve => {
|
|
107
107
|
serverResponse.statusCode = 404;
|
|
108
108
|
serverResponse.once('end', resolve);
|
|
109
109
|
serverResponse.end();
|
|
110
110
|
});
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
111
|
+
})
|
|
112
|
+
.finally(() => {
|
|
113
|
+
if (waitUntilPromises.length > 0) {
|
|
114
|
+
return handleWaitUntils(waitUntilPromises);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
115
117
|
}
|
|
116
|
-
|
|
118
|
+
function handleUWS(res, req, ...ctx) {
|
|
117
119
|
const waitUntilPromises = [];
|
|
118
120
|
const defaultServerContext = {
|
|
119
121
|
res,
|
|
@@ -126,15 +128,16 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
|
126
128
|
res,
|
|
127
129
|
fetchAPI,
|
|
128
130
|
});
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
131
|
+
return handleRequest(request, serverContext).then(response => {
|
|
132
|
+
if (!response) {
|
|
133
|
+
res.writeStatus('404 Not Found');
|
|
134
|
+
res.end();
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
return sendResponseToUwsOpts({
|
|
138
|
+
response,
|
|
139
|
+
res,
|
|
140
|
+
});
|
|
138
141
|
});
|
|
139
142
|
}
|
|
140
143
|
function handleEvent(event, ...ctx) {
|
package/esm/utils.js
CHANGED
package/esm/uwebsockets.js
CHANGED
|
@@ -1,6 +1,34 @@
|
|
|
1
1
|
export function isUWSResponse(res) {
|
|
2
2
|
return !!res.onData;
|
|
3
3
|
}
|
|
4
|
+
class UWSAbortSignal extends EventTarget {
|
|
5
|
+
throwIfAborted() {
|
|
6
|
+
if (this.aborted) {
|
|
7
|
+
throw new DOMException('Aborted', 'AbortError');
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
constructor(res) {
|
|
11
|
+
super();
|
|
12
|
+
this.aborted = false;
|
|
13
|
+
this._onabort = null;
|
|
14
|
+
res.onAborted(() => {
|
|
15
|
+
this.aborted = true;
|
|
16
|
+
this.dispatchEvent(new Event('request aborted'));
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
get onabort() {
|
|
20
|
+
return this._onabort;
|
|
21
|
+
}
|
|
22
|
+
set onabort(value) {
|
|
23
|
+
this._onabort = value;
|
|
24
|
+
if (value) {
|
|
25
|
+
this.addEventListener('request aborted', value);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.removeEventListener('request aborted', value);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
4
32
|
export function getRequestFromUWSRequest({ req, res, fetchAPI }) {
|
|
5
33
|
let body;
|
|
6
34
|
const method = req.getMethod();
|
|
@@ -34,6 +62,7 @@ export function getRequestFromUWSRequest({ req, res, fetchAPI }) {
|
|
|
34
62
|
method,
|
|
35
63
|
headers,
|
|
36
64
|
body: body,
|
|
65
|
+
signal: new UWSAbortSignal(res),
|
|
37
66
|
});
|
|
38
67
|
}
|
|
39
68
|
export async function sendResponseToUwsOpts({ res, response }) {
|
package/package.json
CHANGED
package/typings/utils.d.cts
CHANGED
|
@@ -31,3 +31,4 @@ export declare function isFetchEvent(event: any): event is FetchEvent;
|
|
|
31
31
|
export declare function sendNodeResponse(fetchResponse: Response, serverResponse: NodeResponse, nodeRequest: NodeRequest): Promise<void> | undefined;
|
|
32
32
|
export declare function isRequestInit(val: unknown): val is RequestInit;
|
|
33
33
|
export declare function completeAssign(...args: any[]): any;
|
|
34
|
+
export declare function isPromise(val: unknown): val is Promise<unknown>;
|
package/typings/utils.d.ts
CHANGED
|
@@ -31,3 +31,4 @@ export declare function isFetchEvent(event: any): event is FetchEvent;
|
|
|
31
31
|
export declare function sendNodeResponse(fetchResponse: Response, serverResponse: NodeResponse, nodeRequest: NodeRequest): Promise<void> | undefined;
|
|
32
32
|
export declare function isRequestInit(val: unknown): val is RequestInit;
|
|
33
33
|
export declare function completeAssign(...args: any[]): any;
|
|
34
|
+
export declare function isPromise(val: unknown): val is Promise<unknown>;
|