1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- import '@electron/internal/sandboxed_renderer/pre-init';
- import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
- import type * as ipcRendererUtilsModule from '@electron/internal/renderer/ipc-renderer-internal-utils';
- import { createPreloadProcessObject, executeSandboxedPreloadScripts } from '@electron/internal/sandboxed_renderer/preload';
- import * as events from 'events';
- import { setImmediate, clearImmediate } from 'timers';
- declare const binding: {
- process: NodeJS.Process;
- createPreloadScript: (src: string) => Function
- };
- const ipcRendererUtils = require('@electron/internal/renderer/ipc-renderer-internal-utils') as typeof ipcRendererUtilsModule;
- const {
- preloadScripts,
- process: processProps
- } = ipcRendererUtils.invokeSync<{
- preloadScripts: ElectronInternal.PreloadScript[];
- process: NodeJS.Process;
- }>(IPC_MESSAGES.BROWSER_SANDBOX_LOAD);
- const electron = require('electron');
- const loadedModules = new Map<string, any>([
- ['electron', electron],
- ['electron/common', electron],
- ['electron/renderer', electron],
- ['events', events],
- ['node:events', events]
- ]);
- const loadableModules = new Map<string, Function>([
- ['timers', () => require('timers')],
- ['node:timers', () => require('timers')],
- ['url', () => require('url')],
- ['node:url', () => require('url')]
- ]);
- const preloadProcess = createPreloadProcessObject();
- // InvokeEmitProcessEvent in ElectronSandboxedRendererClient will look for this
- const v8Util = process._linkedBinding('electron_common_v8_util');
- v8Util.setHiddenValue(global, 'emit-process-event', (event: string) => {
- (process as events.EventEmitter).emit(event);
- (preloadProcess as events.EventEmitter).emit(event);
- });
- Object.assign(preloadProcess, binding.process);
- Object.assign(preloadProcess, processProps);
- Object.assign(process, processProps);
- // Common renderer initialization
- require('@electron/internal/renderer/common-init');
- executeSandboxedPreloadScripts({
- loadedModules,
- loadableModules,
- process: preloadProcess,
- createPreloadScript: binding.createPreloadScript,
- exposeGlobals: {
- Buffer,
- // FIXME(samuelmaddock): workaround webpack bug replacing this with just
- // `__webpack_require__.g,` which causes script error
- global: globalThis,
- setImmediate,
- clearImmediate
- }
- }, preloadScripts);
|