@blyou/abort-controller
v1.0.2
Published
WHATWG DOM Standard compliant AbortController and AbortSignal with zero dependencies.
Maintainers
Readme
abort-controller
A WHATWG DOM Standard compliant implementation of AbortController and AbortSignal, written in TypeScript with zero runtime dependencies.
Because the project's TypeScript target is es2023 (no DOM lib), this package also ships a minimal, self-contained EventTarget, Event, and DOMException so it runs correctly in any JavaScript environment — Node, browsers, workers, or edge runtimes.
Features
AbortControllerwithsignalandabort(reason?)AbortSignalwithaborted,reason,throwIfAborted(), and theonabortevent handlerAbortSignal.abort(reason?)— a pre-aborted signalAbortSignal.timeout(milliseconds)— a signal that aborts after a delayAbortSignal.any(signals)— a signal that aborts when any of the given signals aborts (transitively)- Correct propagation of abort through dependent signals
EventTarget/Eventsemantics:addEventListener/removeEventListener/dispatchEvent, including theonce,signal, andcaptureoptions
Installation
npm install @blyou/abort-controllerUsage
import { AbortController, AbortSignal } from '@blyou/abort-controller'
const controller = new AbortController()
controller.signal.addEventListener('abort', () => {
console.log('aborted:', controller.signal.reason)
})
controller.abort(new Error('cancelled'))
// → aborted: Error: cancelledAbortSignal.timeout
const signal = AbortSignal.timeout(1000)
signal.addEventListener('abort', () => {
console.log(signal.reason.name) // "TimeoutError"
})AbortSignal.any
const a = new AbortController()
const b = new AbortController()
const signal = AbortSignal.any([a.signal, b.signal])
b.abort() // signal aborts because ANY source abortedAbortSignal.abort
const signal = AbortSignal.abort() // already aborted, reason is an "AbortError"Development
npm install # install dependencies
npm run test # run the unit tests (vitest)
npm run typecheck # type-check with tsc --noEmit
npm run lint # lint with eslint
npm run build # build the library with tsdownSpecification
This implementation follows the WHATWG DOM Standard — AbortController and AbortSignal interfaces.
