teen_process 2.3.0 → 2.3.1

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.
package/README.md CHANGED
@@ -111,6 +111,21 @@ async function tailFileForABit () {
111
111
 
112
112
  Errors with start/stop are thrown in the calling context.
113
113
 
114
+ ### Options
115
+
116
+ The instance constructor accepts same options that Node.js's
117
+ [spawn](https://nodejs.org/api/child_process.html#child_processspawncommand-args-options)
118
+ API plus some custom options:
119
+
120
+ * `isBuffer` - If set to `true` then both stdout and stderr chunks are delivered
121
+ as buffers rather than strings to the following entities:
122
+ - `startDetector` argument
123
+ - `output` event
124
+ * `encoding` - If provided then arguments of the `startDetector` argument and of the
125
+ `output` event will be encoded to strings using this given encoding, unless `isBuffer`
126
+ is set to `true`. If no explicit encoding is provided then `utf8` encoding is used by
127
+ default.
128
+
114
129
  ### Events
115
130
 
116
131
  You can listen to 8 events:
@@ -151,11 +166,9 @@ proc.on('output', (stdout, stderr) => {
151
166
  console.log(`stderr: ${stderr}`);
152
167
  });
153
168
 
154
- // lines-stderr is just the same
155
- proc.on('lines-stdout', lines => {
156
- console.log(lines);
157
- // ['foo', 'bar', 'baz']
158
- // automatically handles rejoining lines across stream chunks
169
+ // line-stderr is just the same
170
+ proc.on('line-stdout', (line) => {
171
+ console.log(line);
159
172
  });
160
173
 
161
174
  // stream-line gives you one line at a time, with [STDOUT] or [STDERR]
@@ -1,13 +1,20 @@
1
- export default SubProcess;
2
- export type StartDetector = (stdout: string, stderr?: string | undefined) => any;
3
- export class SubProcess extends events<[never]> {
1
+ /**
2
+ * @template {SubProcessOptions} TSubProcessOptions
3
+ */
4
+ export class SubProcess<TSubProcessOptions extends SubProcessOptions> extends EventEmitter<[never]> {
4
5
  /**
5
6
  * @param {string} cmd
6
- * @param {string[]} [args]
7
- * @param {any} [opts]
7
+ * @param {string[]} [args=[]]
8
+ * @param {TSubProcessOptions} [opts]
9
+ */
10
+ constructor(cmd: string, args?: string[], opts?: TSubProcessOptions);
11
+ /**
12
+ * @callback StartDetector
13
+ * @param {TSubProcessOptions extends TIsBufferOpts ? Buffer : string} stdout
14
+ * @param {TSubProcessOptions extends TIsBufferOpts ? Buffer : string} [stderr]
15
+ * @returns {any}
8
16
  */
9
- constructor(cmd: string, args?: string[], opts?: any);
10
- /** @type {import('child_process').ChildProcess?} */
17
+ /** @type {import('child_process').ChildProcess | null} */
11
18
  proc: import("child_process").ChildProcess | null;
12
19
  /** @type {string[]} */
13
20
  args: string[];
@@ -16,9 +23,9 @@ export class SubProcess extends events<[never]> {
16
23
  */
17
24
  cmd: string;
18
25
  /**
19
- * @type {any}
26
+ * @type {SubProcessOptions}
20
27
  */
21
- opts: any;
28
+ opts: SubProcessOptions;
22
29
  /**
23
30
  * @type {boolean}
24
31
  */
@@ -43,7 +50,7 @@ export class SubProcess extends events<[never]> {
43
50
  * @param {boolean} detach
44
51
  * @returns {Promise<void>}
45
52
  */
46
- start(startDetector?: StartDetector | (number | null), timeoutMs?: number | null, detach?: boolean): Promise<void>;
53
+ start(startDetector?: ((stdout: TSubProcessOptions extends TIsBufferOpts ? Buffer : string, stderr?: (TSubProcessOptions extends TIsBufferOpts ? Buffer<ArrayBufferLike> : string) | undefined) => any) | (number | null), timeoutMs?: number | null, detach?: boolean): Promise<void>;
47
54
  /**
48
55
  * @deprecated This method is deprecated and will be removed
49
56
  */
@@ -59,5 +66,14 @@ export class SubProcess extends events<[never]> {
59
66
  detachProcess(): void;
60
67
  get pid(): number | null | undefined;
61
68
  }
62
- import events from 'events';
69
+ export default SubProcess;
70
+ export type SubProcessCustomOptions = {
71
+ isBuffer?: boolean | undefined;
72
+ encoding?: string | undefined;
73
+ };
74
+ export type SubProcessOptions = SubProcessCustomOptions & import("child_process").SpawnOptionsWithoutStdio;
75
+ export type TIsBufferOpts = {
76
+ isBuffer: true;
77
+ };
78
+ import { EventEmitter } from 'events';
63
79
  //# sourceMappingURL=subprocess.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subprocess.d.ts","sourceRoot":"","sources":["../../lib/subprocess.js"],"names":[],"mappings":";qCAqTW,MAAM,kCAEJ,GAAG;AA9ShB;IA4BE;;;;OAIG;IACH,iBAJW,MAAM,SACN,MAAM,EAAE,SACR,GAAG,EAgBb;IA7CD,oDAAoD;IACpD,MADW,OAAO,eAAe,EAAE,YAAY,OAAC,CAC3C;IAEL,uBAAuB;IACvB,MADW,MAAM,EAAE,CACd;IAEL;;OAEG;IACH,KAFU,MAAM,CAEZ;IAEJ;;MAEE;IACF,MAFU,GAAG,CAER;IAEL;;OAEG;IACH,eAFU,OAAO,CAEH;IAEd;;OAEG;IACH,KAFU,MAAM,CAEZ;IAuBJ,yBAGC;IAED;;;;OAIG;IACH,sBAHW,MAAM,SACN,QAAQ,CAAC,MAAM,CAAC,GAAC,MAAM,QAYjC;IAED;;;;;;;;OAQG;IACH,sBALW,aAAa,IAAC,MAAM,OAAC,CAAA,cACrB,MAAM,OAAC,WACP,OAAO,GACL,OAAO,CAAC,IAAI,CAAC,CAuJzB;IAED;;OAEG;IACH,wBAGC;IAED;;;;;OAKG;IACH,cAJW,MAAM,CAAC,OAAO,YACd,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAgBzB;IAED,gDAcC;IAKD,sBAQC;IAED,qCAEC;CACF;mBA7SkB,QAAQ"}
1
+ {"version":3,"file":"subprocess.d.ts","sourceRoot":"","sources":["../../lib/subprocess.js"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAFiC,kBAAkB,SAArC,iBAAkB;IA+B9B;;;;OAIG;IACH,iBAJW,MAAM,SACN,MAAM,EAAE,SACR,kBAAkB,EAgB5B;IA/CD;;;;;OAKG;IAEH,0DAA0D;IAC1D,MADW,OAAO,eAAe,EAAE,YAAY,GAAG,IAAI,CACjD;IACL,uBAAuB;IACvB,MADW,MAAM,EAAE,CACd;IACL;;OAEG;IACH,KAFU,MAAM,CAEZ;IACJ;;MAEE;IACF,MAFU,iBAAiB,CAEtB;IACL;;OAEG;IACH,eAFU,OAAO,CAEH;IACd;;OAEG;IACH,KAFU,MAAM,CAEZ;IAuBJ,yBAGC;IAED;;;;OAIG;IACH,sBAHW,MAAM,SACN,QAAQ,CAAC,MAAM,CAAC,GAAC,MAAM,QAYjC;IAED;;;;;;;;OAQG;IACH,sBALW,UAzEA,kBAAkB,SAAS,aAAa,GAAG,MAAM,GAAG,MAAM,yGAExD,GAAG,KAuES,MAAM,OAAC,CAAA,cACrB,MAAM,OAAC,WACP,OAAO,GACL,OAAO,CAAC,IAAI,CAAC,CAiKzB;IAED;;OAEG;IACH,wBAGC;IAED;;;;;OAKG;IACH,cAJW,MAAM,CAAC,OAAO,YACd,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAgBzB;IAED,gDAcC;IAKD,sBAQC;IAED,qCAEC;CACF;;;;;;gCAWY,uBAAuB,GAAG,OAAO,eAAe,EAAE,wBAAwB;4BAC1E;IAAC,QAAQ,EAAE,IAAI,CAAA;CAAC;6BAtUA,QAAQ"}
@@ -5,20 +5,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.SubProcess = void 0;
7
7
  const child_process_1 = require("child_process");
8
- const events_1 = __importDefault(require("events"));
9
- const { EventEmitter } = events_1.default;
8
+ const events_1 = require("events");
10
9
  const bluebird_1 = __importDefault(require("bluebird"));
11
10
  const shell_quote_1 = require("shell-quote");
12
11
  const lodash_1 = __importDefault(require("lodash"));
13
12
  const helpers_1 = require("./helpers");
14
13
  const node_readline_1 = require("node:readline");
15
- class SubProcess extends EventEmitter {
14
+ /**
15
+ * @template {SubProcessOptions} TSubProcessOptions
16
+ */
17
+ class SubProcess extends events_1.EventEmitter {
16
18
  /**
17
19
  * @param {string} cmd
18
- * @param {string[]} [args]
19
- * @param {any} [opts]
20
+ * @param {string[]} [args=[]]
21
+ * @param {TSubProcessOptions} [opts]
20
22
  */
21
- constructor(cmd, args = [], opts = {}) {
23
+ constructor(cmd, args = [], opts) {
22
24
  super();
23
25
  if (!cmd)
24
26
  throw new Error('Command is required'); // eslint-disable-line curly
@@ -29,7 +31,7 @@ class SubProcess extends EventEmitter {
29
31
  this.cmd = cmd;
30
32
  this.args = args;
31
33
  this.proc = null;
32
- this.opts = opts;
34
+ this.opts = opts ?? {};
33
35
  this.expectingExit = false;
34
36
  // get a quoted representation of the command for error strings
35
37
  this.rep = (0, shell_quote_1.quote)([cmd, ...args]);
@@ -99,8 +101,10 @@ class SubProcess extends EventEmitter {
99
101
  this.proc = (0, child_process_1.spawn)(this.cmd, this.args, this.opts);
100
102
  // this function handles output that we collect from the subproc
101
103
  /**
102
- *
103
- * @param { {stdout: string, stderr: string} } streams
104
+ * @param { {
105
+ * stdout: TSubProcessOptions extends TIsBufferOpts ? Buffer : string,
106
+ * stderr: TSubProcessOptions extends TIsBufferOpts ? Buffer : string
107
+ * } } streams
104
108
  */
105
109
  const handleOutput = (streams) => {
106
110
  const { stdout, stderr } = streams;
@@ -123,7 +127,7 @@ class SubProcess extends EventEmitter {
123
127
  this.proc?.removeAllListeners('exit');
124
128
  this.proc?.kill('SIGINT');
125
129
  if (err.code === 'ENOENT') {
126
- err = await (0, helpers_1.formatEnoent)(err, this.cmd, this.opts?.cwd);
130
+ err = await (0, helpers_1.formatEnoent)(err, this.cmd, this.opts?.cwd?.toString());
127
131
  }
128
132
  reject(err);
129
133
  this.proc?.unref();
@@ -146,11 +150,19 @@ class SubProcess extends EventEmitter {
146
150
  const isBuffer = Boolean(this.opts.isBuffer);
147
151
  const encoding = this.opts.encoding || 'utf8';
148
152
  if (this.proc.stdout) {
149
- this.proc.stdout.on('data', (chunk) => handleOutput({ stdout: isBuffer ? chunk : chunk.toString(encoding), stderr: '' }));
153
+ this.proc.stdout.on('data', (chunk) => handleOutput({
154
+ stdout: isBuffer ? chunk : chunk.toString(encoding),
155
+ // @ts-ignore This is OK
156
+ stderr: isBuffer ? Buffer.alloc(0) : '',
157
+ }));
150
158
  handleStreamLines('stdout', this.proc.stdout);
151
159
  }
152
160
  if (this.proc.stderr) {
153
- this.proc.stderr.on('data', (chunk) => handleOutput({ stdout: '', stderr: isBuffer ? chunk : chunk.toString(encoding) }));
161
+ this.proc.stderr.on('data', (chunk) => handleOutput({
162
+ // @ts-ignore This is OK
163
+ stdout: isBuffer ? Buffer.alloc(0) : '',
164
+ stderr: isBuffer ? chunk : chunk.toString(encoding)
165
+ }));
154
166
  handleStreamLines('stderr', this.proc.stderr);
155
167
  }
156
168
  // when the proc exits, we might still have a buffer of lines we were
@@ -254,9 +266,12 @@ class SubProcess extends EventEmitter {
254
266
  exports.SubProcess = SubProcess;
255
267
  exports.default = SubProcess;
256
268
  /**
257
- * @callback StartDetector
258
- * @param {string} stdout
259
- * @param {string} [stderr]
260
- * @returns {any}
269
+ * @typedef {Object} SubProcessCustomOptions
270
+ * @property {boolean} [isBuffer]
271
+ * @property {string} [encoding]
272
+ */
273
+ /**
274
+ * @typedef {SubProcessCustomOptions & import('child_process').SpawnOptionsWithoutStdio} SubProcessOptions
275
+ * @typedef {{isBuffer: true}} TIsBufferOpts
261
276
  */
262
277
  //# sourceMappingURL=subprocess.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subprocess.js","sourceRoot":"","sources":["../../lib/subprocess.js"],"names":[],"mappings":";;;;;;AAAA,iDAAsC;AACtC,oDAA4B;AAC5B,MAAM,EAAE,YAAY,EAAE,GAAG,gBAAM,CAAC;AAChC,wDAAyB;AACzB,6CAAoC;AACpC,oDAAuB;AACvB,uCAAyC;AACzC,iDAAgD;AAEhD,MAAM,UAAW,SAAQ,YAAY;IA4BnC;;;;OAIG;IACH,YAAa,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE;QACpC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,4BAA4B;QAC9E,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC,4BAA4B;QAC/F,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,4BAA4B;QAE5F,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAE3B,+DAA+D;QAC/D,IAAI,CAAC,GAAG,GAAG,IAAA,mBAAK,EAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,SAAS;QACX,yDAAyD;QACzD,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAE,UAAU,EAAE,KAAK;QAC1B,MAAM,MAAM,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,UAAU,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAEjH,IAAI,gBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,KAAK,CAAE,aAAa,GAAG,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,GAAG,KAAK;QACjE,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,MAAM,oBAAoB,GAAG,4BAA4B,CAAA,CAAC,SAAS,oBAAoB,CAAE,MAAM,EAAE,MAAM;YACrG,OAAO,MAAM,IAAI,MAAM,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,wEAAwE;QACxE,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,aAAa,GAAG,oBAAoB,CAAC;QACvC,CAAC;QAED,wEAAwE;QACxE,qEAAqE;QACrE,IAAI,gBAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9B,UAAU,GAAG,aAAa,CAAC;YAC3B,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,+EAA+E;QAC/E,IAAI,gBAAC,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,aAAa,EAAE,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;YACzF,CAAC;YACD,MAAM,GAAG,IAAI,CAAC;YACd,aAAa,GAAG,oBAAoB,CAAC;QACvC,CAAC;aAAM,IAAI,gBAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,EAAE,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;YACzF,CAAC;YACD,MAAM,GAAG,IAAI,CAAC;YACd,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QAED,qDAAqD;QACrD,OAAO,MAAM,IAAI,kBAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,6BAA6B;YAC7B,IAAI,CAAC,IAAI,GAAG,IAAA,qBAAK,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAElD,gEAAgE;YAChE;;;eAGG;YACH,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,EAAE;gBAC/B,MAAM,EAAC,MAAM,EAAE,MAAM,EAAC,GAAG,OAAO,CAAC;gBACjC,sEAAsE;gBACtE,gCAAgC;gBAChC,IAAI,CAAC;oBACH,IAAI,gBAAC,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;wBACjE,aAAa,GAAG,IAAI,CAAC;wBACrB,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,CAAC,CAAC,CAAC,CAAC;gBACZ,CAAC;gBAED,kDAAkD;gBAClD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACtC,CAAC,CAAC;YAEF,qEAAqE;YACrE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,yCAAyC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBAC5E,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBACtC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAE1B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC1B,GAAG,GAAG,MAAM,IAAA,sBAAY,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC1D,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,CAAC;gBAEZ,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;gBACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,CAAC,CAAC,CAAC;YAEH,MAAM,iBAAiB,GAAG,CAAC,qBAAqB,CAAC,UAAU,EAAE,wCAAwC,CAAC,KAAK,EAAE,EAAE;gBAC7G,MAAM,EAAE,GAAG,IAAA,+BAAe,EAAC,EAAC,KAAK,EAAC,CAAC,CAAC;gBACpC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBACrB,6BAA6B;oBAC7B,yCAAyC;oBACzC,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,UAAU,EAAE,CAAC,EAAE,CAAC;wBAC9C,IAAI,CAAC,IAAI,CAAC,SAAS,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC3C,CAAC;oBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC;oBACtC,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;wBACtC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC;YAE9C,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CACpC,YAAY,CAAC,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC,CAChF,CAAC;gBACF,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CACpC,YAAY,CAAC,EAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAC,CAAC,CAChF,CAAC;gBACF,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC;YAED,qEAAqE;YACrE,oEAAoE;YACpE,yEAAyE;YACzE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBACpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBAEhC,mEAAmE;gBACnE,gDAAgD;gBAChD,0BAA0B;gBAC1B,mEAAmE;gBACnE,+DAA+D;gBAC/D,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;gBAChD,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACtC,KAAK,GAAG,KAAK,CAAC;gBAChB,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBAE/B,4DAA4D;gBAC5D,eAAe;gBACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC7B,CAAC,CAAC,CAAC;YAEH,oEAAoE;YACpE,iCAAiC;YACjC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,UAAU,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC;YAED,oEAAoE;YACpE,2CAA2C;YAC3C,IAAI,gBAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1B,UAAU,CAAC,GAAG,EAAE;oBACd,MAAM,CAAC,IAAI,KAAK,CAAC,oCAAoC,SAAS,KAAK;wBACjE,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBAC7B,CAAC,EAAE,SAAS,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACd,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,eAAe;QACb,wDAAwD;QACxD,+CAA+C;IACjD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAE,MAAM,GAAG,SAAS,EAAE,OAAO,GAAG,KAAK;QAC7C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,yDAAyD,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,MAAM,IAAI,kBAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACxB,8EAA8E;YAC9E,uBAAuB;YACvB,UAAU,CAAC,GAAG,EAAE;gBACd,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,OAAO,aAAa,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YAClF,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAE,gBAAgB,GAAG,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,2DAA2D,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3F,CAAC;QAED,OAAO,MAAM,IAAI,kBAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC7B,IAAI,IAAI,KAAK,IAAI,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBAC3D,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,IAAI,WAAW,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBAChF,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxB,kEAAkE;YAClE,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;CACF;AAEQ,gCAAU;AACnB,kBAAe,UAAU,CAAC;AAE1B;;;;;GAKG"}
1
+ {"version":3,"file":"subprocess.js","sourceRoot":"","sources":["../../lib/subprocess.js"],"names":[],"mappings":"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"}
package/lib/subprocess.js CHANGED
@@ -1,35 +1,38 @@
1
1
  import { spawn } from 'child_process';
2
- import events from 'events';
3
- const { EventEmitter } = events;
2
+ import { EventEmitter } from 'events';
4
3
  import B from 'bluebird';
5
4
  import { quote } from 'shell-quote';
6
5
  import _ from 'lodash';
7
6
  import { formatEnoent } from './helpers';
8
7
  import { createInterface } from 'node:readline';
9
8
 
10
- class SubProcess extends EventEmitter {
9
+ /**
10
+ * @template {SubProcessOptions} TSubProcessOptions
11
+ */
12
+ export class SubProcess extends EventEmitter {
13
+ /**
14
+ * @callback StartDetector
15
+ * @param {TSubProcessOptions extends TIsBufferOpts ? Buffer : string} stdout
16
+ * @param {TSubProcessOptions extends TIsBufferOpts ? Buffer : string} [stderr]
17
+ * @returns {any}
18
+ */
11
19
 
12
- /** @type {import('child_process').ChildProcess?} */
20
+ /** @type {import('child_process').ChildProcess | null} */
13
21
  proc;
14
-
15
22
  /** @type {string[]} */
16
23
  args;
17
-
18
24
  /**
19
25
  * @type {string}
20
26
  */
21
27
  cmd;
22
-
23
28
  /**
24
- * @type {any}
29
+ * @type {SubProcessOptions}
25
30
  */
26
31
  opts;
27
-
28
32
  /**
29
33
  * @type {boolean}
30
34
  */
31
35
  expectingExit;
32
-
33
36
  /**
34
37
  * @type {string}
35
38
  */
@@ -37,10 +40,10 @@ class SubProcess extends EventEmitter {
37
40
 
38
41
  /**
39
42
  * @param {string} cmd
40
- * @param {string[]} [args]
41
- * @param {any} [opts]
43
+ * @param {string[]} [args=[]]
44
+ * @param {TSubProcessOptions} [opts]
42
45
  */
43
- constructor (cmd, args = [], opts = {}) {
46
+ constructor (cmd, args = [], opts) {
44
47
  super();
45
48
  if (!cmd) throw new Error('Command is required'); // eslint-disable-line curly
46
49
  if (!_.isString(cmd)) throw new Error('Command must be a string'); // eslint-disable-line curly
@@ -49,7 +52,7 @@ class SubProcess extends EventEmitter {
49
52
  this.cmd = cmd;
50
53
  this.args = args;
51
54
  this.proc = null;
52
- this.opts = opts;
55
+ this.opts = opts ?? {};
53
56
  this.expectingExit = false;
54
57
 
55
58
  // get a quoted representation of the command for error strings
@@ -128,8 +131,10 @@ class SubProcess extends EventEmitter {
128
131
 
129
132
  // this function handles output that we collect from the subproc
130
133
  /**
131
- *
132
- * @param { {stdout: string, stderr: string} } streams
134
+ * @param { {
135
+ * stdout: TSubProcessOptions extends TIsBufferOpts ? Buffer : string,
136
+ * stderr: TSubProcessOptions extends TIsBufferOpts ? Buffer : string
137
+ * } } streams
133
138
  */
134
139
  const handleOutput = (streams) => {
135
140
  const {stdout, stderr} = streams;
@@ -154,7 +159,7 @@ class SubProcess extends EventEmitter {
154
159
  this.proc?.kill('SIGINT');
155
160
 
156
161
  if (err.code === 'ENOENT') {
157
- err = await formatEnoent(err, this.cmd, this.opts?.cwd);
162
+ err = await formatEnoent(err, this.cmd, this.opts?.cwd?.toString());
158
163
  }
159
164
  reject(err);
160
165
 
@@ -182,14 +187,22 @@ class SubProcess extends EventEmitter {
182
187
 
183
188
  if (this.proc.stdout) {
184
189
  this.proc.stdout.on('data', (chunk) =>
185
- handleOutput({stdout: isBuffer ? chunk : chunk.toString(encoding), stderr: ''}),
190
+ handleOutput({
191
+ stdout: isBuffer ? chunk : chunk.toString(encoding),
192
+ // @ts-ignore This is OK
193
+ stderr: isBuffer ? Buffer.alloc(0) : '',
194
+ }),
186
195
  );
187
196
  handleStreamLines('stdout', this.proc.stdout);
188
197
  }
189
198
 
190
199
  if (this.proc.stderr) {
191
200
  this.proc.stderr.on('data', (chunk) =>
192
- handleOutput({stdout: '', stderr: isBuffer ? chunk : chunk.toString(encoding)}),
201
+ handleOutput({
202
+ // @ts-ignore This is OK
203
+ stdout: isBuffer ? Buffer.alloc(0) : '',
204
+ stderr: isBuffer ? chunk : chunk.toString(encoding)
205
+ }),
193
206
  );
194
207
  handleStreamLines('stderr', this.proc.stderr);
195
208
  }
@@ -302,12 +315,15 @@ class SubProcess extends EventEmitter {
302
315
  }
303
316
  }
304
317
 
305
- export { SubProcess };
306
318
  export default SubProcess;
307
319
 
308
320
  /**
309
- * @callback StartDetector
310
- * @param {string} stdout
311
- * @param {string} [stderr]
312
- * @returns {any}
321
+ * @typedef {Object} SubProcessCustomOptions
322
+ * @property {boolean} [isBuffer]
323
+ * @property {string} [encoding]
324
+ */
325
+
326
+ /**
327
+ * @typedef {SubProcessCustomOptions & import('child_process').SpawnOptionsWithoutStdio} SubProcessOptions
328
+ * @typedef {{isBuffer: true}} TIsBufferOpts
313
329
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "teen_process",
3
- "version": "2.3.0",
3
+ "version": "2.3.1",
4
4
  "description": "A grown up version of Node's spawn/exec",
5
5
  "keywords": [
6
6
  "child_process",