Download packages/coding-agent/src/utils/abort.ts from SaylorTwift/pi: direct link, hf CLI and curl.
- Browser
- Download file 1.34 kB
-
https://huggingface.co/SaylorTwift/pi/resolve/main/packages/coding-agent/src/utils/abort.ts
- Command line
-
hf download hf://SaylorTwift/pi/packages/coding-agent/src/utils/abort.ts
-
curl -L -o abort.ts https://huggingface.co/SaylorTwift/pi/resolve/main/packages/coding-agent/src/utils/abort.ts
1.34 kB
| function abortReason(signal: AbortSignal): unknown { | |
| if (signal.reason !== undefined) return signal.reason; | |
| const error = new Error("The operation was aborted"); | |
| error.name = "AbortError"; | |
| return error; | |
| } | |
| /** Normalize an optional public signal without imposing a deadline. */ | |
| export function operationSignal(signal?: AbortSignal): AbortSignal { | |
| return signal ?? new AbortController().signal; | |
| } | |
| /** Stop waiting on abort while observing the abandoned operation through settlement. */ | |
| export function raceWithAbortSignal<T>(operation: Promise<T>, signal: AbortSignal | undefined): Promise<T> { | |
| if (!signal) return operation; | |
| if (signal.aborted) { | |
| void operation.catch(() => {}); | |
| return Promise.reject(abortReason(signal)); | |
| } | |
| return new Promise<T>((resolve, reject) => { | |
| let settled = false; | |
| const cleanup = () => signal.removeEventListener("abort", onAbort); | |
| const onAbort = () => { | |
| if (settled) return; | |
| settled = true; | |
| cleanup(); | |
| reject(abortReason(signal)); | |
| }; | |
| signal.addEventListener("abort", onAbort, { once: true }); | |
| void operation.then( | |
| (value) => { | |
| if (settled) return; | |
| settled = true; | |
| cleanup(); | |
| resolve(value); | |
| }, | |
| (error: unknown) => { | |
| if (settled) return; | |
| settled = true; | |
| cleanup(); | |
| reject(error); | |
| }, | |
| ); | |
| if (signal.aborted) onAbort(); | |
| }); | |
| } | |