@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.
@@ -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-rc-20241125184425-a8fccc28b169011604dfa3149cf1c7a317b1f279",
4
4
  "description": "Fetch API compliant HTTP Server adapter",
5
5
  "sideEffects": false,
6
6
  "dependencies": {