"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleCtrlC = exports.registerCleanupJob = exports.cleanupBeforeQuit = void 0; const log_1 = require("./log"); const cleanupJobs = []; const cleanupBeforeQuit = ({ indent, logLevel, }) => { log_1.Log.verbose({ indent, logLevel }, 'Cleaning up...'); const time = Date.now(); for (const job of cleanupJobs) { job.job(); log_1.Log.verbose({ indent, logLevel }, `Cleanup job "${job.label}" done`); } log_1.Log.verbose({ indent, logLevel }, `Cleanup done in ${Date.now() - time}ms`); }; exports.cleanupBeforeQuit = cleanupBeforeQuit; const registerCleanupJob = (label, job) => { cleanupJobs.push({ job, label }); }; exports.registerCleanupJob = registerCleanupJob; const handleCtrlC = ({ indent, logLevel, }) => { process.on('SIGINT', () => { log_1.Log.info({ indent: false, logLevel }); (0, exports.cleanupBeforeQuit)({ indent, logLevel }); process.exit(0); }); }; exports.handleCtrlC = handleCtrlC;