Files
v10/dist/dev/core/abort-controller-registry.js
T

32 lines
996 B
JavaScript

import { anyAbortSignal } from "@videojs/utils/events";
//#region src/core/abort-controller-registry.ts
var AbortControllerRegistry = class {
#base = new AbortController();
#keys = /* @__PURE__ */ new Map();
/** The attach-scoped signal. Aborts on detach or reattach. */
get base() {
return this.#base.signal;
}
/** Clears all keyed signals, leaving base intact. */
clear() {
for (const controller of this.#keys.values()) controller.abort();
this.#keys.clear();
}
/** Resets base and clears all keyed signals. */
reset() {
this.clear();
this.#base.abort();
this.#base = new AbortController();
}
/** Creates a new signal for the key, superseding any previous signal. */
supersede(key) {
this.#keys.get(key)?.abort();
const controller = new AbortController();
this.#keys.set(key, controller);
return anyAbortSignal([this.#base.signal, controller.signal]);
}
};
//#endregion
export { AbortControllerRegistry };
//# sourceMappingURL=abort-controller-registry.js.map