UNPKG

@graphql-mesh/utils

Version:
37 lines (36 loc) 1.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.registerTerminateHandler = registerTerminateHandler; exports.getTerminateStack = getTerminateStack; const disposablestack_1 = require("@whatwg-node/disposablestack"); const terminateEvents = ['SIGINT', 'SIGTERM']; let eventListenerRegistered = false; const terminateHandlers = new Set(); function registerEventListener() { for (const eventName of terminateEvents) { globalThis.process?.once(eventName, () => { for (const handler of terminateHandlers) { handler(eventName); terminateHandlers.delete(handler); } }); } } function registerTerminateHandler(callback) { if (!eventListenerRegistered) { registerEventListener(); eventListenerRegistered = true; } terminateHandlers.add(callback); return () => { terminateHandlers.delete(callback); }; } let terminateStack; function getTerminateStack() { if (!terminateStack) { terminateStack = new disposablestack_1.AsyncDisposableStack(); registerTerminateHandler(() => terminateStack.disposeAsync()); } return terminateStack; }