Skip to content

Commit 6c38e48

Browse files
committed
Use native AbortSignal helpers
1 parent 5185f38 commit 6c38e48

2 files changed

Lines changed: 5 additions & 48 deletions

File tree

packages/tools/src/abort.ts

Lines changed: 3 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,12 @@
1-
const createAbortError = () =>
2-
new DOMException('The operation was aborted', 'AbortError');
3-
41
export const getTimeoutSignal = (timeout: number): AbortSignal => {
5-
const controller = new AbortController();
6-
const timeoutId = setTimeout(() => controller.abort(createAbortError()), timeout);
7-
timeoutId.unref?.();
8-
9-
controller.signal.addEventListener(
10-
'abort',
11-
() => {
12-
clearTimeout(timeoutId);
13-
},
14-
{ once: true }
15-
);
16-
17-
return controller.signal;
2+
return AbortSignal.timeout(timeout);
183
};
194

205
export const raceAbortSignals = (signals: AbortSignal[]): AbortSignal => {
21-
const controller = new AbortController();
22-
236
if (signals.length === 0) {
24-
return controller.signal;
25-
}
26-
27-
const cleanupCallbacks: Array<() => void> = [];
28-
29-
const cleanup = () => {
30-
while (cleanupCallbacks.length > 0) {
31-
cleanupCallbacks.pop()?.();
32-
}
33-
};
34-
35-
const abortWithSignal = (signal: AbortSignal) => {
36-
cleanup();
37-
controller.abort(signal.reason ?? createAbortError());
38-
};
39-
40-
for (const signal of signals) {
41-
if (signal.aborted) {
42-
abortWithSignal(signal);
43-
return controller.signal;
44-
}
45-
46-
const onAbort = () => abortWithSignal(signal);
47-
signal.addEventListener('abort', onAbort, { once: true });
48-
cleanupCallbacks.push(() => signal.removeEventListener('abort', onAbort));
7+
return new AbortController().signal;
498
}
50-
51-
controller.signal.addEventListener('abort', cleanup, { once: true });
52-
53-
return controller.signal;
9+
return AbortSignal.any(signals);
5410
};
5511

5612
export const withAbortTimeout = (

packages/tools/tsconfig.lib.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
"tsBuildInfoFile": "dist/tsconfig.lib.tsbuildinfo",
88
"emitDeclarationOnly": false,
99
"forceConsistentCasingInFileNames": true,
10-
"types": ["node"]
10+
"types": ["node"],
11+
"lib": ["DOM", "ES2022"]
1112
},
1213
"include": ["src/**/*.ts"],
1314
"references": []

0 commit comments

Comments
 (0)