 bc527f6b51
			
		
	
	
	
	
	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()
 | |
|   }
 | |
| }
 |