bc527f6b51
* refactor: bundle the browser and renderer process electron code * Bundles browser/init and renderer/init * Improves load performance of main process by ~40% * Improves load performance of renderer process by ~30% * Prevents users from importing our "requiring" our internal logic such as ipc-main-internal. This makes those message buses safer as they are less accessible, there is still some more work to be done though to lock down those buses completely. * The electron.asar file now only contains 2 files, as a future improvement maybe we can use atom_natives to ship these two files embedded in the binary * This also removes our dependency on browserify which had some strange edge cases that caused us to have to hack around require-order and stopped us using certain ES6/7 features we should have been able to use (async / await in some files in the sandboxed renderer init script) TLDR: Things are faster and better :) * fix: I really do not want to talk about it * chore: add performance improvements from debugging * fix: resolve the provided path so webpack thinks it is absolute * chore: fixup per PR review * fix: use webpacks ProvidePlugin to keep global, process and Buffer alive after deletion from global scope for use in internal code * fix: bundle worker/init as well to make node-in-workers work * chore: update wording as per feedback * chore: make the timers hack work when yarn is not used
47 lines
1.1 KiB
JavaScript
47 lines
1.1 KiB
JavaScript
'use strict'
|
|
|
|
const { app } = require('electron')
|
|
const cp = require('child_process')
|
|
const path = require('path')
|
|
|
|
const getTempDirectory = function () {
|
|
try {
|
|
return app.getPath('temp')
|
|
} catch {
|
|
// Delibrately laze-load the os module, this file is on the hot
|
|
// path when booting Electron and os takes between 5 - 8ms to load and we do not need it yet
|
|
return require('os').tmpdir()
|
|
}
|
|
}
|
|
|
|
exports.crashReporterInit = function (options) {
|
|
const productName = options.productName || app.name
|
|
const crashesDirectory = path.join(getTempDirectory(), `${productName} Crashes`)
|
|
let crashServicePid
|
|
|
|
if (process.platform === 'win32') {
|
|
const env = {
|
|
ELECTRON_INTERNAL_CRASH_SERVICE: 1
|
|
}
|
|
const args = [
|
|
'--reporter-url=' + options.submitURL,
|
|
'--application-name=' + productName,
|
|
'--crashes-directory=' + crashesDirectory,
|
|
'--v=1'
|
|
]
|
|
|
|
const crashServiceProcess = cp.spawn(process.helperExecPath, args, {
|
|
env,
|
|
detached: true
|
|
})
|
|
|
|
crashServicePid = crashServiceProcess.pid
|
|
}
|
|
|
|
return {
|
|
productName,
|
|
crashesDirectory,
|
|
crashServicePid,
|
|
appVersion: app.getVersion()
|
|
}
|
|
}
|