@whatwg-node/server 0.9.58 → 0.9.59-rc-20241125184425-a8fccc28b169011604dfa3149cf1c7a317b1f279
Sign up to get free protection for your applications and to get access to all the features.
- package/cjs/createServerAdapter.js +24 -32
- package/cjs/utils.js +1 -1
- package/esm/createServerAdapter.js +24 -32
- package/esm/utils.js +1 -1
- package/package.json +1 -1
@@ -28,33 +28,24 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
28
28
|
const onRequestHooks = [];
|
29
29
|
const onResponseHooks = [];
|
30
30
|
const waitUntilPromises = new Set();
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
disposableStack.defer(() => {
|
45
|
-
if (waitUntilPromises.size > 0) {
|
46
|
-
return Promise.allSettled(waitUntilPromises).then(() => {
|
47
|
-
waitUntilPromises.clear();
|
48
|
-
}, () => {
|
49
|
-
waitUntilPromises.clear();
|
31
|
+
let _disposableStack;
|
32
|
+
function ensureDisposableStack() {
|
33
|
+
if (!_disposableStack) {
|
34
|
+
_disposableStack = new disposablestack_1.AsyncDisposableStack();
|
35
|
+
(0, utils_js_1.ensureDisposableStackRegisteredForTerminateEvents)(_disposableStack);
|
36
|
+
_disposableStack.defer(() => {
|
37
|
+
if (waitUntilPromises.size > 0) {
|
38
|
+
return Promise.allSettled(waitUntilPromises).then(() => {
|
39
|
+
waitUntilPromises.clear();
|
40
|
+
}, () => {
|
41
|
+
waitUntilPromises.clear();
|
42
|
+
});
|
43
|
+
}
|
50
44
|
});
|
51
45
|
}
|
52
|
-
|
46
|
+
return _disposableStack;
|
47
|
+
}
|
53
48
|
function waitUntil(promiseLike) {
|
54
|
-
// If it is a Node.js environment, we should register the disposable stack to handle process termination events
|
55
|
-
if (globalThis.process) {
|
56
|
-
(0, utils_js_1.ensureDisposableStackRegisteredForTerminateEvents)(disposableStack);
|
57
|
-
}
|
58
49
|
waitUntilPromises.add(promiseLike);
|
59
50
|
promiseLike.then(() => {
|
60
51
|
waitUntilPromises.delete(promiseLike);
|
@@ -73,7 +64,7 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
73
64
|
}
|
74
65
|
const disposeFn = plugin[disposablestack_1.DisposableSymbols.asyncDispose] || plugin[disposablestack_1.DisposableSymbols.dispose];
|
75
66
|
if (disposeFn != null) {
|
76
|
-
|
67
|
+
ensureDisposableStack().defer(disposeFn);
|
77
68
|
}
|
78
69
|
}
|
79
70
|
}
|
@@ -148,7 +139,7 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
148
139
|
// TODO: Remove this on the next major version
|
149
140
|
function handleNodeRequest(nodeRequest, ...ctx) {
|
150
141
|
const serverContext = ctx.length > 1 ? (0, utils_js_1.completeAssign)(...ctx) : ctx[0] || {};
|
151
|
-
const request = (0, utils_js_1.normalizeNodeRequest)(nodeRequest, fetchAPI
|
142
|
+
const request = (0, utils_js_1.normalizeNodeRequest)(nodeRequest, fetchAPI);
|
152
143
|
return handleRequest(request, serverContext);
|
153
144
|
}
|
154
145
|
function handleNodeRequestAndResponse(nodeRequest, nodeResponseOrContainer, ...ctx) {
|
@@ -195,7 +186,6 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
195
186
|
? (0, utils_js_1.completeAssign)(defaultServerContext, ...ctx)
|
196
187
|
: defaultServerContext;
|
197
188
|
const signal = new utils_js_1.ServerAdapterRequestAbortSignal();
|
198
|
-
registerSignal(signal);
|
199
189
|
const originalResEnd = res.end.bind(res);
|
200
190
|
let resEnded = false;
|
201
191
|
res.end = function (data) {
|
@@ -314,16 +304,18 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
314
304
|
handleEvent,
|
315
305
|
handleUWS,
|
316
306
|
handle: genericRequestHandler,
|
317
|
-
disposableStack
|
307
|
+
get disposableStack() {
|
308
|
+
return ensureDisposableStack();
|
309
|
+
},
|
318
310
|
[disposablestack_1.DisposableSymbols.asyncDispose]() {
|
319
|
-
if (!
|
320
|
-
return
|
311
|
+
if (_disposableStack && !_disposableStack.disposed) {
|
312
|
+
return _disposableStack.disposeAsync();
|
321
313
|
}
|
322
314
|
return (0, uwebsockets_js_1.fakePromise)(undefined);
|
323
315
|
},
|
324
316
|
dispose() {
|
325
|
-
if (!
|
326
|
-
return
|
317
|
+
if (_disposableStack && !_disposableStack.disposed) {
|
318
|
+
return _disposableStack.disposeAsync();
|
327
319
|
}
|
328
320
|
return (0, uwebsockets_js_1.fakePromise)(undefined);
|
329
321
|
},
|
package/cjs/utils.js
CHANGED
@@ -547,7 +547,7 @@ function handleResponseDecompression(response, fetchAPI) {
|
|
547
547
|
}
|
548
548
|
return decompressedResponse;
|
549
549
|
}
|
550
|
-
const terminateEvents = ['SIGINT', '
|
550
|
+
const terminateEvents = ['SIGINT', 'exit'];
|
551
551
|
const disposableStacks = new Set();
|
552
552
|
let eventListenerRegistered = false;
|
553
553
|
function ensureEventListenerForDisposableStacks() {
|
@@ -24,33 +24,24 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
24
24
|
const onRequestHooks = [];
|
25
25
|
const onResponseHooks = [];
|
26
26
|
const waitUntilPromises = new Set();
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
disposableStack.defer(() => {
|
41
|
-
if (waitUntilPromises.size > 0) {
|
42
|
-
return Promise.allSettled(waitUntilPromises).then(() => {
|
43
|
-
waitUntilPromises.clear();
|
44
|
-
}, () => {
|
45
|
-
waitUntilPromises.clear();
|
27
|
+
let _disposableStack;
|
28
|
+
function ensureDisposableStack() {
|
29
|
+
if (!_disposableStack) {
|
30
|
+
_disposableStack = new AsyncDisposableStack();
|
31
|
+
ensureDisposableStackRegisteredForTerminateEvents(_disposableStack);
|
32
|
+
_disposableStack.defer(() => {
|
33
|
+
if (waitUntilPromises.size > 0) {
|
34
|
+
return Promise.allSettled(waitUntilPromises).then(() => {
|
35
|
+
waitUntilPromises.clear();
|
36
|
+
}, () => {
|
37
|
+
waitUntilPromises.clear();
|
38
|
+
});
|
39
|
+
}
|
46
40
|
});
|
47
41
|
}
|
48
|
-
|
42
|
+
return _disposableStack;
|
43
|
+
}
|
49
44
|
function waitUntil(promiseLike) {
|
50
|
-
// If it is a Node.js environment, we should register the disposable stack to handle process termination events
|
51
|
-
if (globalThis.process) {
|
52
|
-
ensureDisposableStackRegisteredForTerminateEvents(disposableStack);
|
53
|
-
}
|
54
45
|
waitUntilPromises.add(promiseLike);
|
55
46
|
promiseLike.then(() => {
|
56
47
|
waitUntilPromises.delete(promiseLike);
|
@@ -69,7 +60,7 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
69
60
|
}
|
70
61
|
const disposeFn = plugin[DisposableSymbols.asyncDispose] || plugin[DisposableSymbols.dispose];
|
71
62
|
if (disposeFn != null) {
|
72
|
-
|
63
|
+
ensureDisposableStack().defer(disposeFn);
|
73
64
|
}
|
74
65
|
}
|
75
66
|
}
|
@@ -144,7 +135,7 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
144
135
|
// TODO: Remove this on the next major version
|
145
136
|
function handleNodeRequest(nodeRequest, ...ctx) {
|
146
137
|
const serverContext = ctx.length > 1 ? completeAssign(...ctx) : ctx[0] || {};
|
147
|
-
const request = normalizeNodeRequest(nodeRequest, fetchAPI
|
138
|
+
const request = normalizeNodeRequest(nodeRequest, fetchAPI);
|
148
139
|
return handleRequest(request, serverContext);
|
149
140
|
}
|
150
141
|
function handleNodeRequestAndResponse(nodeRequest, nodeResponseOrContainer, ...ctx) {
|
@@ -191,7 +182,6 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
191
182
|
? completeAssign(defaultServerContext, ...ctx)
|
192
183
|
: defaultServerContext;
|
193
184
|
const signal = new ServerAdapterRequestAbortSignal();
|
194
|
-
registerSignal(signal);
|
195
185
|
const originalResEnd = res.end.bind(res);
|
196
186
|
let resEnded = false;
|
197
187
|
res.end = function (data) {
|
@@ -310,16 +300,18 @@ function createServerAdapter(serverAdapterBaseObject, options) {
|
|
310
300
|
handleEvent,
|
311
301
|
handleUWS,
|
312
302
|
handle: genericRequestHandler,
|
313
|
-
disposableStack
|
303
|
+
get disposableStack() {
|
304
|
+
return ensureDisposableStack();
|
305
|
+
},
|
314
306
|
[DisposableSymbols.asyncDispose]() {
|
315
|
-
if (!
|
316
|
-
return
|
307
|
+
if (_disposableStack && !_disposableStack.disposed) {
|
308
|
+
return _disposableStack.disposeAsync();
|
317
309
|
}
|
318
310
|
return fakePromise(undefined);
|
319
311
|
},
|
320
312
|
dispose() {
|
321
|
-
if (!
|
322
|
-
return
|
313
|
+
if (_disposableStack && !_disposableStack.disposed) {
|
314
|
+
return _disposableStack.disposeAsync();
|
323
315
|
}
|
324
316
|
return fakePromise(undefined);
|
325
317
|
},
|
package/esm/utils.js
CHANGED
@@ -524,7 +524,7 @@ export function handleResponseDecompression(response, fetchAPI) {
|
|
524
524
|
}
|
525
525
|
return decompressedResponse;
|
526
526
|
}
|
527
|
-
const terminateEvents = ['SIGINT', '
|
527
|
+
const terminateEvents = ['SIGINT', 'exit'];
|
528
528
|
const disposableStacks = new Set();
|
529
529
|
let eventListenerRegistered = false;
|
530
530
|
function ensureEventListenerForDisposableStacks() {
|
package/package.json
CHANGED