teen_process 2.2.3 → 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]);
@@ -97,16 +99,12 @@ class SubProcess extends EventEmitter {
97
99
  return await new bluebird_1.default((resolve, reject) => {
98
100
  // actually spawn the subproc
99
101
  this.proc = (0, child_process_1.spawn)(this.cmd, this.args, this.opts);
100
- if (this.proc.stdout) {
101
- this.proc.stdout.setEncoding(this.opts.encoding || 'utf8');
102
- }
103
- if (this.proc.stderr) {
104
- this.proc.stderr.setEncoding(this.opts.encoding || 'utf8');
105
- }
106
102
  // this function handles output that we collect from the subproc
107
103
  /**
108
- *
109
- * @param { {stdout: string, stderr: string} } streams
104
+ * @param { {
105
+ * stdout: TSubProcessOptions extends TIsBufferOpts ? Buffer : string,
106
+ * stderr: TSubProcessOptions extends TIsBufferOpts ? Buffer : string
107
+ * } } streams
110
108
  */
111
109
  const handleOutput = (streams) => {
112
110
  const { stdout, stderr } = streams;
@@ -129,7 +127,7 @@ class SubProcess extends EventEmitter {
129
127
  this.proc?.removeAllListeners('exit');
130
128
  this.proc?.kill('SIGINT');
131
129
  if (err.code === 'ENOENT') {
132
- 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());
133
131
  }
134
132
  reject(err);
135
133
  this.proc?.unref();
@@ -149,12 +147,22 @@ class SubProcess extends EventEmitter {
149
147
  }
150
148
  });
151
149
  };
150
+ const isBuffer = Boolean(this.opts.isBuffer);
151
+ const encoding = this.opts.encoding || 'utf8';
152
152
  if (this.proc.stdout) {
153
- this.proc.stdout.on('data', (chunk) => handleOutput({ stdout: chunk.toString(), 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
+ }));
154
158
  handleStreamLines('stdout', this.proc.stdout);
155
159
  }
156
160
  if (this.proc.stderr) {
157
- this.proc.stderr.on('data', (chunk) => handleOutput({ stdout: '', stderr: chunk.toString() }));
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
+ }));
158
166
  handleStreamLines('stderr', this.proc.stderr);
159
167
  }
160
168
  // when the proc exits, we might still have a buffer of lines we were
@@ -258,9 +266,12 @@ class SubProcess extends EventEmitter {
258
266
  exports.SubProcess = SubProcess;
259
267
  exports.default = SubProcess;
260
268
  /**
261
- * @callback StartDetector
262
- * @param {string} stdout
263
- * @param {string} [stderr]
264
- * @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
265
276
  */
266
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,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC;YAC7D,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC;YAC7D,CAAC;YAED,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,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,EAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC;gBAC7F,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,CAAC,YAAY,CAAC,EAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAC,CAAC,CAAC,CAAC;gBAC7F,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
@@ -126,17 +129,12 @@ class SubProcess extends EventEmitter {
126
129
  // actually spawn the subproc
127
130
  this.proc = spawn(this.cmd, this.args, this.opts);
128
131
 
129
- if (this.proc.stdout) {
130
- this.proc.stdout.setEncoding(this.opts.encoding || 'utf8');
131
- }
132
- if (this.proc.stderr) {
133
- this.proc.stderr.setEncoding(this.opts.encoding || 'utf8');
134
- }
135
-
136
132
  // this function handles output that we collect from the subproc
137
133
  /**
138
- *
139
- * @param { {stdout: string, stderr: string} } streams
134
+ * @param { {
135
+ * stdout: TSubProcessOptions extends TIsBufferOpts ? Buffer : string,
136
+ * stderr: TSubProcessOptions extends TIsBufferOpts ? Buffer : string
137
+ * } } streams
140
138
  */
141
139
  const handleOutput = (streams) => {
142
140
  const {stdout, stderr} = streams;
@@ -161,7 +159,7 @@ class SubProcess extends EventEmitter {
161
159
  this.proc?.kill('SIGINT');
162
160
 
163
161
  if (err.code === 'ENOENT') {
164
- err = await formatEnoent(err, this.cmd, this.opts?.cwd);
162
+ err = await formatEnoent(err, this.cmd, this.opts?.cwd?.toString());
165
163
  }
166
164
  reject(err);
167
165
 
@@ -184,13 +182,28 @@ class SubProcess extends EventEmitter {
184
182
  });
185
183
  };
186
184
 
185
+ const isBuffer = Boolean(this.opts.isBuffer);
186
+ const encoding = this.opts.encoding || 'utf8';
187
+
187
188
  if (this.proc.stdout) {
188
- this.proc.stdout.on('data', (chunk) => handleOutput({stdout: chunk.toString(), stderr: ''}));
189
+ this.proc.stdout.on('data', (chunk) =>
190
+ handleOutput({
191
+ stdout: isBuffer ? chunk : chunk.toString(encoding),
192
+ // @ts-ignore This is OK
193
+ stderr: isBuffer ? Buffer.alloc(0) : '',
194
+ }),
195
+ );
189
196
  handleStreamLines('stdout', this.proc.stdout);
190
197
  }
191
198
 
192
199
  if (this.proc.stderr) {
193
- this.proc.stderr.on('data', (chunk) => handleOutput({stdout: '', stderr: chunk.toString()}));
200
+ this.proc.stderr.on('data', (chunk) =>
201
+ handleOutput({
202
+ // @ts-ignore This is OK
203
+ stdout: isBuffer ? Buffer.alloc(0) : '',
204
+ stderr: isBuffer ? chunk : chunk.toString(encoding)
205
+ }),
206
+ );
194
207
  handleStreamLines('stderr', this.proc.stderr);
195
208
  }
196
209
 
@@ -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.2.3",
3
+ "version": "2.3.1",
4
4
  "description": "A grown up version of Node's spawn/exec",
5
5
  "keywords": [
6
6
  "child_process",