if (native) { function crash(error) { try { require('@electron/remote').getCurrentWindow().hide(); } catch (e) {} id = new Date().toISOString(); try { global.pkg = require('./package.json'); } catch (e) { console.warn(e); global.pkg = require('../package.json'); } report = "\n"; report += "Kartik Crash Report\n\nPlease send this to the developers so they can fix the problem and deploy a patch to all players.\n\nStack Trace:\n" error.stack.split("\n").forEach((line) => { report += " " + line + "\n"; }) report += "\n\nSystem Information:\n" report += " " + "Kartik"+require('@electron/remote').getCurrentWindow().channel + "(" + pkg.name + ") " +pkg.version + " [" + pkg.serial + "]\n"; report += " " + require('os').type() + " (" + require('os').version() + ", " + require('os').arch() +") version " + require('os').release() + "\n"; cores = require('os').cpus() if (cores.length > 1) { report += " " + cores.length + " processors"; } else { report += " " + cores.length + " processor"; } report += "\n\nKartik Components:\n"; Object.keys(process.versions).forEach((e) => { v = process.versions[e]; report += " " + e + "@" + v + "\n"; }) require('fs').writeFileSync(require('os').userInfo().homedir + "/.kartik/crashes/" + id + ".txt", report); if (error.message !== "Invalid display" && error.message !== "Out of memory") { fetch("https://kartik.hopto.org/telemetry/report/?report=" + btoa(report.replaceAll(require('os').userInfo().username, ""))) .then(() => { if (require('os').platform() === "win32") { require('child_process').execSync("runtime\\kartik-crash.bat"); } else if (require('os').platform() === "darwin") { require('child_process').execSync("./runtime/kartik-crash-mac.sh"); } else { require('child_process').execSync("./runtime/kartik-crash.sh"); } require('@electron/remote').getCurrentWindow().destroy(); window.close(); require('@electron/remote').getCurrentWindow().close(); }) .catch(() => { if (require('os').platform() === "win32") { require('child_process').execSync("runtime\\kartik-crash.bat"); } else if (require('os').platform() === "darwin") { require('child_process').execSync("./runtime/kartik-crash-mac.sh"); } else { require('child_process').execSync("./runtime/kartik-crash.sh"); } require('@electron/remote').getCurrentWindow().destroy(); window.close(); require('@electron/remote').getCurrentWindow().close(); }) } else { if (require('os').platform() === "win32") { require('child_process').execSync("runtime\\kartik-crash.bat"); } else if (require('os').platform() === "darwin") { require('child_process').execSync("./runtime/kartik-crash-mac.sh"); } else { require('child_process').execSync("./runtime/kartik-crash.sh"); } require('@electron/remote').getCurrentWindow().destroy(); window.close(); require('@electron/remote').getCurrentWindow().close(); } } window.onerror = (_a, _b, _c, _d, error) => { if (typeof error != "undefined") { crash(error); } else { error("CrashManager", "An exception was thrown without details about it"); crash(new Error("Unknown error")); } } process.on('uncaughtException', (error) => { if (typeof error != "undefined") { crash(error); } else { error("CrashManager", "An exception was thrown without details about it"); crash(new Error("Unknown error")); } }) /*setInterval(() => { try { if (document.body.clientWidth >= (screen.width - 50) || document.body.clientHeight >= (screen.height - 50) || require('@electron/remote').getCurrentWindow().pwidth >= (screen.width - 50) || require('@electron/remote').getCurrentWindow().pheight >= (screen.height - 50) || require('@electron/remote').getCurrentWindow().scale < 0.9) { if (!location.href.includes("credits.html")) { error("CrashManager", "Invalid display, crashing"); crash(new Error("Invalid display")); // TODO: Instead reset the size and restart } } } catch (e) {} }, 2000)*/ }