refactor: type-safe imports in lib/node/init.ts (#41148)

This commit is contained in:
Milan Burda 2024-01-31 00:38:56 +01:00 committed by GitHub
parent 0e0a0bf724
commit fb88375ab4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -3,14 +3,14 @@ import { wrapFsWithAsar } from './asar-fs-wrapper';
wrapFsWithAsar(require('fs')); wrapFsWithAsar(require('fs'));
// Hook child_process.fork. // Hook child_process.fork.
const cp = require('child_process'); import cp = require('child_process'); // eslint-disable-line import/first
const originalFork = cp.fork; const originalFork = cp.fork;
cp.fork = (modulePath: string, args: any, options: any) => { cp.fork = (modulePath, args?, options?: cp.ForkOptions) => {
// Parse optional args. // Parse optional args.
if (args == null) { if (args == null) {
args = []; args = [];
} else if (typeof args === 'object' && !Array.isArray(args)) { } else if (typeof args === 'object' && !Array.isArray(args)) {
options = args; options = args as cp.ForkOptions;
args = []; args = [];
} }
// Fallback to original fork to report arg type errors. // Fallback to original fork to report arg type errors.
@ -22,7 +22,7 @@ cp.fork = (modulePath: string, args: any, options: any) => {
// the electron binary run like upstream Node.js. // the electron binary run like upstream Node.js.
options = options ?? {}; options = options ?? {};
options.env = Object.create(options.env || process.env); options.env = Object.create(options.env || process.env);
options.env.ELECTRON_RUN_AS_NODE = 1; options.env!.ELECTRON_RUN_AS_NODE = '1';
// On mac the child script runs in helper executable. // On mac the child script runs in helper executable.
if (!options.execPath && process.platform === 'darwin') { if (!options.execPath && process.platform === 'darwin') {
options.execPath = process.helperExecPath; options.execPath = process.helperExecPath;
@ -31,11 +31,11 @@ cp.fork = (modulePath: string, args: any, options: any) => {
}; };
// Prevent Node from adding paths outside this app to search paths. // Prevent Node from adding paths outside this app to search paths.
const path = require('path'); import path = require('path'); // eslint-disable-line import/first
const Module = require('module') as NodeJS.ModuleInternal; const Module = require('module') as NodeJS.ModuleInternal;
const resourcesPathWithTrailingSlash = process.resourcesPath + path.sep; const resourcesPathWithTrailingSlash = process.resourcesPath + path.sep;
const originalNodeModulePaths = Module._nodeModulePaths; const originalNodeModulePaths = Module._nodeModulePaths;
Module._nodeModulePaths = function (from: string) { Module._nodeModulePaths = function (from) {
const paths: string[] = originalNodeModulePaths(from); const paths: string[] = originalNodeModulePaths(from);
const fromPath = path.resolve(from) + path.sep; const fromPath = path.resolve(from) + path.sep;
// If "from" is outside the app then we do nothing. // If "from" is outside the app then we do nothing.