@testring/child-process
Advanced tools
| import { IChildProcessForkOptions, IChildProcessFork } from '@testring/types'; | ||
| export declare function fork(filePath: string, args?: Array<string>, options?: Partial<IChildProcessForkOptions>): Promise<IChildProcessFork>; | ||
| //# sourceMappingURL=fork.d.ts.map |
| {"version":3,"file":"fork.d.ts","sourceRoot":"","sources":["../src/fork.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,wBAAwB,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AA+E5E,wBAAsB,IAAI,CACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,KAAK,CAAC,MAAM,CAAM,EACxB,OAAO,GAAE,OAAO,CAAC,wBAAwB,CAAM,GAChD,OAAO,CAAC,iBAAiB,CAAC,CAoC5B"} |
| export { spawn } from './spawn'; | ||
| export { spawnWithPipes } from './spawn-with-pipes'; | ||
| export { fork } from './fork'; | ||
| export { isChildProcess } from './utils'; | ||
| //# sourceMappingURL=index.d.ts.map |
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,cAAc,EAAC,MAAM,SAAS,CAAC"} |
| export declare function resolveBinary(name: string): string; | ||
| //# sourceMappingURL=resolve-binary.d.ts.map |
| {"version":3,"file":"resolve-binary.d.ts","sourceRoot":"","sources":["../src/resolve-binary.ts"],"names":[],"mappings":"AAmCA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAalD"} |
| import * as childProcess from 'child_process'; | ||
| export declare function spawnWithPipes(command: string, args?: Array<string>): childProcess.ChildProcess; | ||
| //# sourceMappingURL=spawn-with-pipes.d.ts.map |
| {"version":3,"file":"spawn-with-pipes.d.ts","sourceRoot":"","sources":["../src/spawn-with-pipes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAG9C,wBAAgB,cAAc,CAC1B,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,KAAK,CAAC,MAAM,CAAM,GACzB,YAAY,CAAC,YAAY,CAY3B"} |
| import * as childProcess from 'child_process'; | ||
| export declare function spawn(command: string, args?: Array<string>): childProcess.ChildProcess; | ||
| //# sourceMappingURL=spawn.d.ts.map |
| {"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../src/spawn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAG9C,wBAAgB,KAAK,CACjB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,KAAK,CAAC,MAAM,CAAM,GACzB,YAAY,CAAC,YAAY,CAM3B"} |
| export declare function isChildProcess(argv?: string[]): boolean; | ||
| //# sourceMappingURL=utils.d.ts.map |
| {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAUA,wBAAgB,cAAc,CAAC,IAAI,GAAE,MAAM,EAAgB,GAAG,OAAO,CAEpE"} |
| { | ||
| "extends": "./tsconfig.json", | ||
| "compilerOptions": { | ||
| "outDir": "dist", | ||
| "rootDir": "src", | ||
| "noEmit": false, | ||
| "composite": true | ||
| }, | ||
| "exclude": ["test"] | ||
| } |
+66
-47
| "use strict"; | ||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
| function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
| return new (P || (P = Promise))(function (resolve, reject) { | ||
| function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
| function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
| function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
| step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
| }); | ||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| var desc = Object.getOwnPropertyDescriptor(m, k); | ||
| if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
| desc = { enumerable: true, get: function() { return m[k]; } }; | ||
| } | ||
| Object.defineProperty(o, k2, desc); | ||
| }) : (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| o[k2] = m[k]; | ||
| })); | ||
| var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
| Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
| }) : function(o, v) { | ||
| o["default"] = v; | ||
| }); | ||
| var __importStar = (this && this.__importStar) || function (mod) { | ||
| if (mod && mod.__esModule) return mod; | ||
| var result = {}; | ||
| if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||
| __setModuleDefault(result, mod); | ||
| return result; | ||
| }; | ||
| var __importDefault = (this && this.__importDefault) || function (mod) { | ||
| return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.fork = fork; | ||
| const path = require("path"); | ||
| const process = require("process"); | ||
| const path = __importStar(require("path")); | ||
| const node_process_1 = __importDefault(require("node:process")); | ||
| const utils_1 = require("@testring/utils"); | ||
@@ -20,3 +37,3 @@ const resolve_binary_1 = require("./resolve-binary"); | ||
| const length = start - end; | ||
| return Array.from({ length }, (x, i) => i + start); | ||
| return Array.from({ length }, (_, i) => i + start); | ||
| } | ||
@@ -30,3 +47,3 @@ const PREFERRED_DEBUG_PORTS = [ | ||
| ]; | ||
| const IS_WIN = process.platform === 'win32'; | ||
| const IS_WIN = node_process_1.default.platform === 'win32'; | ||
| const EMPTY_PARAMETERS = []; | ||
@@ -58,3 +75,3 @@ const REQUIRE_TS_NODE = ['-r', 'ts-node/register']; | ||
| case '.js': | ||
| return process.execPath; | ||
| return node_process_1.default.execPath; | ||
| case '.ts': | ||
@@ -65,40 +82,42 @@ return (0, resolve_binary_1.resolveBinary)('ts-node'); | ||
| ? (0, resolve_binary_1.resolveBinary)('ts-node') | ||
| : process.execPath; | ||
| : node_process_1.default.execPath; | ||
| default: | ||
| return process.execPath; | ||
| return node_process_1.default.execPath; | ||
| } | ||
| } | ||
| const getForkOptions = (options) => (Object.assign(Object.assign({}, DEFAULT_FORK_OPTIONS), options)); | ||
| function fork(filePath_1) { | ||
| return __awaiter(this, arguments, void 0, function* (filePath, args = [], options = {}) { | ||
| const mergedOptions = getForkOptions(options); | ||
| const childArg = `--testring-parent-pid=${process.pid}`; | ||
| const processArgs = []; | ||
| let debugPort = null; | ||
| if (mergedOptions.debug) { | ||
| debugPort = yield (0, utils_1.getAvailablePort)(mergedOptions.debugPortRange); | ||
| processArgs.push(`--inspect-brk=${debugPort}`); | ||
| } | ||
| let childProcess; | ||
| if (IS_WIN) { | ||
| childProcess = (0, spawn_1.spawn)('node', [ | ||
| ...processArgs, | ||
| ...getAdditionalParameters(filePath), | ||
| filePath, | ||
| childArg, | ||
| ...args, | ||
| ]); | ||
| } | ||
| else { | ||
| childProcess = (0, spawn_1.spawn)(getExecutor(filePath), [ | ||
| ...processArgs, | ||
| filePath, | ||
| childArg, | ||
| ...args, | ||
| ]); | ||
| } | ||
| childProcess.debugPort = debugPort; | ||
| return childProcess; | ||
| }); | ||
| const getForkOptions = (options) => ({ | ||
| ...DEFAULT_FORK_OPTIONS, | ||
| ...options, | ||
| }); | ||
| async function fork(filePath, args = [], options = {}) { | ||
| const mergedOptions = getForkOptions(options); | ||
| const childArg = `--testring-parent-pid=${node_process_1.default.pid}`; | ||
| const processArgs = []; | ||
| let debugPort = null; | ||
| if (mergedOptions.debug) { | ||
| debugPort = await (0, utils_1.getAvailablePort)(mergedOptions.debugPortRange); | ||
| processArgs.push(`--inspect-brk=${debugPort}`); | ||
| } | ||
| let childProcess; | ||
| if (IS_WIN) { | ||
| childProcess = (0, spawn_1.spawn)('node', [ | ||
| ...processArgs, | ||
| ...getAdditionalParameters(filePath), | ||
| filePath, | ||
| childArg, | ||
| ...args, | ||
| ]); | ||
| } | ||
| else { | ||
| childProcess = (0, spawn_1.spawn)(getExecutor(filePath), [ | ||
| ...processArgs, | ||
| filePath, | ||
| childArg, | ||
| ...args, | ||
| ]); | ||
| } | ||
| const childProcessExtended = childProcess; | ||
| childProcessExtended.debugPort = debugPort; | ||
| return childProcessExtended; | ||
| } | ||
| //# sourceMappingURL=fork.js.map |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"fork.js","sourceRoot":"","sources":["../src/fork.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"fork.js","sourceRoot":"","sources":["../src/fork.ts"],"names":[],"mappings":"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"} |
| "use strict"; | ||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| var desc = Object.getOwnPropertyDescriptor(m, k); | ||
| if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
| desc = { enumerable: true, get: function() { return m[k]; } }; | ||
| } | ||
| Object.defineProperty(o, k2, desc); | ||
| }) : (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| o[k2] = m[k]; | ||
| })); | ||
| var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
| Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
| }) : function(o, v) { | ||
| o["default"] = v; | ||
| }); | ||
| var __importStar = (this && this.__importStar) || function (mod) { | ||
| if (mod && mod.__esModule) return mod; | ||
| var result = {}; | ||
| if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||
| __setModuleDefault(result, mod); | ||
| return result; | ||
| }; | ||
| var __importDefault = (this && this.__importDefault) || function (mod) { | ||
| return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.resolveBinary = resolveBinary; | ||
| const fs = require("fs"); | ||
| const path = require("path"); | ||
| const process = require("process"); | ||
| const IS_WIN = process.platform === 'win32'; | ||
| const fs = __importStar(require("fs")); | ||
| const path = __importStar(require("path")); | ||
| const node_process_1 = __importDefault(require("node:process")); | ||
| const IS_WIN = node_process_1.default.platform === 'win32'; | ||
| function findNodeModulesDir(modulePath) { | ||
@@ -9,0 +35,0 @@ if (modulePath === '/') { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"resolve-binary.js","sourceRoot":"","sources":["../src/resolve-binary.ts"],"names":[],"mappings":";;AAmCA,sCAaC;AAhDD,yBAAyB;AACzB,6BAA6B;AAC7B,mCAAmC;AAEnC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AAE5C,SAAS,kBAAkB,CAAC,UAAkB;IAC1C,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACtC,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,aAAa,CAAC,GAAG;IACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC;IACf,CAAC;IAED,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3B,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IACzB,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3E,CAAC;SAAM,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC;IACpD,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY;IACtC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,UAAU,GACZ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,cAAc,CACpB,WAAW,IAAI,uCAAuC,CACzD,CAAC;IACN,CAAC;IAED,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC"} | ||
| {"version":3,"file":"resolve-binary.js","sourceRoot":"","sources":["../src/resolve-binary.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,sCAaC;AAhDD,uCAAyB;AACzB,2CAA6B;AAC7B,gEAAmC;AAEnC,MAAM,MAAM,GAAG,sBAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AAE5C,SAAS,kBAAkB,CAAC,UAAkB;IAC1C,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACtC,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC;IACf,CAAC;IAED,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3B,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IACzB,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3E,CAAC;SAAM,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC;IACpD,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY;IACtC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,UAAU,GACZ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,cAAc,CACpB,WAAW,IAAI,uCAAuC,CACzD,CAAC;IACN,CAAC;IAED,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC"} |
| "use strict"; | ||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| var desc = Object.getOwnPropertyDescriptor(m, k); | ||
| if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
| desc = { enumerable: true, get: function() { return m[k]; } }; | ||
| } | ||
| Object.defineProperty(o, k2, desc); | ||
| }) : (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| o[k2] = m[k]; | ||
| })); | ||
| var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
| Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
| }) : function(o, v) { | ||
| o["default"] = v; | ||
| }); | ||
| var __importStar = (this && this.__importStar) || function (mod) { | ||
| if (mod && mod.__esModule) return mod; | ||
| var result = {}; | ||
| if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||
| __setModuleDefault(result, mod); | ||
| return result; | ||
| }; | ||
| var __importDefault = (this && this.__importDefault) || function (mod) { | ||
| return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.spawnWithPipes = spawnWithPipes; | ||
| const childProcess = require("child_process"); | ||
| const process = require("process"); | ||
| const childProcess = __importStar(require("child_process")); | ||
| const node_process_1 = __importDefault(require("node:process")); | ||
| function spawnWithPipes(command, args = []) { | ||
| const child = childProcess.spawn(command, args, { | ||
| stdio: ['pipe', 'pipe', 'pipe'], // Use pipes for proper control | ||
| cwd: process.cwd(), | ||
| cwd: node_process_1.default.cwd(), | ||
| detached: false, // Run attached to prevent orphan processes | ||
| windowsHide: true, // Hide the console window on Windows | ||
| }); | ||
@@ -12,0 +39,0 @@ // Ensure child does not keep the event loop active |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"spawn-with-pipes.js","sourceRoot":"","sources":["../src/spawn-with-pipes.ts"],"names":[],"mappings":";;AAGA,wCAcC;AAjBD,8CAA8C;AAC9C,mCAAmC;AAEnC,SAAgB,cAAc,CAC1B,OAAe,EACf,OAAsB,EAAE;IAExB,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;QAC5C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,+BAA+B;QAChE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,QAAQ,EAAE,KAAK,EAAE,2CAA2C;KAC/D,CAAC,CAAC;IAEH,mDAAmD;IACnD,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,OAAO,KAAK,CAAC;AACjB,CAAC"} | ||
| {"version":3,"file":"spawn-with-pipes.js","sourceRoot":"","sources":["../src/spawn-with-pipes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,wCAeC;AAlBD,4DAA8C;AAC9C,gEAAmC;AAEnC,SAAgB,cAAc,CAC1B,OAAe,EACf,OAAsB,EAAE;IAExB,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;QAC5C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,+BAA+B;QAChE,GAAG,EAAE,sBAAO,CAAC,GAAG,EAAE;QAClB,QAAQ,EAAE,KAAK,EAAE,2CAA2C;QAC5D,WAAW,EAAE,IAAI,EAAE,qCAAqC;KAC3D,CAAC,CAAC;IAEH,mDAAmD;IACnD,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,OAAO,KAAK,CAAC;AACjB,CAAC"} |
+29
-3
| "use strict"; | ||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| var desc = Object.getOwnPropertyDescriptor(m, k); | ||
| if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
| desc = { enumerable: true, get: function() { return m[k]; } }; | ||
| } | ||
| Object.defineProperty(o, k2, desc); | ||
| }) : (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| o[k2] = m[k]; | ||
| })); | ||
| var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
| Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
| }) : function(o, v) { | ||
| o["default"] = v; | ||
| }); | ||
| var __importStar = (this && this.__importStar) || function (mod) { | ||
| if (mod && mod.__esModule) return mod; | ||
| var result = {}; | ||
| if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||
| __setModuleDefault(result, mod); | ||
| return result; | ||
| }; | ||
| var __importDefault = (this && this.__importDefault) || function (mod) { | ||
| return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.spawn = spawn; | ||
| const childProcess = require("child_process"); | ||
| const process = require("process"); | ||
| const childProcess = __importStar(require("child_process")); | ||
| const node_process_1 = __importDefault(require("node:process")); | ||
| function spawn(command, args = []) { | ||
| return childProcess.spawn(command, args, { | ||
| stdio: [null, null, null, 'ipc'], | ||
| cwd: process.cwd(), | ||
| cwd: node_process_1.default.cwd(), | ||
| detached: true, | ||
@@ -11,0 +37,0 @@ }); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../src/spawn.ts"],"names":[],"mappings":";;AAGA,sBASC;AAZD,8CAA8C;AAC9C,mCAAmC;AAEnC,SAAgB,KAAK,CACjB,OAAe,EACf,OAAsB,EAAE;IAExB,OAAO,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;QACrC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;QAChC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,QAAQ,EAAE,IAAI;KACjB,CAAC,CAAC;AACP,CAAC"} | ||
| {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../src/spawn.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,sBASC;AAZD,4DAA8C;AAC9C,gEAAmC;AAEnC,SAAgB,KAAK,CACjB,OAAe,EACf,OAAsB,EAAE;IAExB,OAAO,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;QACrC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;QAChC,GAAG,EAAE,sBAAO,CAAC,GAAG,EAAE;QAClB,QAAQ,EAAE,IAAI;KACjB,CAAC,CAAC;AACP,CAAC"} |
+3
-3
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.isChildProcess = isChildProcess; | ||
| const process_1 = require("process"); | ||
| const node_process_1 = require("node:process"); | ||
| function checkArguments(argv) { | ||
| return (argv.findIndex((item) => item.startsWith('--testring-parent-pid=')) > -1); | ||
| } | ||
| const IS_PARENT_ARGV_PASSED = checkArguments(process_1.argv); | ||
| function isChildProcess(argv = process_1.argv) { | ||
| const IS_PARENT_ARGV_PASSED = checkArguments(node_process_1.argv); | ||
| function isChildProcess(argv = node_process_1.argv) { | ||
| return argv ? checkArguments(argv) : IS_PARENT_ARGV_PASSED; | ||
| } | ||
| //# sourceMappingURL=utils.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAUA,wCAEC;AAZD,qCAA4C;AAE5C,SAAS,cAAc,CAAC,IAAc;IAClC,OAAO,CACH,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,CAC3E,CAAC;AACN,CAAC;AAED,MAAM,qBAAqB,GAAG,cAAc,CAAC,cAAW,CAAC,CAAC;AAE1D,SAAgB,cAAc,CAAC,OAAiB,cAAW;IACvD,OAAO,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAC/D,CAAC"} | ||
| {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAUA,wCAEC;AAZD,+CAAiD;AAEjD,SAAS,cAAc,CAAC,IAAc;IAClC,OAAO,CACH,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,CAC3E,CAAC;AACN,CAAC;AAED,MAAM,qBAAqB,GAAG,cAAc,CAAC,mBAAW,CAAC,CAAC;AAE1D,SAAgB,cAAc,CAAC,OAAiB,mBAAW;IACvD,OAAO,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAC/D,CAAC"} |
+3
-3
| { | ||
| "name": "@testring/child-process", | ||
| "version": "0.7.6", | ||
| "version": "0.8.0", | ||
| "main": "./dist/index.js", | ||
@@ -11,4 +11,4 @@ "types": "./src/index.ts", | ||
| "dependencies": { | ||
| "@testring/types": "0.7.6", | ||
| "@testring/utils": "0.7.6" | ||
| "@testring/types": "0.8.0", | ||
| "@testring/utils": "0.8.0" | ||
| }, | ||
@@ -15,0 +15,0 @@ "author": "RingCentral", |
+13
-6
| import * as path from 'path'; | ||
| import * as process from 'process'; | ||
| import process from 'node:process'; | ||
| import {getAvailablePort} from '@testring/utils'; | ||
@@ -7,7 +7,12 @@ import {IChildProcessForkOptions, IChildProcessFork} from '@testring/types'; | ||
| import {spawn} from './spawn'; | ||
| import {ChildProcess} from 'child_process'; | ||
| interface ChildProcessExtension extends ChildProcess { | ||
| debugPort: number | null; | ||
| } | ||
| function getNumberRange(start: number, end: number): Array<number> { | ||
| const length = start - end; | ||
| return Array.from({length}, (x, i) => i + start); | ||
| return Array.from({length}, (_, i) => i + start); | ||
| } | ||
@@ -23,3 +28,3 @@ | ||
| const IS_WIN = process.platform === 'win32'; | ||
| const EMPTY_PARAMETERS = []; | ||
| const EMPTY_PARAMETERS: Array<string> = []; | ||
| const REQUIRE_TS_NODE = ['-r', 'ts-node/register']; | ||
@@ -97,3 +102,3 @@ const Module = require('module').Module; | ||
| let childProcess; | ||
| let childProcess: ChildProcess; | ||
| if (IS_WIN) { | ||
@@ -116,5 +121,7 @@ childProcess = spawn('node', [ | ||
| childProcess.debugPort = debugPort; | ||
| const childProcessExtended = childProcess as ChildProcessExtension; | ||
| return childProcess; | ||
| childProcessExtended.debugPort = debugPort; | ||
| return childProcessExtended; | ||
| } |
| import * as fs from 'fs'; | ||
| import * as path from 'path'; | ||
| import * as process from 'process'; | ||
| import process from 'node:process'; | ||
@@ -19,3 +19,3 @@ const IS_WIN = process.platform === 'win32'; | ||
| function windowsQuotes(str) { | ||
| function windowsQuotes(str: string): string { | ||
| if (!/ /.test(str)) { | ||
@@ -22,0 +22,0 @@ return str; |
| import * as childProcess from 'child_process'; | ||
| import * as process from 'process'; | ||
| import process from 'node:process'; | ||
@@ -12,2 +12,3 @@ export function spawnWithPipes( | ||
| detached: false, // Run attached to prevent orphan processes | ||
| windowsHide: true, // Hide the console window on Windows | ||
| }); | ||
@@ -14,0 +15,0 @@ |
+1
-1
| import * as childProcess from 'child_process'; | ||
| import * as process from 'process'; | ||
| import process from 'node:process'; | ||
@@ -4,0 +4,0 @@ export function spawn( |
+1
-1
@@ -1,2 +0,2 @@ | ||
| import {argv as processArgv} from 'process'; | ||
| import {argv as processArgv} from 'node:process'; | ||
@@ -3,0 +3,0 @@ function checkArguments(argv: string[]) { |
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
26419
38.86%34
61.9%493
33.97%7
75%+ Added
+ Added
- Removed
- Removed
Updated
Updated