123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- // Initialize ASAR support in fs module.
- import { wrapFsWithAsar } from './asar-fs-wrapper';
- wrapFsWithAsar(require('fs'));
- // See ElectronRendererClient::DidCreateScriptContext.
- if ((globalThis as any).blinkfetch) {
- const keys = ['fetch', 'Response', 'FormData', 'Request', 'Headers'];
- for (const key of keys) {
- (globalThis as any)[key] = (globalThis as any)[`blink${key}`];
- }
- }
- // Hook child_process.fork.
- import cp = require('child_process'); // eslint-disable-line import/first
- const originalFork = cp.fork;
- cp.fork = (modulePath, args?, options?: cp.ForkOptions) => {
- // Parse optional args.
- if (args == null) {
- args = [];
- } else if (typeof args === 'object' && !Array.isArray(args)) {
- options = args as cp.ForkOptions;
- args = [];
- }
- // Fallback to original fork to report arg type errors.
- if (typeof modulePath !== 'string' || !Array.isArray(args) ||
- (typeof options !== 'object' && typeof options !== 'undefined')) {
- return originalFork(modulePath, args, options);
- }
- // When forking a child script, we setup a special environment to make
- // the electron binary run like upstream Node.js.
- options = options ?? {};
- options.env = Object.create(options.env || process.env);
- options.env!.ELECTRON_RUN_AS_NODE = '1';
- // On mac the child script runs in helper executable.
- if (!options.execPath && process.platform === 'darwin') {
- options.execPath = process.helperExecPath;
- }
- return originalFork(modulePath, args, options);
- };
- // Prevent Node from adding paths outside this app to search paths.
- import path = require('path'); // eslint-disable-line import/first
- const Module = require('module') as NodeJS.ModuleInternal;
- const resourcesPathWithTrailingSlash = process.resourcesPath + path.sep;
- const originalNodeModulePaths = Module._nodeModulePaths;
- Module._nodeModulePaths = function (from) {
- const paths: string[] = originalNodeModulePaths(from);
- const fromPath = path.resolve(from) + path.sep;
- // If "from" is outside the app then we do nothing.
- if (fromPath.startsWith(resourcesPathWithTrailingSlash)) {
- return paths.filter(function (candidate) {
- return candidate.startsWith(resourcesPathWithTrailingSlash);
- });
- } else {
- return paths;
- }
- };
|