@naturalcycles/nodejs-lib
Version:
Standard library for Node.js
47 lines • 1.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const __1 = require("..");
/**
* Use it in your top-level scripts like this:
*
* runScript(async () => {
* await lalala()
* // my script goes on....
* })
*
* Advantages:
* - Works kind of like top-level await
* - No need to add `void`
* - No need to add `.then(() => process.exit()` (e.g to close DB connections)
* - No need to add `.catch(err => { console.error(err); process.exit(1) })`
*/
function runScript(fn, opt = {}) {
process.on('uncaughtException', err => {
console.error('uncaughtException', err);
});
process.on('unhandledRejection', err => {
console.error('unhandledRejection', err);
});
const { memoryInterval } = opt;
if (memoryInterval) {
setInterval(logMemory, memoryInterval);
}
void (async () => {
try {
await fn();
setImmediate(() => process.exit(0));
}
catch (err) {
console.error(err);
process.exit(1);
}
})();
}
exports.runScript = runScript;
function logMemory() {
const { heapUsed } = process.memoryUsage();
console.log({
heapUsed: __1.mb(heapUsed),
});
}
//# sourceMappingURL=script.util.js.map