@whatwg-node/server 0.9.58 → 0.9.59

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.
@@ -28,33 +28,24 @@ function createServerAdapter(serverAdapterBaseObject, options) {
28
28
  const onRequestHooks = [];
29
29
  const onResponseHooks = [];
30
30
  const waitUntilPromises = new Set();
31
- const disposableStack = new disposablestack_1.AsyncDisposableStack();
32
- const signals = new Set();
33
- function registerSignal(signal) {
34
- signals.add(signal);
35
- signal.addEventListener('abort', () => {
36
- signals.delete(signal);
37
- });
38
- }
39
- disposableStack.defer(() => {
40
- for (const signal of signals) {
41
- signal.sendAbort();
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
- disposableStack.defer(disposeFn);
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, registerSignal);
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 (!disposableStack.disposed) {
320
- return disposableStack.disposeAsync();
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 (!disposableStack.disposed) {
326
- return disposableStack.disposeAsync();
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', 'SIGTERM', 'exit'];
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
- const disposableStack = new AsyncDisposableStack();
28
- const signals = new Set();
29
- function registerSignal(signal) {
30
- signals.add(signal);
31
- signal.addEventListener('abort', () => {
32
- signals.delete(signal);
33
- });
34
- }
35
- disposableStack.defer(() => {
36
- for (const signal of signals) {
37
- signal.sendAbort();
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
- disposableStack.defer(disposeFn);
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, registerSignal);
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 (!disposableStack.disposed) {
316
- return disposableStack.disposeAsync();
307
+ if (_disposableStack && !_disposableStack.disposed) {
308
+ return _disposableStack.disposeAsync();
317
309
  }
318
310
  return fakePromise(undefined);
319
311
  },
320
312
  dispose() {
321
- if (!disposableStack.disposed) {
322
- return disposableStack.disposeAsync();
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', 'SIGTERM', 'exit'];
527
+ const terminateEvents = ['SIGINT', 'exit'];
528
528
  const disposableStacks = new Set();
529
529
  let eventListenerRegistered = false;
530
530
  function ensureEventListenerForDisposableStacks() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whatwg-node/server",
3
- "version": "0.9.58",
3
+ "version": "0.9.59",
4
4
  "description": "Fetch API compliant HTTP Server adapter",
5
5
  "sideEffects": false,
6
6
  "dependencies": {