cross-spawn-cb 2.5.3 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -34,15 +34,14 @@ _export(exports, {
34
34
  }
35
35
  });
36
36
  var _child_process = /*#__PURE__*/ _interop_require_default(require("child_process"));
37
- var _spawnSyncts = /*#__PURE__*/ _interop_require_default(require("../polyfills/spawnSync.js"));
38
37
  var _enoentts = require("./enoent.js");
39
38
  var _parsets = require("./parse.js");
39
+ var _spawnSyncts = /*#__PURE__*/ _interop_require_default(require("./spawnSync.js"));
40
40
  function _interop_require_default(obj) {
41
41
  return obj && obj.__esModule ? obj : {
42
42
  default: obj
43
43
  };
44
44
  }
45
- var cpSpawnSync = _child_process.default.spawnSync || _spawnSyncts.default;
46
45
  function spawn(command, args, options) {
47
46
  var parsed = (0, _parsets.parse)(command, args, options);
48
47
  var spawned = _child_process.default.spawn(parsed.command, parsed.args, parsed.options);
@@ -51,7 +50,7 @@ function spawn(command, args, options) {
51
50
  }
52
51
  function spawnSync(command, args, options) {
53
52
  var parsed = (0, _parsets.parse)(command, args, options);
54
- var result = cpSpawnSync(parsed.command, parsed.args, parsed.options);
53
+ var result = (0, _spawnSyncts.default)(parsed.command, parsed.args, parsed.options);
55
54
  result.error = result.error || (0, _enoentts.verifyENOENTSync)(result.status, parsed);
56
55
  return result;
57
56
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/shim/index.ts"],"sourcesContent":["/**\n * Minimal cross-spawn shim for Windows compatibility on legacy Node.js\n *\n * This replaces the bundled cross-spawn v6.0.5 (~1,950 lines) with a minimal\n * implementation (~200 lines) that uses external dependencies:\n * - which@^1.0.0 (command resolution)\n * - env-path-key@^1.0.0 (cross-platform PATH key detection)\n */\n\nimport type { ChildProcess, SpawnSyncReturns } from 'child_process';\nimport cp from 'child_process';\nimport spawnSyncPolyfill from '../polyfills/spawnSync.ts';\nimport { hookChildProcess, notFoundError, verifyENOENT, verifyENOENTSync } from './enoent.ts';\nimport { parse } from './parse.ts';\nimport type { Parsed, ShimSpawnOptions } from './types.ts';\n\nconst cpSpawnSync = cp.spawnSync || spawnSyncPolyfill;\n\nfunction spawn(command: string, args?: string[] | ShimSpawnOptions, options?: ShimSpawnOptions): ChildProcess {\n const parsed = parse(command, args, options);\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n hookChildProcess(spawned, parsed);\n return spawned;\n}\n\nfunction spawnSync(command: string, args?: string[] | ShimSpawnOptions, options?: ShimSpawnOptions): SpawnSyncReturns<Buffer> {\n const parsed = parse(command, args, options);\n const result = cpSpawnSync(parsed.command, parsed.args, parsed.options) as SpawnSyncReturns<Buffer> & { error?: Error };\n result.error = result.error || verifyENOENTSync(result.status as number, parsed);\n return result;\n}\n\n// Main export\nexport default spawn;\n\n// Named exports matching cross-spawn's API\nexport { spawn };\nexport { spawnSync as sync };\n\n// Internal APIs used by crossSpawn.ts\nexport { parse as _parse };\nexport const _enoent = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n\n// Re-export types\nexport type { Parsed, ShimSpawnOptions };\n"],"names":["_enoent","_parse","parse","spawn","sync","spawnSync","cpSpawnSync","cp","spawnSyncPolyfill","command","args","options","parsed","spawned","hookChildProcess","result","error","verifyENOENTSync","status","verifyENOENT","notFoundError"],"mappings":"AAAA;;;;;;;CAOC;;;;;;;;;;;QAkCYA;eAAAA;;QADKC;eAATC,cAAK;;QARd,cAAc;IACd;eAAA;;QAGSC;eAAAA;;QACaC;eAAbC;;;oEA3BM;kEACe;wBACkD;uBAC1D;;;;;;AAGtB,IAAMC,cAAcC,sBAAE,CAACF,SAAS,IAAIG,oBAAiB;AAErD,SAASL,MAAMM,OAAe,EAAEC,IAAkC,EAAEC,OAA0B;IAC5F,IAAMC,SAASV,IAAAA,cAAK,EAACO,SAASC,MAAMC;IACpC,IAAME,UAAUN,sBAAE,CAACJ,KAAK,CAACS,OAAOH,OAAO,EAAEG,OAAOF,IAAI,EAAEE,OAAOD,OAAO;IACpEG,IAAAA,0BAAgB,EAACD,SAASD;IAC1B,OAAOC;AACT;AAEA,SAASR,UAAUI,OAAe,EAAEC,IAAkC,EAAEC,OAA0B;IAChG,IAAMC,SAASV,IAAAA,cAAK,EAACO,SAASC,MAAMC;IACpC,IAAMI,SAAST,YAAYM,OAAOH,OAAO,EAAEG,OAAOF,IAAI,EAAEE,OAAOD,OAAO;IACtEI,OAAOC,KAAK,GAAGD,OAAOC,KAAK,IAAIC,IAAAA,0BAAgB,EAACF,OAAOG,MAAM,EAAYN;IACzE,OAAOG;AACT;IAGA,WAAeZ;AAQR,IAAMH,UAAU;IACrBc,kBAAAA,0BAAgB;IAChBK,cAAAA,sBAAY;IACZF,kBAAAA,0BAAgB;IAChBG,eAAAA,uBAAa;AACf"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/shim/index.ts"],"sourcesContent":["/**\n * Minimal cross-spawn shim for Windows compatibility on legacy Node.js\n *\n * This replaces the bundled cross-spawn v6.0.5 (~1,950 lines) with a minimal\n * implementation (~200 lines) that uses external dependencies:\n * - which@^1.0.0 (command resolution)\n * - env-path-key@^1.0.0 (cross-platform PATH key detection)\n */\n\nimport type { ChildProcess, SpawnSyncReturns } from 'child_process';\nimport cp from 'child_process';\nimport { hookChildProcess, notFoundError, verifyENOENT, verifyENOENTSync } from './enoent.ts';\nimport { parse } from './parse.ts';\nimport spawnSyncCompat from './spawnSync.ts';\nimport type { Parsed, ShimSpawnOptions } from './types.ts';\n\nfunction spawn(command: string, args?: string[] | ShimSpawnOptions, options?: ShimSpawnOptions): ChildProcess {\n const parsed = parse(command, args, options);\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n hookChildProcess(spawned, parsed);\n return spawned;\n}\n\nfunction spawnSync(command: string, args?: string[] | ShimSpawnOptions, options?: ShimSpawnOptions): SpawnSyncReturns<Buffer> {\n const parsed = parse(command, args, options);\n const result = spawnSyncCompat(parsed.command, parsed.args, parsed.options) as SpawnSyncReturns<Buffer> & { error?: Error };\n result.error = result.error || verifyENOENTSync(result.status as number, parsed);\n return result;\n}\n\n// Main export\nexport default spawn;\n\n// Named exports matching cross-spawn's API\nexport { spawn };\nexport { spawnSync as sync };\n\n// Internal APIs used by crossSpawn.ts\nexport { parse as _parse };\nexport const _enoent = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n\n// Re-export types\nexport type { Parsed, ShimSpawnOptions };\n"],"names":["_enoent","_parse","parse","spawn","sync","spawnSync","command","args","options","parsed","spawned","cp","hookChildProcess","result","spawnSyncCompat","error","verifyENOENTSync","status","verifyENOENT","notFoundError"],"mappings":"AAAA;;;;;;;CAOC;;;;;;;;;;;QAgCYA;eAAAA;;QADKC;eAATC,cAAK;;QARd,cAAc;IACd;eAAA;;QAGSC;eAAAA;;QACaC;eAAbC;;;oEAzBM;wBACiE;uBAC1D;kEACM;;;;;;AAG5B,SAASF,MAAMG,OAAe,EAAEC,IAAkC,EAAEC,OAA0B;IAC5F,IAAMC,SAASP,IAAAA,cAAK,EAACI,SAASC,MAAMC;IACpC,IAAME,UAAUC,sBAAE,CAACR,KAAK,CAACM,OAAOH,OAAO,EAAEG,OAAOF,IAAI,EAAEE,OAAOD,OAAO;IACpEI,IAAAA,0BAAgB,EAACF,SAASD;IAC1B,OAAOC;AACT;AAEA,SAASL,UAAUC,OAAe,EAAEC,IAAkC,EAAEC,OAA0B;IAChG,IAAMC,SAASP,IAAAA,cAAK,EAACI,SAASC,MAAMC;IACpC,IAAMK,SAASC,IAAAA,oBAAe,EAACL,OAAOH,OAAO,EAAEG,OAAOF,IAAI,EAAEE,OAAOD,OAAO;IAC1EK,OAAOE,KAAK,GAAGF,OAAOE,KAAK,IAAIC,IAAAA,0BAAgB,EAACH,OAAOI,MAAM,EAAYR;IACzE,OAAOI;AACT;IAGA,WAAeV;AAQR,IAAMH,UAAU;IACrBY,kBAAAA,0BAAgB;IAChBM,cAAAA,sBAAY;IACZF,kBAAAA,0BAAgB;IAChBG,eAAAA,uBAAa;AACf"}
@@ -0,0 +1,2 @@
1
+ import type { SpawnResult } from '../types.js';
2
+ export default function spawnSync(cmd: string, args: string[], options?: object): SpawnResult;
@@ -0,0 +1,2 @@
1
+ import type { SpawnResult } from '../types.js';
2
+ export default function spawnSync(cmd: string, args: string[], options?: object): SpawnResult;
@@ -5,10 +5,11 @@ Object.defineProperty(exports, "__esModule", {
5
5
  Object.defineProperty(exports, "default", {
6
6
  enumerable: true,
7
7
  get: function() {
8
- return spawnSyncPolyfill;
8
+ return spawnSync;
9
9
  }
10
10
  });
11
- var _module = /*#__PURE__*/ _interop_require_default(require("module"));
11
+ var _child_process = /*#__PURE__*/ _interop_require_default(require("child_process"));
12
+ var _nodeversioncalllocal = require("node-version-call-local");
12
13
  var _path = /*#__PURE__*/ _interop_require_default(require("path"));
13
14
  var _url = /*#__PURE__*/ _interop_require_default(require("url"));
14
15
  function _interop_require_default(obj) {
@@ -16,16 +17,15 @@ function _interop_require_default(obj) {
16
17
  default: obj
17
18
  };
18
19
  }
19
- // CJS/ESM compatibility
20
- var _require = typeof require === 'undefined' ? _module.default.createRequire(require("url").pathToFileURL(__filename).toString()) : require;
21
20
  var __dirname = _path.default.dirname(typeof __filename !== 'undefined' ? __filename : _url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString()));
22
- // Path is relative to dist/cjs/polyfills/ at runtime
23
21
  var workerPath = _path.default.join(__dirname, '..', '..', 'cjs', 'spawn.js');
24
- var functionExec = null; // break dependencies
25
- function spawnSyncPolyfill(cmd, args, options) {
26
- if (!functionExec) functionExec = _require('function-exec-sync');
27
- return functionExec === null || functionExec === void 0 ? void 0 : functionExec({
28
- callbacks: true
29
- }, workerPath, cmd, args, options || {});
22
+ function run(cmd, args, options) {
23
+ return _child_process.default.spawnSync(cmd, args, options);
24
+ }
25
+ var worker = typeof _child_process.default.spawnSync === 'function' ? run : (0, _nodeversioncalllocal.bind)(process.version, workerPath, {
26
+ callbacks: true
27
+ });
28
+ function spawnSync(cmd, args, options) {
29
+ return worker(cmd, args, options || {});
30
30
  }
31
31
  /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/shim/spawnSync.ts"],"sourcesContent":["import cp from 'child_process';\nimport { bind } from 'node-version-call-local';\nimport path from 'path';\nimport url from 'url';\nimport type { SpawnResult } from '../types.ts';\n\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\nconst workerPath = path.join(__dirname, '..', '..', 'cjs', 'spawn.js');\n\nfunction run(cmd: string, args: string[], options?: object): SpawnResult {\n return cp.spawnSync(cmd, args, options) as SpawnResult;\n}\n\nconst worker = typeof cp.spawnSync === 'function' ? run : bind(process.version, workerPath, { callbacks: true });\n\nexport default function spawnSync(cmd: string, args: string[], options?: object): SpawnResult {\n return worker(cmd, args, options || {}) as SpawnResult;\n}\n"],"names":["spawnSync","__dirname","path","dirname","__filename","url","fileURLToPath","workerPath","join","run","cmd","args","options","cp","worker","bind","process","version","callbacks"],"mappings":";;;;+BAeA;;;eAAwBA;;;oEAfT;oCACM;2DACJ;0DACD;;;;;;AAGhB,IAAMC,YAAYC,aAAI,CAACC,OAAO,CAAC,OAAOC,eAAe,cAAcA,aAAaC,YAAG,CAACC,aAAa,CAAC;AAClG,IAAMC,aAAaL,aAAI,CAACM,IAAI,CAACP,WAAW,MAAM,MAAM,OAAO;AAE3D,SAASQ,IAAIC,GAAW,EAAEC,IAAc,EAAEC,OAAgB;IACxD,OAAOC,sBAAE,CAACb,SAAS,CAACU,KAAKC,MAAMC;AACjC;AAEA,IAAME,SAAS,OAAOD,sBAAE,CAACb,SAAS,KAAK,aAAaS,MAAMM,IAAAA,0BAAI,EAACC,QAAQC,OAAO,EAAEV,YAAY;IAAEW,WAAW;AAAK;AAE/F,SAASlB,UAAUU,GAAW,EAAEC,IAAc,EAAEC,OAAgB;IAC7E,OAAOE,OAAOJ,KAAKC,MAAMC,WAAW,CAAC;AACvC"}
@@ -1,6 +1,8 @@
1
1
  import spawnSync from './spawnSync.js';
2
2
  import type { SpawnCallback, SpawnOptions, SpawnResult } from './types.js';
3
- declare function spawn(command: string, args: string[], options?: SpawnOptions | SpawnCallback, callback?: SpawnCallback): undefined | Promise<SpawnResult>;
3
+ declare function spawn(command: string, args: string[], callback: SpawnCallback): void;
4
+ declare function spawn(command: string, args: string[], options: SpawnOptions, callback: SpawnCallback): void;
5
+ declare function spawn(command: string, args: string[], options?: SpawnOptions): Promise<SpawnResult>;
4
6
  declare namespace spawn {
5
7
  var worker: typeof import("./workers/async.js").default;
6
8
  var sync: typeof spawnSync;
@@ -1,6 +1,8 @@
1
1
  import spawnSync from './spawnSync.js';
2
2
  import type { SpawnCallback, SpawnOptions, SpawnResult } from './types.js';
3
- declare function spawn(command: string, args: string[], options?: SpawnOptions | SpawnCallback, callback?: SpawnCallback): undefined | Promise<SpawnResult>;
3
+ declare function spawn(command: string, args: string[], callback: SpawnCallback): void;
4
+ declare function spawn(command: string, args: string[], options: SpawnOptions, callback: SpawnCallback): void;
5
+ declare function spawn(command: string, args: string[], options?: SpawnOptions): Promise<SpawnResult>;
4
6
  declare namespace spawn {
5
7
  var worker: typeof import("./workers/async.js").default;
6
8
  var sync: typeof spawnSync;
package/dist/cjs/spawn.js CHANGED
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  Object.defineProperty(exports, "default", {
6
6
  enumerable: true,
7
7
  get: function() {
8
- return spawn;
8
+ return _default;
9
9
  }
10
10
  });
11
11
  var _crossSpawnts = /*#__PURE__*/ _interop_require_default(require("./crossSpawn.js"));
@@ -33,4 +33,5 @@ function spawn(command, args, options, callback) {
33
33
  spawn.worker = _asyncts.default;
34
34
  spawn.sync = _spawnSyncts.default;
35
35
  spawn.crossSpawn = _crossSpawnts.default;
36
+ var _default = spawn;
36
37
  /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/spawn.ts"],"sourcesContent":["import crossSpawn from './crossSpawn.ts';\nimport spawnSync from './spawnSync.ts';\nimport type { SpawnCallback, SpawnOptions, SpawnResult } from './types.ts';\nimport worker from './workers/async.ts';\n\nexport default function spawn(command: string, args: string[], options?: SpawnOptions | SpawnCallback, callback?: SpawnCallback): undefined | Promise<SpawnResult> {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n const cp = crossSpawn(command, args, options);\n\n if (typeof callback === 'function') return worker(cp, options, callback) as undefined;\n return new Promise((resolve, reject) => worker(cp, options, (err, res) => (err ? reject(err) : resolve(res))));\n}\nspawn.worker = worker;\nspawn.sync = spawnSync;\nspawn.crossSpawn = crossSpawn;\n"],"names":["spawn","command","args","options","callback","cp","crossSpawn","worker","Promise","resolve","reject","err","res","sync","spawnSync"],"mappings":";;;;+BAKA;;;eAAwBA;;;mEALD;kEACD;8DAEH;;;;;;AAEJ,SAASA,MAAMC,OAAe,EAAEC,IAAc,EAAEC,OAAsC,EAAEC,QAAwB;IAC7H,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IACtB,IAAME,KAAKC,IAAAA,qBAAU,EAACL,SAASC,MAAMC;IAErC,IAAI,OAAOC,aAAa,YAAY,OAAOG,IAAAA,gBAAM,EAACF,IAAIF,SAASC;IAC/D,OAAO,IAAII,QAAQ,SAACC,SAASC;eAAWH,IAAAA,gBAAM,EAACF,IAAIF,SAAS,SAACQ,KAAKC;mBAASD,MAAMD,OAAOC,OAAOF,QAAQG;;;AACzG;AACAZ,MAAMO,MAAM,GAAGA,gBAAM;AACrBP,MAAMa,IAAI,GAAGC,oBAAS;AACtBd,MAAMM,UAAU,GAAGA,qBAAU"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/spawn.ts"],"sourcesContent":["import crossSpawn from './crossSpawn.ts';\nimport spawnSync from './spawnSync.ts';\nimport type { SpawnCallback, SpawnOptions, SpawnResult } from './types.ts';\nimport worker from './workers/async.ts';\n\nfunction spawn(command: string, args: string[], callback: SpawnCallback): void;\nfunction spawn(command: string, args: string[], options: SpawnOptions, callback: SpawnCallback): void;\nfunction spawn(command: string, args: string[], options?: SpawnOptions): Promise<SpawnResult>;\nfunction spawn(command: string, args: string[], options?: SpawnOptions | SpawnCallback, callback?: SpawnCallback): void | Promise<SpawnResult> {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n const cp = crossSpawn(command, args, options);\n\n if (typeof callback === 'function') return worker(cp, options, callback);\n return new Promise((resolve, reject) => worker(cp, options as SpawnOptions, (err, res) => (err ? reject(err) : resolve(res))));\n}\nspawn.worker = worker;\nspawn.sync = spawnSync;\nspawn.crossSpawn = crossSpawn;\n\nexport default spawn;\n"],"names":["spawn","command","args","options","callback","cp","crossSpawn","worker","Promise","resolve","reject","err","res","sync","spawnSync"],"mappings":";;;;+BAuBA;;;eAAA;;;mEAvBuB;kEACD;8DAEH;;;;;;AAKnB,SAASA,MAAMC,OAAe,EAAEC,IAAc,EAAEC,OAAsC,EAAEC,QAAwB;IAC9G,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IACtB,IAAME,KAAKC,IAAAA,qBAAU,EAACL,SAASC,MAAMC;IAErC,IAAI,OAAOC,aAAa,YAAY,OAAOG,IAAAA,gBAAM,EAACF,IAAIF,SAASC;IAC/D,OAAO,IAAII,QAAQ,SAACC,SAASC;eAAWH,IAAAA,gBAAM,EAACF,IAAIF,SAAyB,SAACQ,KAAKC;mBAASD,MAAMD,OAAOC,OAAOF,QAAQG;;;AACzH;AACAZ,MAAMO,MAAM,GAAGA,gBAAM;AACrBP,MAAMa,IAAI,GAAGC,oBAAS;AACtBd,MAAMM,UAAU,GAAGA,qBAAU;IAE7B,WAAeN"}
@@ -32,7 +32,7 @@ export interface SpawnError extends NotFoundError, SpawnResult {
32
32
  }
33
33
  export type SpawnCallback = (err?: SpawnError, res?: SpawnResult) => void;
34
34
  export interface Enoent {
35
- hookChildProcess: (cp: ChildProcess, parsed: Parsed) => undefined;
35
+ hookChildProcess: (cp: ChildProcess, parsed: Parsed) => void;
36
36
  verifyENOENT: (status: number, parsed: Parsed) => NotFoundError | null;
37
37
  verifyENOENTSync: (status: number, parsed: Parsed) => NotFoundError | null;
38
38
  notFoundError: (cp: ChildProcess, parsed: Parsed) => NotFoundError;
@@ -32,7 +32,7 @@ export interface SpawnError extends NotFoundError, SpawnResult {
32
32
  }
33
33
  export type SpawnCallback = (err?: SpawnError, res?: SpawnResult) => void;
34
34
  export interface Enoent {
35
- hookChildProcess: (cp: ChildProcess, parsed: Parsed) => undefined;
35
+ hookChildProcess: (cp: ChildProcess, parsed: Parsed) => void;
36
36
  verifyENOENT: (status: number, parsed: Parsed) => NotFoundError | null;
37
37
  verifyENOENTSync: (status: number, parsed: Parsed) => NotFoundError | null;
38
38
  notFoundError: (cp: ChildProcess, parsed: Parsed) => NotFoundError;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/workers/async.ts"],"sourcesContent":["import oo from 'on-one';\nimport { spawnKeys } from '../constants.ts';\n\nimport type { ChildProcess, SpawnCallback, SpawnError, SpawnOptions, SpawnResult } from '../types.ts';\n\nexport default function worker(cp: ChildProcess, options?: SpawnOptions | SpawnCallback, callback?: SpawnCallback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n // collect output\n const res = { pid: 0, output: [], stdout: null, stderr: null, status: null, signal: null } as SpawnResult;\n const stdout: Buffer[] = [];\n const stderr: Buffer[] = [];\n if (options.encoding && cp.stdout) cp.stdout.on('data', stdout.push.bind(stdout));\n if (options.encoding && cp.stderr) cp.stderr.on('data', stderr.push.bind(stderr));\n\n // some versions of node emit both an error and close\n oo(cp, ['error', 'close'], (err: Error | null, status: number | null, signal: NodeJS.Signals | null) => {\n if (err) {\n if ((err as SpawnError).code === 'OK') return; // ignore\n return callback(err as SpawnError);\n }\n\n // prepare result\n res.pid = cp.pid;\n res.status = status;\n res.signal = signal;\n if (options.encoding && cp.stdout) {\n res.stdout = Buffer.concat(stdout);\n if (options.encoding !== 'binary') res.stdout = res.stdout.toString(options.encoding);\n }\n if (options.encoding && cp.stderr) {\n res.stderr = Buffer.concat(stderr);\n if (options.encoding !== 'binary') res.stderr = res.stderr.toString(options.encoding);\n }\n res.output = [null, res.stdout, res.stderr];\n if (res.status === null) res.status = 0; // patch: early node on windows could return null\n\n // process errors\n const exitErr = res.status !== 0 ? new Error(`Non-zero exit code: ${res.status}`) : null;\n if (exitErr) {\n for (const key in res) {\n if (spawnKeys.indexOf(key) < 0) continue;\n exitErr[key] = Buffer.isBuffer(res[key]) ? res[key].toString(options.encoding || 'utf8') : res[key];\n }\n }\n exitErr ? callback(exitErr as SpawnError) : callback(null, res);\n });\n\n // pipe input\n if (options.input && (typeof options.input === 'string' || Buffer.isBuffer(options.input))) {\n cp.stdin.end(options.input);\n }\n}\n"],"names":["worker","cp","options","callback","res","pid","output","stdout","stderr","status","signal","encoding","on","push","bind","oo","err","code","Buffer","concat","toString","exitErr","Error","key","spawnKeys","indexOf","isBuffer","input","stdin","end"],"mappings":";;;;+BAKA;;;eAAwBA;;;4DALT;2BACW;;;;;;AAIX,SAASA,OAAOC,EAAgB,EAAEC,OAAsC,EAAEC,QAAwB;IAC/G,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,iBAAiB;IACjB,IAAME,MAAM;QAAEC,KAAK;QAAGC,QAAQ,EAAE;QAAEC,QAAQ;QAAMC,QAAQ;QAAMC,QAAQ;QAAMC,QAAQ;IAAK;IACzF,IAAMH,SAAmB,EAAE;IAC3B,IAAMC,SAAmB,EAAE;IAC3B,IAAIN,QAAQS,QAAQ,IAAIV,GAAGM,MAAM,EAAEN,GAAGM,MAAM,CAACK,EAAE,CAAC,QAAQL,OAAOM,IAAI,CAACC,IAAI,CAACP;IACzE,IAAIL,QAAQS,QAAQ,IAAIV,GAAGO,MAAM,EAAEP,GAAGO,MAAM,CAACI,EAAE,CAAC,QAAQJ,OAAOK,IAAI,CAACC,IAAI,CAACN;IAEzE,qDAAqD;IACrDO,IAAAA,cAAE,EAACd,IAAI;QAAC;QAAS;KAAQ,EAAE,SAACe,KAAmBP,QAAuBC;QACpE,IAAIM,KAAK;YACP,IAAI,AAACA,IAAmBC,IAAI,KAAK,MAAM,QAAQ,SAAS;YACxD,OAAOd,SAASa;QAClB;QAEA,iBAAiB;QACjBZ,IAAIC,GAAG,GAAGJ,GAAGI,GAAG;QAChBD,IAAIK,MAAM,GAAGA;QACbL,IAAIM,MAAM,GAAGA;QACb,IAAIR,QAAQS,QAAQ,IAAIV,GAAGM,MAAM,EAAE;YACjCH,IAAIG,MAAM,GAAGW,OAAOC,MAAM,CAACZ;YAC3B,IAAIL,QAAQS,QAAQ,KAAK,UAAUP,IAAIG,MAAM,GAAGH,IAAIG,MAAM,CAACa,QAAQ,CAAClB,QAAQS,QAAQ;QACtF;QACA,IAAIT,QAAQS,QAAQ,IAAIV,GAAGO,MAAM,EAAE;YACjCJ,IAAII,MAAM,GAAGU,OAAOC,MAAM,CAACX;YAC3B,IAAIN,QAAQS,QAAQ,KAAK,UAAUP,IAAII,MAAM,GAAGJ,IAAII,MAAM,CAACY,QAAQ,CAAClB,QAAQS,QAAQ;QACtF;QACAP,IAAIE,MAAM,GAAG;YAAC;YAAMF,IAAIG,MAAM;YAAEH,IAAII,MAAM;SAAC;QAC3C,IAAIJ,IAAIK,MAAM,KAAK,MAAML,IAAIK,MAAM,GAAG,GAAG,iDAAiD;QAE1F,iBAAiB;QACjB,IAAMY,UAAUjB,IAAIK,MAAM,KAAK,IAAI,IAAIa,MAAM,AAAC,uBAAiC,OAAXlB,IAAIK,MAAM,KAAM;QACpF,IAAIY,SAAS;YACX,IAAK,IAAME,OAAOnB,IAAK;gBACrB,IAAIoB,sBAAS,CAACC,OAAO,CAACF,OAAO,GAAG;gBAChCF,OAAO,CAACE,IAAI,GAAGL,OAAOQ,QAAQ,CAACtB,GAAG,CAACmB,IAAI,IAAInB,GAAG,CAACmB,IAAI,CAACH,QAAQ,CAAClB,QAAQS,QAAQ,IAAI,UAAUP,GAAG,CAACmB,IAAI;YACrG;QACF;QACAF,UAAUlB,SAASkB,WAAyBlB,SAAS,MAAMC;IAC7D;IAEA,aAAa;IACb,IAAIF,QAAQyB,KAAK,IAAK,CAAA,OAAOzB,QAAQyB,KAAK,KAAK,YAAYT,OAAOQ,QAAQ,CAACxB,QAAQyB,KAAK,CAAA,GAAI;QAC1F1B,GAAG2B,KAAK,CAACC,GAAG,CAAC3B,QAAQyB,KAAK;IAC5B;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/workers/async.ts"],"sourcesContent":["import oo from 'on-one';\nimport { spawnKeys } from '../constants.ts';\n\nimport type { ChildProcess, SpawnCallback, SpawnError, SpawnOptions, SpawnResult } from '../types.ts';\n\nexport default function worker(cp: ChildProcess, options?: SpawnOptions | SpawnCallback, callback?: SpawnCallback): void {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n // collect output\n const res = { pid: 0, output: [], stdout: null, stderr: null, status: null, signal: null } as SpawnResult;\n const stdout: Buffer[] = [];\n const stderr: Buffer[] = [];\n if (options.encoding && cp.stdout) cp.stdout.on('data', stdout.push.bind(stdout));\n if (options.encoding && cp.stderr) cp.stderr.on('data', stderr.push.bind(stderr));\n\n // some versions of node emit both an error and close\n oo(cp, ['error', 'close'], (err: Error | null, status: number | null, signal: NodeJS.Signals | null) => {\n if (err) {\n if ((err as SpawnError).code === 'OK') return; // ignore\n return callback(err as SpawnError);\n }\n\n // prepare result\n res.pid = cp.pid;\n res.status = status;\n res.signal = signal;\n if (options.encoding && cp.stdout) {\n res.stdout = Buffer.concat(stdout);\n if (options.encoding !== 'binary') res.stdout = res.stdout.toString(options.encoding);\n }\n if (options.encoding && cp.stderr) {\n res.stderr = Buffer.concat(stderr);\n if (options.encoding !== 'binary') res.stderr = res.stderr.toString(options.encoding);\n }\n res.output = [null, res.stdout, res.stderr];\n if (res.status === null) res.status = 0; // patch: early node on windows could return null\n\n // process errors\n const exitErr = res.status !== 0 ? new Error(`Non-zero exit code: ${res.status}`) : null;\n if (exitErr) {\n for (const key in res) {\n if (spawnKeys.indexOf(key) < 0) continue;\n exitErr[key] = Buffer.isBuffer(res[key]) ? res[key].toString(options.encoding || 'utf8') : res[key];\n }\n }\n exitErr ? callback(exitErr as SpawnError) : callback(null, res);\n });\n\n // pipe input\n if (options.input && (typeof options.input === 'string' || Buffer.isBuffer(options.input))) {\n cp.stdin.end(options.input);\n }\n}\n"],"names":["worker","cp","options","callback","res","pid","output","stdout","stderr","status","signal","encoding","on","push","bind","oo","err","code","Buffer","concat","toString","exitErr","Error","key","spawnKeys","indexOf","isBuffer","input","stdin","end"],"mappings":";;;;+BAKA;;;eAAwBA;;;4DALT;2BACW;;;;;;AAIX,SAASA,OAAOC,EAAgB,EAAEC,OAAsC,EAAEC,QAAwB;IAC/G,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,iBAAiB;IACjB,IAAME,MAAM;QAAEC,KAAK;QAAGC,QAAQ,EAAE;QAAEC,QAAQ;QAAMC,QAAQ;QAAMC,QAAQ;QAAMC,QAAQ;IAAK;IACzF,IAAMH,SAAmB,EAAE;IAC3B,IAAMC,SAAmB,EAAE;IAC3B,IAAIN,QAAQS,QAAQ,IAAIV,GAAGM,MAAM,EAAEN,GAAGM,MAAM,CAACK,EAAE,CAAC,QAAQL,OAAOM,IAAI,CAACC,IAAI,CAACP;IACzE,IAAIL,QAAQS,QAAQ,IAAIV,GAAGO,MAAM,EAAEP,GAAGO,MAAM,CAACI,EAAE,CAAC,QAAQJ,OAAOK,IAAI,CAACC,IAAI,CAACN;IAEzE,qDAAqD;IACrDO,IAAAA,cAAE,EAACd,IAAI;QAAC;QAAS;KAAQ,EAAE,SAACe,KAAmBP,QAAuBC;QACpE,IAAIM,KAAK;YACP,IAAI,AAACA,IAAmBC,IAAI,KAAK,MAAM,QAAQ,SAAS;YACxD,OAAOd,SAASa;QAClB;QAEA,iBAAiB;QACjBZ,IAAIC,GAAG,GAAGJ,GAAGI,GAAG;QAChBD,IAAIK,MAAM,GAAGA;QACbL,IAAIM,MAAM,GAAGA;QACb,IAAIR,QAAQS,QAAQ,IAAIV,GAAGM,MAAM,EAAE;YACjCH,IAAIG,MAAM,GAAGW,OAAOC,MAAM,CAACZ;YAC3B,IAAIL,QAAQS,QAAQ,KAAK,UAAUP,IAAIG,MAAM,GAAGH,IAAIG,MAAM,CAACa,QAAQ,CAAClB,QAAQS,QAAQ;QACtF;QACA,IAAIT,QAAQS,QAAQ,IAAIV,GAAGO,MAAM,EAAE;YACjCJ,IAAII,MAAM,GAAGU,OAAOC,MAAM,CAACX;YAC3B,IAAIN,QAAQS,QAAQ,KAAK,UAAUP,IAAII,MAAM,GAAGJ,IAAII,MAAM,CAACY,QAAQ,CAAClB,QAAQS,QAAQ;QACtF;QACAP,IAAIE,MAAM,GAAG;YAAC;YAAMF,IAAIG,MAAM;YAAEH,IAAII,MAAM;SAAC;QAC3C,IAAIJ,IAAIK,MAAM,KAAK,MAAML,IAAIK,MAAM,GAAG,GAAG,iDAAiD;QAE1F,iBAAiB;QACjB,IAAMY,UAAUjB,IAAIK,MAAM,KAAK,IAAI,IAAIa,MAAM,AAAC,uBAAiC,OAAXlB,IAAIK,MAAM,KAAM;QACpF,IAAIY,SAAS;YACX,IAAK,IAAME,OAAOnB,IAAK;gBACrB,IAAIoB,sBAAS,CAACC,OAAO,CAACF,OAAO,GAAG;gBAChCF,OAAO,CAACE,IAAI,GAAGL,OAAOQ,QAAQ,CAACtB,GAAG,CAACmB,IAAI,IAAInB,GAAG,CAACmB,IAAI,CAACH,QAAQ,CAAClB,QAAQS,QAAQ,IAAI,UAAUP,GAAG,CAACmB,IAAI;YACrG;QACF;QACAF,UAAUlB,SAASkB,WAAyBlB,SAAS,MAAMC;IAC7D;IAEA,aAAa;IACb,IAAIF,QAAQyB,KAAK,IAAK,CAAA,OAAOzB,QAAQyB,KAAK,KAAK,YAAYT,OAAOQ,QAAQ,CAACxB,QAAQyB,KAAK,CAAA,GAAI;QAC1F1B,GAAG2B,KAAK,CAACC,GAAG,CAAC3B,QAAQyB,KAAK;IAC5B;AACF"}
@@ -6,10 +6,9 @@
6
6
  * - which@^1.0.0 (command resolution)
7
7
  * - env-path-key@^1.0.0 (cross-platform PATH key detection)
8
8
  */ import cp from 'child_process';
9
- import spawnSyncPolyfill from '../polyfills/spawnSync.js';
10
9
  import { hookChildProcess, notFoundError, verifyENOENT, verifyENOENTSync } from './enoent.js';
11
10
  import { parse } from './parse.js';
12
- const cpSpawnSync = cp.spawnSync || spawnSyncPolyfill;
11
+ import spawnSyncCompat from './spawnSync.js';
13
12
  function spawn(command, args, options) {
14
13
  const parsed = parse(command, args, options);
15
14
  const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);
@@ -18,7 +17,7 @@ function spawn(command, args, options) {
18
17
  }
19
18
  function spawnSync(command, args, options) {
20
19
  const parsed = parse(command, args, options);
21
- const result = cpSpawnSync(parsed.command, parsed.args, parsed.options);
20
+ const result = spawnSyncCompat(parsed.command, parsed.args, parsed.options);
22
21
  result.error = result.error || verifyENOENTSync(result.status, parsed);
23
22
  return result;
24
23
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/shim/index.ts"],"sourcesContent":["/**\n * Minimal cross-spawn shim for Windows compatibility on legacy Node.js\n *\n * This replaces the bundled cross-spawn v6.0.5 (~1,950 lines) with a minimal\n * implementation (~200 lines) that uses external dependencies:\n * - which@^1.0.0 (command resolution)\n * - env-path-key@^1.0.0 (cross-platform PATH key detection)\n */\n\nimport type { ChildProcess, SpawnSyncReturns } from 'child_process';\nimport cp from 'child_process';\nimport spawnSyncPolyfill from '../polyfills/spawnSync.ts';\nimport { hookChildProcess, notFoundError, verifyENOENT, verifyENOENTSync } from './enoent.ts';\nimport { parse } from './parse.ts';\nimport type { Parsed, ShimSpawnOptions } from './types.ts';\n\nconst cpSpawnSync = cp.spawnSync || spawnSyncPolyfill;\n\nfunction spawn(command: string, args?: string[] | ShimSpawnOptions, options?: ShimSpawnOptions): ChildProcess {\n const parsed = parse(command, args, options);\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n hookChildProcess(spawned, parsed);\n return spawned;\n}\n\nfunction spawnSync(command: string, args?: string[] | ShimSpawnOptions, options?: ShimSpawnOptions): SpawnSyncReturns<Buffer> {\n const parsed = parse(command, args, options);\n const result = cpSpawnSync(parsed.command, parsed.args, parsed.options) as SpawnSyncReturns<Buffer> & { error?: Error };\n result.error = result.error || verifyENOENTSync(result.status as number, parsed);\n return result;\n}\n\n// Main export\nexport default spawn;\n\n// Named exports matching cross-spawn's API\nexport { spawn };\nexport { spawnSync as sync };\n\n// Internal APIs used by crossSpawn.ts\nexport { parse as _parse };\nexport const _enoent = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n\n// Re-export types\nexport type { Parsed, ShimSpawnOptions };\n"],"names":["cp","spawnSyncPolyfill","hookChildProcess","notFoundError","verifyENOENT","verifyENOENTSync","parse","cpSpawnSync","spawnSync","spawn","command","args","options","parsed","spawned","result","error","status","sync","_parse","_enoent"],"mappings":"AAAA;;;;;;;CAOC,GAGD,OAAOA,QAAQ,gBAAgB;AAC/B,OAAOC,uBAAuB,4BAA4B;AAC1D,SAASC,gBAAgB,EAAEC,aAAa,EAAEC,YAAY,EAAEC,gBAAgB,QAAQ,cAAc;AAC9F,SAASC,KAAK,QAAQ,aAAa;AAGnC,MAAMC,cAAcP,GAAGQ,SAAS,IAAIP;AAEpC,SAASQ,MAAMC,OAAe,EAAEC,IAAkC,EAAEC,OAA0B;IAC5F,MAAMC,SAASP,MAAMI,SAASC,MAAMC;IACpC,MAAME,UAAUd,GAAGS,KAAK,CAACI,OAAOH,OAAO,EAAEG,OAAOF,IAAI,EAAEE,OAAOD,OAAO;IACpEV,iBAAiBY,SAASD;IAC1B,OAAOC;AACT;AAEA,SAASN,UAAUE,OAAe,EAAEC,IAAkC,EAAEC,OAA0B;IAChG,MAAMC,SAASP,MAAMI,SAASC,MAAMC;IACpC,MAAMG,SAASR,YAAYM,OAAOH,OAAO,EAAEG,OAAOF,IAAI,EAAEE,OAAOD,OAAO;IACtEG,OAAOC,KAAK,GAAGD,OAAOC,KAAK,IAAIX,iBAAiBU,OAAOE,MAAM,EAAYJ;IACzE,OAAOE;AACT;AAEA,cAAc;AACd,eAAeN,MAAM;AAErB,2CAA2C;AAC3C,SAASA,KAAK,GAAG;AACjB,SAASD,aAAaU,IAAI,GAAG;AAE7B,sCAAsC;AACtC,SAASZ,SAASa,MAAM,GAAG;AAC3B,OAAO,MAAMC,UAAU;IACrBlB;IACAE;IACAC;IACAF;AACF,EAAE"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/shim/index.ts"],"sourcesContent":["/**\n * Minimal cross-spawn shim for Windows compatibility on legacy Node.js\n *\n * This replaces the bundled cross-spawn v6.0.5 (~1,950 lines) with a minimal\n * implementation (~200 lines) that uses external dependencies:\n * - which@^1.0.0 (command resolution)\n * - env-path-key@^1.0.0 (cross-platform PATH key detection)\n */\n\nimport type { ChildProcess, SpawnSyncReturns } from 'child_process';\nimport cp from 'child_process';\nimport { hookChildProcess, notFoundError, verifyENOENT, verifyENOENTSync } from './enoent.ts';\nimport { parse } from './parse.ts';\nimport spawnSyncCompat from './spawnSync.ts';\nimport type { Parsed, ShimSpawnOptions } from './types.ts';\n\nfunction spawn(command: string, args?: string[] | ShimSpawnOptions, options?: ShimSpawnOptions): ChildProcess {\n const parsed = parse(command, args, options);\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n hookChildProcess(spawned, parsed);\n return spawned;\n}\n\nfunction spawnSync(command: string, args?: string[] | ShimSpawnOptions, options?: ShimSpawnOptions): SpawnSyncReturns<Buffer> {\n const parsed = parse(command, args, options);\n const result = spawnSyncCompat(parsed.command, parsed.args, parsed.options) as SpawnSyncReturns<Buffer> & { error?: Error };\n result.error = result.error || verifyENOENTSync(result.status as number, parsed);\n return result;\n}\n\n// Main export\nexport default spawn;\n\n// Named exports matching cross-spawn's API\nexport { spawn };\nexport { spawnSync as sync };\n\n// Internal APIs used by crossSpawn.ts\nexport { parse as _parse };\nexport const _enoent = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n\n// Re-export types\nexport type { Parsed, ShimSpawnOptions };\n"],"names":["cp","hookChildProcess","notFoundError","verifyENOENT","verifyENOENTSync","parse","spawnSyncCompat","spawn","command","args","options","parsed","spawned","spawnSync","result","error","status","sync","_parse","_enoent"],"mappings":"AAAA;;;;;;;CAOC,GAGD,OAAOA,QAAQ,gBAAgB;AAC/B,SAASC,gBAAgB,EAAEC,aAAa,EAAEC,YAAY,EAAEC,gBAAgB,QAAQ,cAAc;AAC9F,SAASC,KAAK,QAAQ,aAAa;AACnC,OAAOC,qBAAqB,iBAAiB;AAG7C,SAASC,MAAMC,OAAe,EAAEC,IAAkC,EAAEC,OAA0B;IAC5F,MAAMC,SAASN,MAAMG,SAASC,MAAMC;IACpC,MAAME,UAAUZ,GAAGO,KAAK,CAACI,OAAOH,OAAO,EAAEG,OAAOF,IAAI,EAAEE,OAAOD,OAAO;IACpET,iBAAiBW,SAASD;IAC1B,OAAOC;AACT;AAEA,SAASC,UAAUL,OAAe,EAAEC,IAAkC,EAAEC,OAA0B;IAChG,MAAMC,SAASN,MAAMG,SAASC,MAAMC;IACpC,MAAMI,SAASR,gBAAgBK,OAAOH,OAAO,EAAEG,OAAOF,IAAI,EAAEE,OAAOD,OAAO;IAC1EI,OAAOC,KAAK,GAAGD,OAAOC,KAAK,IAAIX,iBAAiBU,OAAOE,MAAM,EAAYL;IACzE,OAAOG;AACT;AAEA,cAAc;AACd,eAAeP,MAAM;AAErB,2CAA2C;AAC3C,SAASA,KAAK,GAAG;AACjB,SAASM,aAAaI,IAAI,GAAG;AAE7B,sCAAsC;AACtC,SAASZ,SAASa,MAAM,GAAG;AAC3B,OAAO,MAAMC,UAAU;IACrBlB;IACAE;IACAC;IACAF;AACF,EAAE"}
@@ -0,0 +1,2 @@
1
+ import type { SpawnResult } from '../types.js';
2
+ export default function spawnSync(cmd: string, args: string[], options?: object): SpawnResult;
@@ -0,0 +1,15 @@
1
+ import cp from 'child_process';
2
+ import { bind } from 'node-version-call-local';
3
+ import path from 'path';
4
+ import url from 'url';
5
+ const __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));
6
+ const workerPath = path.join(__dirname, '..', '..', 'cjs', 'spawn.js');
7
+ function run(cmd, args, options) {
8
+ return cp.spawnSync(cmd, args, options);
9
+ }
10
+ const worker = typeof cp.spawnSync === 'function' ? run : bind(process.version, workerPath, {
11
+ callbacks: true
12
+ });
13
+ export default function spawnSync(cmd, args, options) {
14
+ return worker(cmd, args, options || {});
15
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/shim/spawnSync.ts"],"sourcesContent":["import cp from 'child_process';\nimport { bind } from 'node-version-call-local';\nimport path from 'path';\nimport url from 'url';\nimport type { SpawnResult } from '../types.ts';\n\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\nconst workerPath = path.join(__dirname, '..', '..', 'cjs', 'spawn.js');\n\nfunction run(cmd: string, args: string[], options?: object): SpawnResult {\n return cp.spawnSync(cmd, args, options) as SpawnResult;\n}\n\nconst worker = typeof cp.spawnSync === 'function' ? run : bind(process.version, workerPath, { callbacks: true });\n\nexport default function spawnSync(cmd: string, args: string[], options?: object): SpawnResult {\n return worker(cmd, args, options || {}) as SpawnResult;\n}\n"],"names":["cp","bind","path","url","__dirname","dirname","__filename","fileURLToPath","workerPath","join","run","cmd","args","options","spawnSync","worker","process","version","callbacks"],"mappings":"AAAA,OAAOA,QAAQ,gBAAgB;AAC/B,SAASC,IAAI,QAAQ,0BAA0B;AAC/C,OAAOC,UAAU,OAAO;AACxB,OAAOC,SAAS,MAAM;AAGtB,MAAMC,YAAYF,KAAKG,OAAO,CAAC,OAAOC,eAAe,cAAcA,aAAaH,IAAII,aAAa,CAAC,YAAYJ,GAAG;AACjH,MAAMK,aAAaN,KAAKO,IAAI,CAACL,WAAW,MAAM,MAAM,OAAO;AAE3D,SAASM,IAAIC,GAAW,EAAEC,IAAc,EAAEC,OAAgB;IACxD,OAAOb,GAAGc,SAAS,CAACH,KAAKC,MAAMC;AACjC;AAEA,MAAME,SAAS,OAAOf,GAAGc,SAAS,KAAK,aAAaJ,MAAMT,KAAKe,QAAQC,OAAO,EAAET,YAAY;IAAEU,WAAW;AAAK;AAE9G,eAAe,SAASJ,UAAUH,GAAW,EAAEC,IAAc,EAAEC,OAAgB;IAC7E,OAAOE,OAAOJ,KAAKC,MAAMC,WAAW,CAAC;AACvC"}
@@ -1,6 +1,8 @@
1
1
  import spawnSync from './spawnSync.js';
2
2
  import type { SpawnCallback, SpawnOptions, SpawnResult } from './types.js';
3
- declare function spawn(command: string, args: string[], options?: SpawnOptions | SpawnCallback, callback?: SpawnCallback): undefined | Promise<SpawnResult>;
3
+ declare function spawn(command: string, args: string[], callback: SpawnCallback): void;
4
+ declare function spawn(command: string, args: string[], options: SpawnOptions, callback: SpawnCallback): void;
5
+ declare function spawn(command: string, args: string[], options?: SpawnOptions): Promise<SpawnResult>;
4
6
  declare namespace spawn {
5
7
  var worker: typeof import("./workers/async.js").default;
6
8
  var sync: typeof spawnSync;
package/dist/esm/spawn.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import crossSpawn from './crossSpawn.js';
2
2
  import spawnSync from './spawnSync.js';
3
3
  import worker from './workers/async.js';
4
- export default function spawn(command, args, options, callback) {
4
+ function spawn(command, args, options, callback) {
5
5
  if (typeof options === 'function') {
6
6
  callback = options;
7
7
  options = {};
@@ -14,3 +14,4 @@ export default function spawn(command, args, options, callback) {
14
14
  spawn.worker = worker;
15
15
  spawn.sync = spawnSync;
16
16
  spawn.crossSpawn = crossSpawn;
17
+ export default spawn;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/spawn.ts"],"sourcesContent":["import crossSpawn from './crossSpawn.ts';\nimport spawnSync from './spawnSync.ts';\nimport type { SpawnCallback, SpawnOptions, SpawnResult } from './types.ts';\nimport worker from './workers/async.ts';\n\nexport default function spawn(command: string, args: string[], options?: SpawnOptions | SpawnCallback, callback?: SpawnCallback): undefined | Promise<SpawnResult> {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n const cp = crossSpawn(command, args, options);\n\n if (typeof callback === 'function') return worker(cp, options, callback) as undefined;\n return new Promise((resolve, reject) => worker(cp, options, (err, res) => (err ? reject(err) : resolve(res))));\n}\nspawn.worker = worker;\nspawn.sync = spawnSync;\nspawn.crossSpawn = crossSpawn;\n"],"names":["crossSpawn","spawnSync","worker","spawn","command","args","options","callback","cp","Promise","resolve","reject","err","res","sync"],"mappings":"AAAA,OAAOA,gBAAgB,kBAAkB;AACzC,OAAOC,eAAe,iBAAiB;AAEvC,OAAOC,YAAY,qBAAqB;AAExC,eAAe,SAASC,MAAMC,OAAe,EAAEC,IAAc,EAAEC,OAAsC,EAAEC,QAAwB;IAC7H,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IACtB,MAAME,KAAKR,WAAWI,SAASC,MAAMC;IAErC,IAAI,OAAOC,aAAa,YAAY,OAAOL,OAAOM,IAAIF,SAASC;IAC/D,OAAO,IAAIE,QAAQ,CAACC,SAASC,SAAWT,OAAOM,IAAIF,SAAS,CAACM,KAAKC,MAASD,MAAMD,OAAOC,OAAOF,QAAQG;AACzG;AACAV,MAAMD,MAAM,GAAGA;AACfC,MAAMW,IAAI,GAAGb;AACbE,MAAMH,UAAU,GAAGA"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/spawn.ts"],"sourcesContent":["import crossSpawn from './crossSpawn.ts';\nimport spawnSync from './spawnSync.ts';\nimport type { SpawnCallback, SpawnOptions, SpawnResult } from './types.ts';\nimport worker from './workers/async.ts';\n\nfunction spawn(command: string, args: string[], callback: SpawnCallback): void;\nfunction spawn(command: string, args: string[], options: SpawnOptions, callback: SpawnCallback): void;\nfunction spawn(command: string, args: string[], options?: SpawnOptions): Promise<SpawnResult>;\nfunction spawn(command: string, args: string[], options?: SpawnOptions | SpawnCallback, callback?: SpawnCallback): void | Promise<SpawnResult> {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n const cp = crossSpawn(command, args, options);\n\n if (typeof callback === 'function') return worker(cp, options, callback);\n return new Promise((resolve, reject) => worker(cp, options as SpawnOptions, (err, res) => (err ? reject(err) : resolve(res))));\n}\nspawn.worker = worker;\nspawn.sync = spawnSync;\nspawn.crossSpawn = crossSpawn;\n\nexport default spawn;\n"],"names":["crossSpawn","spawnSync","worker","spawn","command","args","options","callback","cp","Promise","resolve","reject","err","res","sync"],"mappings":"AAAA,OAAOA,gBAAgB,kBAAkB;AACzC,OAAOC,eAAe,iBAAiB;AAEvC,OAAOC,YAAY,qBAAqB;AAKxC,SAASC,MAAMC,OAAe,EAAEC,IAAc,EAAEC,OAAsC,EAAEC,QAAwB;IAC9G,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IACtB,MAAME,KAAKR,WAAWI,SAASC,MAAMC;IAErC,IAAI,OAAOC,aAAa,YAAY,OAAOL,OAAOM,IAAIF,SAASC;IAC/D,OAAO,IAAIE,QAAQ,CAACC,SAASC,SAAWT,OAAOM,IAAIF,SAAyB,CAACM,KAAKC,MAASD,MAAMD,OAAOC,OAAOF,QAAQG;AACzH;AACAV,MAAMD,MAAM,GAAGA;AACfC,MAAMW,IAAI,GAAGb;AACbE,MAAMH,UAAU,GAAGA;AAEnB,eAAeG,MAAM"}
@@ -32,7 +32,7 @@ export interface SpawnError extends NotFoundError, SpawnResult {
32
32
  }
33
33
  export type SpawnCallback = (err?: SpawnError, res?: SpawnResult) => void;
34
34
  export interface Enoent {
35
- hookChildProcess: (cp: ChildProcess, parsed: Parsed) => undefined;
35
+ hookChildProcess: (cp: ChildProcess, parsed: Parsed) => void;
36
36
  verifyENOENT: (status: number, parsed: Parsed) => NotFoundError | null;
37
37
  verifyENOENTSync: (status: number, parsed: Parsed) => NotFoundError | null;
38
38
  notFoundError: (cp: ChildProcess, parsed: Parsed) => NotFoundError;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/types.ts"],"sourcesContent":["import type * as child_process from 'child_process';\n\nexport type ChildProcess = child_process.ChildProcess;\nexport interface SpawnOptions extends child_process.SpawnOptions {\n encoding?: BufferEncoding;\n env?: NodeJS.ProcessEnv;\n input?: string | Buffer;\n}\nexport interface SpawnSyncOptions extends child_process.SpawnSyncOptions {\n encoding?: BufferEncoding;\n env?: NodeJS.ProcessEnv;\n input?: string | Buffer;\n}\nexport type SpawnResult = child_process.SpawnSyncReturns<string | Buffer>;\n\nexport interface Parsed {\n command: string;\n args: string[];\n options: SpawnOptions | SpawnSyncOptions;\n file?: string | null;\n original?: {\n command: string;\n args: string[];\n };\n}\n\nexport interface NotFoundError extends Error {\n code?: string;\n errno?: string;\n syscall?: string;\n path?: string;\n spawnargs?: string[];\n}\nexport interface SpawnError extends NotFoundError, SpawnResult {}\n\nexport type SpawnCallback = (err?: SpawnError, res?: SpawnResult) => void;\n\nexport interface Enoent {\n hookChildProcess: (cp: ChildProcess, parsed: Parsed) => undefined;\n verifyENOENT: (status: number, parsed: Parsed) => NotFoundError | null;\n verifyENOENTSync: (status: number, parsed: Parsed) => NotFoundError | null;\n notFoundError: (cp: ChildProcess, parsed: Parsed) => NotFoundError;\n}\n"],"names":[],"mappings":"AAqCA,WAKC"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/types.ts"],"sourcesContent":["import type * as child_process from 'child_process';\n\nexport type ChildProcess = child_process.ChildProcess;\nexport interface SpawnOptions extends child_process.SpawnOptions {\n encoding?: BufferEncoding;\n env?: NodeJS.ProcessEnv;\n input?: string | Buffer;\n}\nexport interface SpawnSyncOptions extends child_process.SpawnSyncOptions {\n encoding?: BufferEncoding;\n env?: NodeJS.ProcessEnv;\n input?: string | Buffer;\n}\nexport type SpawnResult = child_process.SpawnSyncReturns<string | Buffer>;\n\nexport interface Parsed {\n command: string;\n args: string[];\n options: SpawnOptions | SpawnSyncOptions;\n file?: string | null;\n original?: {\n command: string;\n args: string[];\n };\n}\n\nexport interface NotFoundError extends Error {\n code?: string;\n errno?: string;\n syscall?: string;\n path?: string;\n spawnargs?: string[];\n}\nexport interface SpawnError extends NotFoundError, SpawnResult {}\n\nexport type SpawnCallback = (err?: SpawnError, res?: SpawnResult) => void;\n\nexport interface Enoent {\n hookChildProcess: (cp: ChildProcess, parsed: Parsed) => void;\n verifyENOENT: (status: number, parsed: Parsed) => NotFoundError | null;\n verifyENOENTSync: (status: number, parsed: Parsed) => NotFoundError | null;\n notFoundError: (cp: ChildProcess, parsed: Parsed) => NotFoundError;\n}\n"],"names":[],"mappings":"AAqCA,WAKC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/workers/async.ts"],"sourcesContent":["import oo from 'on-one';\nimport { spawnKeys } from '../constants.ts';\n\nimport type { ChildProcess, SpawnCallback, SpawnError, SpawnOptions, SpawnResult } from '../types.ts';\n\nexport default function worker(cp: ChildProcess, options?: SpawnOptions | SpawnCallback, callback?: SpawnCallback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n // collect output\n const res = { pid: 0, output: [], stdout: null, stderr: null, status: null, signal: null } as SpawnResult;\n const stdout: Buffer[] = [];\n const stderr: Buffer[] = [];\n if (options.encoding && cp.stdout) cp.stdout.on('data', stdout.push.bind(stdout));\n if (options.encoding && cp.stderr) cp.stderr.on('data', stderr.push.bind(stderr));\n\n // some versions of node emit both an error and close\n oo(cp, ['error', 'close'], (err: Error | null, status: number | null, signal: NodeJS.Signals | null) => {\n if (err) {\n if ((err as SpawnError).code === 'OK') return; // ignore\n return callback(err as SpawnError);\n }\n\n // prepare result\n res.pid = cp.pid;\n res.status = status;\n res.signal = signal;\n if (options.encoding && cp.stdout) {\n res.stdout = Buffer.concat(stdout);\n if (options.encoding !== 'binary') res.stdout = res.stdout.toString(options.encoding);\n }\n if (options.encoding && cp.stderr) {\n res.stderr = Buffer.concat(stderr);\n if (options.encoding !== 'binary') res.stderr = res.stderr.toString(options.encoding);\n }\n res.output = [null, res.stdout, res.stderr];\n if (res.status === null) res.status = 0; // patch: early node on windows could return null\n\n // process errors\n const exitErr = res.status !== 0 ? new Error(`Non-zero exit code: ${res.status}`) : null;\n if (exitErr) {\n for (const key in res) {\n if (spawnKeys.indexOf(key) < 0) continue;\n exitErr[key] = Buffer.isBuffer(res[key]) ? res[key].toString(options.encoding || 'utf8') : res[key];\n }\n }\n exitErr ? callback(exitErr as SpawnError) : callback(null, res);\n });\n\n // pipe input\n if (options.input && (typeof options.input === 'string' || Buffer.isBuffer(options.input))) {\n cp.stdin.end(options.input);\n }\n}\n"],"names":["oo","spawnKeys","worker","cp","options","callback","res","pid","output","stdout","stderr","status","signal","encoding","on","push","bind","err","code","Buffer","concat","toString","exitErr","Error","key","indexOf","isBuffer","input","stdin","end"],"mappings":"AAAA,OAAOA,QAAQ,SAAS;AACxB,SAASC,SAAS,QAAQ,kBAAkB;AAI5C,eAAe,SAASC,OAAOC,EAAgB,EAAEC,OAAsC,EAAEC,QAAwB;IAC/G,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,iBAAiB;IACjB,MAAME,MAAM;QAAEC,KAAK;QAAGC,QAAQ,EAAE;QAAEC,QAAQ;QAAMC,QAAQ;QAAMC,QAAQ;QAAMC,QAAQ;IAAK;IACzF,MAAMH,SAAmB,EAAE;IAC3B,MAAMC,SAAmB,EAAE;IAC3B,IAAIN,QAAQS,QAAQ,IAAIV,GAAGM,MAAM,EAAEN,GAAGM,MAAM,CAACK,EAAE,CAAC,QAAQL,OAAOM,IAAI,CAACC,IAAI,CAACP;IACzE,IAAIL,QAAQS,QAAQ,IAAIV,GAAGO,MAAM,EAAEP,GAAGO,MAAM,CAACI,EAAE,CAAC,QAAQJ,OAAOK,IAAI,CAACC,IAAI,CAACN;IAEzE,qDAAqD;IACrDV,GAAGG,IAAI;QAAC;QAAS;KAAQ,EAAE,CAACc,KAAmBN,QAAuBC;QACpE,IAAIK,KAAK;YACP,IAAI,AAACA,IAAmBC,IAAI,KAAK,MAAM,QAAQ,SAAS;YACxD,OAAOb,SAASY;QAClB;QAEA,iBAAiB;QACjBX,IAAIC,GAAG,GAAGJ,GAAGI,GAAG;QAChBD,IAAIK,MAAM,GAAGA;QACbL,IAAIM,MAAM,GAAGA;QACb,IAAIR,QAAQS,QAAQ,IAAIV,GAAGM,MAAM,EAAE;YACjCH,IAAIG,MAAM,GAAGU,OAAOC,MAAM,CAACX;YAC3B,IAAIL,QAAQS,QAAQ,KAAK,UAAUP,IAAIG,MAAM,GAAGH,IAAIG,MAAM,CAACY,QAAQ,CAACjB,QAAQS,QAAQ;QACtF;QACA,IAAIT,QAAQS,QAAQ,IAAIV,GAAGO,MAAM,EAAE;YACjCJ,IAAII,MAAM,GAAGS,OAAOC,MAAM,CAACV;YAC3B,IAAIN,QAAQS,QAAQ,KAAK,UAAUP,IAAII,MAAM,GAAGJ,IAAII,MAAM,CAACW,QAAQ,CAACjB,QAAQS,QAAQ;QACtF;QACAP,IAAIE,MAAM,GAAG;YAAC;YAAMF,IAAIG,MAAM;YAAEH,IAAII,MAAM;SAAC;QAC3C,IAAIJ,IAAIK,MAAM,KAAK,MAAML,IAAIK,MAAM,GAAG,GAAG,iDAAiD;QAE1F,iBAAiB;QACjB,MAAMW,UAAUhB,IAAIK,MAAM,KAAK,IAAI,IAAIY,MAAM,CAAC,oBAAoB,EAAEjB,IAAIK,MAAM,EAAE,IAAI;QACpF,IAAIW,SAAS;YACX,IAAK,MAAME,OAAOlB,IAAK;gBACrB,IAAIL,UAAUwB,OAAO,CAACD,OAAO,GAAG;gBAChCF,OAAO,CAACE,IAAI,GAAGL,OAAOO,QAAQ,CAACpB,GAAG,CAACkB,IAAI,IAAIlB,GAAG,CAACkB,IAAI,CAACH,QAAQ,CAACjB,QAAQS,QAAQ,IAAI,UAAUP,GAAG,CAACkB,IAAI;YACrG;QACF;QACAF,UAAUjB,SAASiB,WAAyBjB,SAAS,MAAMC;IAC7D;IAEA,aAAa;IACb,IAAIF,QAAQuB,KAAK,IAAK,CAAA,OAAOvB,QAAQuB,KAAK,KAAK,YAAYR,OAAOO,QAAQ,CAACtB,QAAQuB,KAAK,CAAA,GAAI;QAC1FxB,GAAGyB,KAAK,CAACC,GAAG,CAACzB,QAAQuB,KAAK;IAC5B;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/workers/async.ts"],"sourcesContent":["import oo from 'on-one';\nimport { spawnKeys } from '../constants.ts';\n\nimport type { ChildProcess, SpawnCallback, SpawnError, SpawnOptions, SpawnResult } from '../types.ts';\n\nexport default function worker(cp: ChildProcess, options?: SpawnOptions | SpawnCallback, callback?: SpawnCallback): void {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n // collect output\n const res = { pid: 0, output: [], stdout: null, stderr: null, status: null, signal: null } as SpawnResult;\n const stdout: Buffer[] = [];\n const stderr: Buffer[] = [];\n if (options.encoding && cp.stdout) cp.stdout.on('data', stdout.push.bind(stdout));\n if (options.encoding && cp.stderr) cp.stderr.on('data', stderr.push.bind(stderr));\n\n // some versions of node emit both an error and close\n oo(cp, ['error', 'close'], (err: Error | null, status: number | null, signal: NodeJS.Signals | null) => {\n if (err) {\n if ((err as SpawnError).code === 'OK') return; // ignore\n return callback(err as SpawnError);\n }\n\n // prepare result\n res.pid = cp.pid;\n res.status = status;\n res.signal = signal;\n if (options.encoding && cp.stdout) {\n res.stdout = Buffer.concat(stdout);\n if (options.encoding !== 'binary') res.stdout = res.stdout.toString(options.encoding);\n }\n if (options.encoding && cp.stderr) {\n res.stderr = Buffer.concat(stderr);\n if (options.encoding !== 'binary') res.stderr = res.stderr.toString(options.encoding);\n }\n res.output = [null, res.stdout, res.stderr];\n if (res.status === null) res.status = 0; // patch: early node on windows could return null\n\n // process errors\n const exitErr = res.status !== 0 ? new Error(`Non-zero exit code: ${res.status}`) : null;\n if (exitErr) {\n for (const key in res) {\n if (spawnKeys.indexOf(key) < 0) continue;\n exitErr[key] = Buffer.isBuffer(res[key]) ? res[key].toString(options.encoding || 'utf8') : res[key];\n }\n }\n exitErr ? callback(exitErr as SpawnError) : callback(null, res);\n });\n\n // pipe input\n if (options.input && (typeof options.input === 'string' || Buffer.isBuffer(options.input))) {\n cp.stdin.end(options.input);\n }\n}\n"],"names":["oo","spawnKeys","worker","cp","options","callback","res","pid","output","stdout","stderr","status","signal","encoding","on","push","bind","err","code","Buffer","concat","toString","exitErr","Error","key","indexOf","isBuffer","input","stdin","end"],"mappings":"AAAA,OAAOA,QAAQ,SAAS;AACxB,SAASC,SAAS,QAAQ,kBAAkB;AAI5C,eAAe,SAASC,OAAOC,EAAgB,EAAEC,OAAsC,EAAEC,QAAwB;IAC/G,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,iBAAiB;IACjB,MAAME,MAAM;QAAEC,KAAK;QAAGC,QAAQ,EAAE;QAAEC,QAAQ;QAAMC,QAAQ;QAAMC,QAAQ;QAAMC,QAAQ;IAAK;IACzF,MAAMH,SAAmB,EAAE;IAC3B,MAAMC,SAAmB,EAAE;IAC3B,IAAIN,QAAQS,QAAQ,IAAIV,GAAGM,MAAM,EAAEN,GAAGM,MAAM,CAACK,EAAE,CAAC,QAAQL,OAAOM,IAAI,CAACC,IAAI,CAACP;IACzE,IAAIL,QAAQS,QAAQ,IAAIV,GAAGO,MAAM,EAAEP,GAAGO,MAAM,CAACI,EAAE,CAAC,QAAQJ,OAAOK,IAAI,CAACC,IAAI,CAACN;IAEzE,qDAAqD;IACrDV,GAAGG,IAAI;QAAC;QAAS;KAAQ,EAAE,CAACc,KAAmBN,QAAuBC;QACpE,IAAIK,KAAK;YACP,IAAI,AAACA,IAAmBC,IAAI,KAAK,MAAM,QAAQ,SAAS;YACxD,OAAOb,SAASY;QAClB;QAEA,iBAAiB;QACjBX,IAAIC,GAAG,GAAGJ,GAAGI,GAAG;QAChBD,IAAIK,MAAM,GAAGA;QACbL,IAAIM,MAAM,GAAGA;QACb,IAAIR,QAAQS,QAAQ,IAAIV,GAAGM,MAAM,EAAE;YACjCH,IAAIG,MAAM,GAAGU,OAAOC,MAAM,CAACX;YAC3B,IAAIL,QAAQS,QAAQ,KAAK,UAAUP,IAAIG,MAAM,GAAGH,IAAIG,MAAM,CAACY,QAAQ,CAACjB,QAAQS,QAAQ;QACtF;QACA,IAAIT,QAAQS,QAAQ,IAAIV,GAAGO,MAAM,EAAE;YACjCJ,IAAII,MAAM,GAAGS,OAAOC,MAAM,CAACV;YAC3B,IAAIN,QAAQS,QAAQ,KAAK,UAAUP,IAAII,MAAM,GAAGJ,IAAII,MAAM,CAACW,QAAQ,CAACjB,QAAQS,QAAQ;QACtF;QACAP,IAAIE,MAAM,GAAG;YAAC;YAAMF,IAAIG,MAAM;YAAEH,IAAII,MAAM;SAAC;QAC3C,IAAIJ,IAAIK,MAAM,KAAK,MAAML,IAAIK,MAAM,GAAG,GAAG,iDAAiD;QAE1F,iBAAiB;QACjB,MAAMW,UAAUhB,IAAIK,MAAM,KAAK,IAAI,IAAIY,MAAM,CAAC,oBAAoB,EAAEjB,IAAIK,MAAM,EAAE,IAAI;QACpF,IAAIW,SAAS;YACX,IAAK,MAAME,OAAOlB,IAAK;gBACrB,IAAIL,UAAUwB,OAAO,CAACD,OAAO,GAAG;gBAChCF,OAAO,CAACE,IAAI,GAAGL,OAAOO,QAAQ,CAACpB,GAAG,CAACkB,IAAI,IAAIlB,GAAG,CAACkB,IAAI,CAACH,QAAQ,CAACjB,QAAQS,QAAQ,IAAI,UAAUP,GAAG,CAACkB,IAAI;YACrG;QACF;QACAF,UAAUjB,SAASiB,WAAyBjB,SAAS,MAAMC;IAC7D;IAEA,aAAa;IACb,IAAIF,QAAQuB,KAAK,IAAK,CAAA,OAAOvB,QAAQuB,KAAK,KAAK,YAAYR,OAAOO,QAAQ,CAACtB,QAAQuB,KAAK,CAAA,GAAI;QAC1FxB,GAAGyB,KAAK,CAACC,GAAG,CAACzB,QAAQuB,KAAK;IAC5B;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cross-spawn-cb",
3
- "version": "2.5.3",
3
+ "version": "3.1.0",
4
4
  "description": "Cross spawn with a completion callback",
5
5
  "keywords": [
6
6
  "cross-spawn",
@@ -37,9 +37,9 @@
37
37
  "dependencies": {
38
38
  "cross-spawn": "^7.0.6",
39
39
  "env-path-key": "^1.0.0",
40
- "function-exec-sync": "^1.0.0",
40
+ "node-version-call-local": "^0.3.0",
41
41
  "on-one": "^1.0.0",
42
- "which": "^1.0.0"
42
+ "which": "1.3.1"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/mocha": "*",
@@ -52,7 +52,7 @@
52
52
  "node-version-utils": "^1.0.2",
53
53
  "pinkie-promise": "*",
54
54
  "ts-dev-stack": "*",
55
- "tsds-config": "*"
55
+ "tsds-config": "^1.0.4"
56
56
  },
57
57
  "engines": {
58
58
  "node": ">=0.8"
@@ -1,2 +0,0 @@
1
- import type { SpawnResult } from '../types.js';
2
- export default function spawnSyncPolyfill(cmd: string, args: string[], options?: object): SpawnResult;
@@ -1,2 +0,0 @@
1
- import type { SpawnResult } from '../types.js';
2
- export default function spawnSyncPolyfill(cmd: string, args: string[], options?: object): SpawnResult;
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/polyfills/spawnSync.ts"],"sourcesContent":["import Module from 'module';\nimport path from 'path';\nimport url from 'url';\nimport type { SpawnResult } from '../types.ts';\n\n// CJS/ESM compatibility\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\n// Path is relative to dist/cjs/polyfills/ at runtime\nconst workerPath = path.join(__dirname, '..', '..', 'cjs', 'spawn.js');\n\nlet functionExec = null; // break dependencies\nexport default function spawnSyncPolyfill(cmd: string, args: string[], options?: object): SpawnResult {\n if (!functionExec) functionExec = _require('function-exec-sync');\n return functionExec?.({ callbacks: true }, workerPath, cmd, args, options || {});\n}\n"],"names":["spawnSyncPolyfill","_require","require","Module","createRequire","__dirname","path","dirname","__filename","url","fileURLToPath","workerPath","join","functionExec","cmd","args","options","callbacks"],"mappings":";;;;+BAaA;;;eAAwBA;;;6DAbL;2DACF;0DACD;;;;;;AAGhB,wBAAwB;AACxB,IAAMC,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;AAC1F,IAAMG,YAAYC,aAAI,CAACC,OAAO,CAAC,OAAOC,eAAe,cAAcA,aAAaC,YAAG,CAACC,aAAa,CAAC;AAElG,qDAAqD;AACrD,IAAMC,aAAaL,aAAI,CAACM,IAAI,CAACP,WAAW,MAAM,MAAM,OAAO;AAE3D,IAAIQ,eAAe,MAAM,qBAAqB;AAC/B,SAASb,kBAAkBc,GAAW,EAAEC,IAAc,EAAEC,OAAgB;IACrF,IAAI,CAACH,cAAcA,eAAeZ,SAAS;IAC3C,OAAOY,yBAAAA,mCAAAA,aAAe;QAAEI,WAAW;IAAK,GAAGN,YAAYG,KAAKC,MAAMC,WAAW,CAAC;AAChF"}
@@ -1,2 +0,0 @@
1
- import type { SpawnResult } from '../types.js';
2
- export default function spawnSyncPolyfill(cmd: string, args: string[], options?: object): SpawnResult;
@@ -1,15 +0,0 @@
1
- import Module from 'module';
2
- import path from 'path';
3
- import url from 'url';
4
- // CJS/ESM compatibility
5
- const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;
6
- const __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));
7
- // Path is relative to dist/cjs/polyfills/ at runtime
8
- const workerPath = path.join(__dirname, '..', '..', 'cjs', 'spawn.js');
9
- let functionExec = null; // break dependencies
10
- export default function spawnSyncPolyfill(cmd, args, options) {
11
- if (!functionExec) functionExec = _require('function-exec-sync');
12
- return functionExec === null || functionExec === void 0 ? void 0 : functionExec({
13
- callbacks: true
14
- }, workerPath, cmd, args, options || {});
15
- }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/compat/cross-spawn-cb/src/polyfills/spawnSync.ts"],"sourcesContent":["import Module from 'module';\nimport path from 'path';\nimport url from 'url';\nimport type { SpawnResult } from '../types.ts';\n\n// CJS/ESM compatibility\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\n// Path is relative to dist/cjs/polyfills/ at runtime\nconst workerPath = path.join(__dirname, '..', '..', 'cjs', 'spawn.js');\n\nlet functionExec = null; // break dependencies\nexport default function spawnSyncPolyfill(cmd: string, args: string[], options?: object): SpawnResult {\n if (!functionExec) functionExec = _require('function-exec-sync');\n return functionExec?.({ callbacks: true }, workerPath, cmd, args, options || {});\n}\n"],"names":["Module","path","url","_require","require","createRequire","__dirname","dirname","__filename","fileURLToPath","workerPath","join","functionExec","spawnSyncPolyfill","cmd","args","options","callbacks"],"mappings":"AAAA,OAAOA,YAAY,SAAS;AAC5B,OAAOC,UAAU,OAAO;AACxB,OAAOC,SAAS,MAAM;AAGtB,wBAAwB;AACxB,MAAMC,WAAW,OAAOC,YAAY,cAAcJ,OAAOK,aAAa,CAAC,YAAYH,GAAG,IAAIE;AAC1F,MAAME,YAAYL,KAAKM,OAAO,CAAC,OAAOC,eAAe,cAAcA,aAAaN,IAAIO,aAAa,CAAC,YAAYP,GAAG;AAEjH,qDAAqD;AACrD,MAAMQ,aAAaT,KAAKU,IAAI,CAACL,WAAW,MAAM,MAAM,OAAO;AAE3D,IAAIM,eAAe,MAAM,qBAAqB;AAC9C,eAAe,SAASC,kBAAkBC,GAAW,EAAEC,IAAc,EAAEC,OAAgB;IACrF,IAAI,CAACJ,cAAcA,eAAeT,SAAS;IAC3C,OAAOS,yBAAAA,mCAAAA,aAAe;QAAEK,WAAW;IAAK,GAAGP,YAAYI,KAAKC,MAAMC,WAAW,CAAC;AAChF"}