{"version":3,"file":"serverTermination.cjs","sources":["../../../../../packages/engine-http/src/utils/serverTermination.ts"],"sourcesContent":["import cluster from 'node:cluster'\nimport { Logger } from '@contember/logger'\n\nconst signals = {\n\tSIGHUP: 1,\n\tSIGINT: 2,\n\tSIGTERM: 15,\n}\nexport type TerminationJob = (args: { signal: keyof typeof signals; code: number }) => Promise<void>\nexport const listenOnProcessTermination = (jobs: TerminationJob[], logger: Logger) => {\n\tfor (const [signal, code] of Object.entries(signals)) {\n\t\tprocess.on(signal, async () => {\n\t\t\tlogger.info(`Process ${process.pid} received a ${signal} signal, executing ${jobs.length} termination jobs`)\n\t\t\tawait Promise.allSettled(jobs.map(it => it({ signal: signal as keyof typeof signals, code })))\n\t\t\tlogger.info(cluster.isMaster ? `All terminated, exiting` : 'All terminated, exiting a worker')\n\t\t\tprocess.exit(128 + code)\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;;AAGA,MAAM,UAAU;AAAA,EACf,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AACV;AAEa,MAAA,6BAA6B,CAAC,MAAwB,WAAmB;AACrF,aAAW,CAAC,QAAQ,IAAI,KAAK,OAAO,QAAQ,OAAO,GAAG;AAC7C,YAAA,GAAG,QAAQ,YAAY;AACvB,aAAA,KAAK,WAAW,QAAQ,GAAG,eAAe,MAAM,sBAAsB,KAAK,MAAM,mBAAmB;AACrG,YAAA,QAAQ,WAAW,KAAK,IAAI,CAAA,OAAM,GAAG,EAAE,QAAwC,KAAA,CAAM,CAAC,CAAC;AAC7F,aAAO,KAAK,QAAQ,WAAW,4BAA4B,kCAAkC;AACrF,cAAA,KAAK,MAAM,IAAI;AAAA,IAAA,CACvB;AAAA,EAAA;AAEH;;"}