2021-03-06 09:30:16 +01:00
|
|
|
const Module = require("module");
|
|
|
|
const path = require("path");
|
|
|
|
const electron = require("electron");
|
2021-07-08 00:34:04 +02:00
|
|
|
const NodeEvents = require("events");
|
|
|
|
|
|
|
|
const cloneObject = function (target, newObject = {}, keys) {
|
|
|
|
if (!Array.isArray(keys)) keys = Object.keys(Object.getOwnPropertyDescriptors(target));
|
|
|
|
return keys.reduce((clone, key) => {
|
|
|
|
if (typeof(target[key]) === "object" && !Array.isArray(target[key]) && target[key] !== null && !(target[key] instanceof NodeEvents)) clone[key] = cloneObject(target[key], {});
|
|
|
|
else clone[key] = target[key];
|
|
|
|
|
|
|
|
return clone;
|
|
|
|
}, newObject);
|
|
|
|
};
|
2021-03-06 09:30:16 +01:00
|
|
|
|
|
|
|
/* global window:false */
|
|
|
|
|
|
|
|
// const context = electron.webFrame.top.context;
|
|
|
|
Object.defineProperty(window, "webpackJsonp", {
|
|
|
|
get: () => electron.webFrame.top.context.webpackJsonp
|
|
|
|
});
|
|
|
|
|
|
|
|
electron.webFrame.top.context.global = electron.webFrame.top.context;
|
|
|
|
electron.webFrame.top.context.require = require;
|
2021-04-03 21:56:46 +02:00
|
|
|
electron.webFrame.top.context.Buffer = Buffer;
|
2021-07-08 00:34:04 +02:00
|
|
|
|
2021-07-27 23:19:45 +02:00
|
|
|
if (process.platform === "darwin" && process.env.DISCORD_RELEASE_CHANNEL !== "canary") {
|
|
|
|
electron.webFrame.top.context.process = process;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
electron.webFrame.top.context.process = new class PatchedProcess extends NodeEvents {
|
|
|
|
get __ORIGINAL_PROCESS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED__() {return process;}
|
|
|
|
|
|
|
|
constructor() {
|
|
|
|
super();
|
|
|
|
|
|
|
|
Object.assign(this,
|
|
|
|
cloneObject(process, {}, Object.keys(NodeEvents.prototype)),
|
|
|
|
cloneObject(process, {})
|
|
|
|
);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
2021-03-06 09:30:16 +01:00
|
|
|
|
|
|
|
// Load Discord's original preload
|
|
|
|
const preload = process.env.DISCORD_PRELOAD;
|
|
|
|
if (preload) {
|
2021-04-03 21:56:46 +02:00
|
|
|
|
2021-03-06 09:30:16 +01:00
|
|
|
// Restore original preload for future windows
|
2021-07-08 00:34:04 +02:00
|
|
|
electron.ipcRenderer.send("bd-register-preload", preload);
|
2021-03-06 09:30:16 +01:00
|
|
|
// Run original preload
|
2021-03-18 22:50:47 +01:00
|
|
|
try {
|
|
|
|
const originalKill = process.kill;
|
|
|
|
process.kill = function() {};
|
|
|
|
require(preload);
|
|
|
|
process.kill = originalKill;
|
|
|
|
}
|
2021-03-06 09:30:16 +01:00
|
|
|
catch (e) {
|
|
|
|
// TODO bail out
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Module.globalPaths.push(path.resolve(process.env.DISCORD_APP_PATH, "..", "app.asar", "node_modules"));
|