mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-11 10:13:52 +01:00
a578763b89
Problem with throwing WorkerScript is that the termination signal object can pass through user code, which permits user to modify that object and all parts of the game state accessible through it.
25 lines
988 B
TypeScript
25 lines
988 B
TypeScript
import { ScriptDeath } from "./Netscript/ScriptDeath";
|
|
import { isScriptErrorMessage } from "./NetscriptEvaluator";
|
|
import { dialogBoxCreate } from "./ui/React/DialogBox";
|
|
|
|
export function setupUncaughtPromiseHandler(): void {
|
|
window.addEventListener("unhandledrejection", function (e) {
|
|
if (isScriptErrorMessage(e.reason)) {
|
|
const errorTextArray = e.reason.split("|DELIMITER|");
|
|
const hostname = errorTextArray[1];
|
|
const scriptName = errorTextArray[2];
|
|
const errorMsg = errorTextArray[3];
|
|
|
|
let msg = `UNCAUGHT PROMISE ERROR<br>You forgot to await a promise<br>${scriptName}@${hostname}<br>`;
|
|
msg += "<br>";
|
|
msg += errorMsg;
|
|
dialogBoxCreate(msg);
|
|
} else if (e.reason instanceof ScriptDeath) {
|
|
const msg =
|
|
`UNCAUGHT PROMISE ERROR<br>You forgot to await a promise<br>${e.reason.name}@${e.reason.hostname} (PID - ${e.reason.pid})<br>` +
|
|
`Maybe hack / grow / weaken ?`;
|
|
dialogBoxCreate(msg);
|
|
}
|
|
});
|
|
}
|