UNPKG

@ceramicnetwork/core

Version:

Typescript implementation of the Ceramic protocol

34 lines 885 B
import { Subject } from 'rxjs'; export class ShutdownSignal { constructor() { this.subject = new Subject(); this.shuttingDown = false; } get observers() { return this.subject.observers; } abort() { this.subject.complete(); this.shuttingDown = true; } isShuttingDown() { return this.shuttingDown; } abortable(fn) { const controller = new AbortController(); const onAbort = () => { controller.abort(); }; const subscription = this.subject.subscribe({ complete: () => { onAbort(); }, }); if (this.subject.isStopped) controller.abort(); return fn(controller.signal).finally(() => { subscription.unsubscribe(); }); } } //# sourceMappingURL=shutdown-signal.js.map