monitor/core/boot/setupProcessHandlers.ts
2025-04-16 22:30:27 +07:00

38 lines
1.3 KiB
TypeScript

import { txDevEnv } from "@core/globalData";
import consoleFactory from "@lib/console";
const console = consoleFactory('ProcessHandlers');
export default function setupProcessHandlers() {
//Handle any stdio error
process.stdin.on('error', (data) => { });
process.stdout.on('error', (data) => { });
process.stderr.on('error', (data) => { });
//Handling warnings (ignoring some)
Error.stackTraceLimit = 25;
process.removeAllListeners('warning'); //FIXME: this causes errors in Bun
process.on('warning', (warning) => {
//totally ignoring the warning, we know this is bad and shouldn't happen
if (warning.name === 'UnhandledPromiseRejectionWarning') return;
if (warning.name !== 'ExperimentalWarning' || txDevEnv.ENABLED) {
console.verbose.dir(warning, { multilineError: true });
}
});
//Handle "the unexpected"
process.on('unhandledRejection', (err: Error) => {
//We are handling this inside the DiscordBot component
if (err.message === 'Used disallowed intents') return;
console.error('Ohh nooooo - unhandledRejection');
console.dir(err);
});
process.on('uncaughtException', function (err: Error) {
console.error('Ohh nooooo - uncaughtException');
console.error(err.message);
console.dir(err.stack);
});
}