← Files Cecil-IA Labs FFmpegARCHIVED FILE

dist/core/cancellation.js

939 Bytes · Sep 30, 2026 · 23:17 UTC

↓ Download file

/**
 * Bridge process signals to AbortSignal for CLI entrypoints. Library callers
 * can instead pass their own AbortSignal directly to the runners.
 */
export function createProcessSignalController(options = {}) {
    const controller = new AbortController();
    const signals = options.signals ?? ["SIGINT", "SIGTERM"];
    const listeners = new Map();
    for (const signal of signals) {
        const listener = () => {
            if (!controller.signal.aborted) {
                controller.abort(new Error(`Received ${signal}`));
            }
        };
        listeners.set(signal, listener);
        process.once(signal, listener);
    }
    return {
        signal: controller.signal,
        dispose() {
            for (const [signal, listener] of listeners) {
                process.removeListener(signal, listener);
            }
            listeners.clear();
        },
    };
}
//# sourceMappingURL=cancellation.js.map

SHA-256: 9ec0f617b42a89fab6c616491f9cfb356c94ffca879784ec6d3f31e2e027a63c