From b606e2b0e45d9636407105ee85145270e4f1f4b8 Mon Sep 17 00:00:00 2001 From: Ruthenic Date: Tue, 3 May 2022 20:39:03 -0400 Subject: [PATCH] actually do some work on discord_native --- package.json | 1 + pnpm-lock.yaml | 6 +++++ src/index.js | 13 ++++++----- .../discord_desktop_core/.pnpm-debug.log | 13 +++++++---- .../discord_native/index.js | 22 ++++++++++++------- .../discord_native/renderer/index.js | 17 ++++++++++++++ .../discord_desktop_core/mainWindow.js | 1 + src/modules/discord_desktop_core/preload.js | 12 +++++----- 8 files changed, 62 insertions(+), 23 deletions(-) create mode 100644 src/modules/discord_desktop_core/discord_native/renderer/index.js diff --git a/package.json b/package.json index 51059da..9887b87 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "cli-truncate": "^3.1.0", "electron-context-menu": "^3.1.1", "electron-dl": "^3.3.0", + "electron-dynamic-preload": "^0.3.0", "electron-is-dev": "^2.0.0", "electron-squirrel-startup": "^1.0.0", "escape-goat": "^4.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6e64422..3590783 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,6 +10,7 @@ specifiers: electron: ^14.0.0 electron-context-menu: ^3.1.1 electron-dl: ^3.3.0 + electron-dynamic-preload: ^0.3.0 electron-is-dev: ^2.0.0 electron-squirrel-startup: ^1.0.0 escape-goat: ^4.0.0 @@ -28,6 +29,7 @@ dependencies: cli-truncate: 3.1.0 electron-context-menu: 3.1.1 electron-dl: 3.3.0 + electron-dynamic-preload: 0.3.0 electron-is-dev: 2.0.0 electron-squirrel-startup: 1.0.0 escape-goat: 4.0.0 @@ -1162,6 +1164,10 @@ packages: unused-filename: 2.1.0 dev: false + /electron-dynamic-preload/0.3.0: + resolution: {integrity: sha1-Tov6sb5Voa9ctI3pKYTMKvRviwA=} + dev: false + /electron-installer-common/0.10.3: resolution: {integrity: sha512-mYbP+6i+nHMIm0WZHXgGdmmXMe+KXncl6jZYQNcCF9C1WsNA9C5SZ2VP4TLQMSIoFO+X4ugkMEA5uld1bmyEvA==} engines: {node: '>= 10.0.0'} diff --git a/src/index.js b/src/index.js index 9ca4cb1..325fb39 100644 --- a/src/index.js +++ b/src/index.js @@ -6,18 +6,21 @@ const Modules = require("./modules") let loader = Init.bootstrap() //TODO: actually do things with the loader -let options = loader.getOptions() +let options = loader.getOptions() + { + Modules +} loader.destroySplash() -global.DiscordNative = { +/*global.DiscordNative = { nativeModules: { - ensureModule: (name) => {return true /* TODO: ensure stuff */}, + ensureModule: (name) => {return true /* TODO: ensure stuff * /}, requireModule: (name) => {if (Modules[name]) return Modules[name]; else throw `Error: Cannot find module '${name}'`;} } -} +}*/ -const ddc = DiscordNative.nativeModules.requireModule("discord_desktop_core") +//const ddc = DiscordNative.nativeModules.requireModule("discord_desktop_core") +const ddc = Modules["discord_desktop_core"] ddc.startup({ options diff --git a/src/modules/discord_desktop_core/.pnpm-debug.log b/src/modules/discord_desktop_core/.pnpm-debug.log index b71e946..9b4a742 100644 --- a/src/modules/discord_desktop_core/.pnpm-debug.log +++ b/src/modules/discord_desktop_core/.pnpm-debug.log @@ -3,12 +3,17 @@ "selected": 1 }, "1 error pnpm": { - "code": "ERR_PNPM_NO_SCRIPT", + "errno": 1, + "code": "ELIFECYCLE", + "pkgid": "drakecord@1.0.0", + "stage": "make", + "script": "electron-forge make", + "pkgname": "drakecord", "err": { "name": "pnpm", - "message": "Missing script: build", - "code": "ERR_PNPM_NO_SCRIPT", - "stack": "pnpm: Missing script: build\n at Object.handler (/usr/lib/node_modules/pnpm/dist/pnpm.cjs:178500:15)\n at async /usr/lib/node_modules/pnpm/dist/pnpm.cjs:182688:21\n at async run (/usr/lib/node_modules/pnpm/dist/pnpm.cjs:182662:34)\n at async runPnpm (/usr/lib/node_modules/pnpm/dist/pnpm.cjs:182874:5)\n at async /usr/lib/node_modules/pnpm/dist/pnpm.cjs:182866:7" + "message": "drakecord@1.0.0 make: `electron-forge make`\nExit status 1", + "code": "ELIFECYCLE", + "stack": "pnpm: drakecord@1.0.0 make: `electron-forge make`\nExit status 1\n at EventEmitter. (/usr/lib/node_modules/pnpm/dist/pnpm.cjs:103873:20)\n at EventEmitter.emit (node:events:527:28)\n at ChildProcess. (/usr/lib/node_modules/pnpm/dist/pnpm.cjs:91802:18)\n at ChildProcess.emit (node:events:527:28)\n at maybeClose (node:internal/child_process:1090:16)\n at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5)" } } } \ No newline at end of file diff --git a/src/modules/discord_desktop_core/discord_native/index.js b/src/modules/discord_desktop_core/discord_native/index.js index bdeea60..1c1db95 100644 --- a/src/modules/discord_desktop_core/discord_native/index.js +++ b/src/modules/discord_desktop_core/discord_native/index.js @@ -1,20 +1,18 @@ const process = require("process") -//const Modules = require("../../index.js") +const app = require("./renderer") -const { - app -} = require("renderer") +//const Modules = global.opts.Modules const env = process.env - let DiscordNative = { app, + remoteApp: app, isRenderer: true, - /*nativeModules: { - ensureModule: (name) => {return true /* TODO: ensure stuff \*\/}, + nativeModules: { + ensureModule: (name) => {return !!Modules[name]}, requireModule: (name) => {if (Modules[name]) return Modules[name]; else throw `Error: Cannot find module '${name}'`;} - },*/ + }, 'process': { platform: process.platform, arch: process.arch, @@ -25,6 +23,14 @@ let DiscordNative = { PROGRAMW6432: env['PROGRAMW6432'], PROGRAMDATA: env['PROGRAMDATA'] } + }, + 'os': { + arch: process.arch, + release: '5.17.4-artix1-1' + }, + 'crashReporter': { + updateCrashReporter: async () => {return new Promise()}, + getMetadata: () => ({}) } } diff --git a/src/modules/discord_desktop_core/discord_native/renderer/index.js b/src/modules/discord_desktop_core/discord_native/renderer/index.js new file mode 100644 index 0000000..a624954 --- /dev/null +++ b/src/modules/discord_desktop_core/discord_native/renderer/index.js @@ -0,0 +1,17 @@ +function getVersion() { + return '0.0.17' +} + +function getReleaseChannel() { + return 'stable' +} + +async function getPath(path) { + return Promise.reject("stubbed out") +} + +module.exports = { + getVersion, + getReleaseChannel, + getPath +} diff --git a/src/modules/discord_desktop_core/mainWindow.js b/src/modules/discord_desktop_core/mainWindow.js index d43308b..7915527 100644 --- a/src/modules/discord_desktop_core/mainWindow.js +++ b/src/modules/discord_desktop_core/mainWindow.js @@ -24,6 +24,7 @@ function createWindow(options) { delete responseHeaders['content-security-policy']; //CSP, die in a pit. done({responseHeaders}) }) + window.opts = options return win } diff --git a/src/modules/discord_desktop_core/preload.js b/src/modules/discord_desktop_core/preload.js index 8fedb5b..6a1ac33 100644 --- a/src/modules/discord_desktop_core/preload.js +++ b/src/modules/discord_desktop_core/preload.js @@ -1,8 +1,8 @@ -const { contextBridge } = require('electron') +function preload(opts) { + const DiscordNative = require("./discord_native") -const DiscordNative = require("./discord_native") - -contextBridge.exposeInMainWorld( - 'DiscordNative', DiscordNative -) + window.Modules = opts.Modules + window.DiscordNative = DiscordNative +} +preload({Modules: {discord_utils: {}}})