diff --git a/src/server/util.tsx b/src/server/util.tsx new file mode 100644 index 0000000..c9e8bc3 --- /dev/null +++ b/src/server/util.tsx @@ -0,0 +1,38 @@ +export const onExit = (cb: () => void) => { + /* + const origCb = cb; + cb = () => { + origCb(); + console.log("finished"); + }; + */ + const cbAndExit = () => { + cb(); + process.exit(); + }; + + const exitSignals = [ + "SIGINT", + "SIGTERM", + "uncaughtException", + "SIGUSR1", + "SIGUSR2", + ]; + const cbSignals = ["beforeExit"]; + + for (const signal of exitSignals) { + process.on(signal, cbAndExit); + } + for (const signal of cbSignals) { + process.on(signal, cb); + } + + return () => { + for (const signal of exitSignals) { + process.off(signal, cbAndExit); + } + for (const signal of cbSignals) { + process.off(signal, cb); + } + }; +};