mirror of
https://github.com/electron/electron.git
synced 2026-01-09 15:38:08 -05:00
perf: lazily load some modules in sandbox mode (#23856)
This commit is contained in:
@@ -43,13 +43,16 @@ process.isRemoteModuleEnabled = isRemoteModuleEnabled;
|
||||
// The electron module depends on process.electronBinding
|
||||
const electron = require('electron');
|
||||
|
||||
const loadedModules = new Map([
|
||||
const loadedModules = new Map<string, any>([
|
||||
['electron', electron],
|
||||
['electron/common', electron],
|
||||
['electron/renderer', electron],
|
||||
['events', events],
|
||||
['timers', require('timers')],
|
||||
['url', require('url')]
|
||||
['events', events]
|
||||
]);
|
||||
|
||||
const loadableModules = new Map<string, Function>([
|
||||
['timers', () => require('timers')],
|
||||
['url', () => require('url')]
|
||||
]);
|
||||
|
||||
// ElectronApiServiceImpl will look for the "ipcNative" hidden object when
|
||||
@@ -109,6 +112,11 @@ function preloadRequire (module: string) {
|
||||
if (loadedModules.has(module)) {
|
||||
return loadedModules.get(module);
|
||||
}
|
||||
if (loadableModules.has(module)) {
|
||||
const loadedModule = loadableModules.get(module)!();
|
||||
loadedModules.set(module, loadedModule);
|
||||
return loadedModule;
|
||||
}
|
||||
throw new Error(`module not found: ${module}`);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user