Ctrl K
ComunidadGuías…

scripts/termination-signals.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
// Signal handling is platform-dependent, so listeners are best-effort. The
// caller's normal promise cleanup remains the primary cleanup path.
const forEachTerminationSignal = (
  action: (signal: Deno.Signal) => void,
): void => {
  for (const signal of ["SIGINT", "SIGTERM"] as Deno.Signal[]) {
    try {
      action(signal);
    } catch {
      // The signal may not exist on this platform.
    }
  }
};

const terminationSignalListeners =
  (method: "addSignalListener" | "removeSignalListener") =>
  (handler: () => void): void =>
    forEachTerminationSignal((signal) => Deno[method](signal, handler));

/** Register `handler` for SIGINT and SIGTERM. */
export const onTerminationSignals: (handler: () => void) => void =
  terminationSignalListeners("addSignalListener");

/** Unregister a `handler` previously passed to `onTerminationSignals`. */
export const offTerminationSignals: (handler: () => void) => void =
  terminationSignalListeners("removeSignalListener");