spawn-rx 2.0.11 → 2.0.12

Sign up to get free protection for your applications and to get access to all the features.
package/lib/index.js ADDED
@@ -0,0 +1,352 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.findActualExecutable = findActualExecutable;
7
+ exports.spawnDetached = spawnDetached;
8
+ exports.spawn = spawn;
9
+ exports.spawnDetachedPromise = spawnDetachedPromise;
10
+ exports.spawnPromise = spawnPromise;
11
+
12
+ var _path = require('path');
13
+
14
+ var _path2 = _interopRequireDefault(_path);
15
+
16
+ var _net = require('net');
17
+
18
+ var _net2 = _interopRequireDefault(_net);
19
+
20
+ var _fs = require('fs');
21
+
22
+ var _fs2 = _interopRequireDefault(_fs);
23
+
24
+ require('rxjs/add/observable/of');
25
+
26
+ require('rxjs/add/observable/merge');
27
+
28
+ require('rxjs/add/operator/pluck');
29
+
30
+ require('rxjs/add/operator/reduce');
31
+
32
+ var _Observable = require('rxjs/Observable');
33
+
34
+ var _Subscription = require('rxjs/Subscription');
35
+
36
+ var _AsyncSubject = require('rxjs/AsyncSubject');
37
+
38
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
39
+
40
+ const spawnOg = require('child_process').spawn;
41
+ const isWindows = process.platform === 'win32';
42
+
43
+ const d = require('debug')('spawn-rx');
44
+
45
+ /**
46
+ * stat a file but don't throw if it doesn't exist
47
+ *
48
+ * @param {string} file The path to a file
49
+ * @return {Stats} The stats structure
50
+ *
51
+ * @private
52
+ */
53
+ function statSyncNoException(file) {
54
+ try {
55
+ return _fs2.default.statSync(file);
56
+ } catch (e) {
57
+ return null;
58
+ }
59
+ }
60
+
61
+ /**
62
+ * Search PATH to see if a file exists in any of the path folders.
63
+ *
64
+ * @param {string} exe The file to search for
65
+ * @return {string} A fully qualified path, or the original path if nothing
66
+ * is found
67
+ *
68
+ * @private
69
+ */
70
+ function runDownPath(exe) {
71
+ // NB: Windows won't search PATH looking for executables in spawn like
72
+ // Posix does
73
+
74
+ // Files with any directory path don't get this applied
75
+ if (exe.match(/[\\\/]/)) {
76
+ d('Path has slash in directory, bailing');
77
+ return exe;
78
+ }
79
+
80
+ let target = _path2.default.join('.', exe);
81
+ if (statSyncNoException(target)) {
82
+ d(`Found executable in currect directory: ${ target }`);
83
+ return target;
84
+ }
85
+
86
+ let haystack = process.env.PATH.split(isWindows ? ';' : ':');
87
+ for (let p of haystack) {
88
+ let needle = _path2.default.join(p, exe);
89
+ if (statSyncNoException(needle)) return needle;
90
+ }
91
+
92
+ d('Failed to find executable anywhere in path');
93
+ return exe;
94
+ }
95
+
96
+ /**
97
+ * Finds the actual executable and parameters to run on Windows. This method
98
+ * mimics the POSIX behavior of being able to run scripts as executables by
99
+ * replacing the passed-in executable with the script runner, for PowerShell,
100
+ * CMD, and node scripts.
101
+ *
102
+ * This method also does the work of running down PATH, which spawn on Windows
103
+ * also doesn't do, unlike on POSIX.
104
+ *
105
+ * @param {string} exe The executable to run
106
+ * @param {Array<string>} args The arguments to run
107
+ *
108
+ * @return {Object} The cmd and args to run
109
+ * @property {string} cmd The command to pass to spawn
110
+ * @property {Array<string>} args The arguments to pass to spawn
111
+ */
112
+ function findActualExecutable(exe, args) {
113
+ // POSIX can just execute scripts directly, no need for silly goosery
114
+ if (process.platform !== 'win32') return { cmd: runDownPath(exe), args: args };
115
+
116
+ if (!_fs2.default.existsSync(exe)) {
117
+ // NB: When you write something like `surf-client ... -- surf-build` on Windows,
118
+ // a shell would normally convert that to surf-build.cmd, but since it's passed
119
+ // in as an argument, it doesn't happen
120
+ const possibleExts = ['.exe', '.bat', '.cmd', '.ps1'];
121
+ for (let ext of possibleExts) {
122
+ let possibleFullPath = runDownPath(`${ exe }${ ext }`);
123
+
124
+ if (_fs2.default.existsSync(possibleFullPath)) {
125
+ return findActualExecutable(possibleFullPath, args);
126
+ }
127
+ }
128
+ }
129
+
130
+ if (exe.match(/\.ps1$/i)) {
131
+ let cmd = _path2.default.join(process.env.SYSTEMROOT, 'System32', 'WindowsPowerShell', 'v1.0', 'PowerShell.exe');
132
+ let psargs = ['-ExecutionPolicy', 'Unrestricted', '-NoLogo', '-NonInteractive', '-File', exe];
133
+
134
+ return { cmd: cmd, args: psargs.concat(args) };
135
+ }
136
+
137
+ if (exe.match(/\.(bat|cmd)$/i)) {
138
+ let cmd = _path2.default.join(process.env.SYSTEMROOT, 'System32', 'cmd.exe');
139
+ let cmdArgs = ['/C', `${ exe } ${ args.join(' ') }`];
140
+
141
+ return { cmd: cmd, args: cmdArgs };
142
+ }
143
+
144
+ if (exe.match(/\.(js)$/i)) {
145
+ let cmd = process.execPath;
146
+ let nodeArgs = [exe];
147
+
148
+ return { cmd: cmd, args: nodeArgs.concat(args) };
149
+ }
150
+
151
+ // Dunno lol
152
+ return { cmd: exe, args: args };
153
+ }
154
+
155
+ /**
156
+ * Spawns a process but detached from the current process. The process is put
157
+ * into its own Process Group that can be killed by unsubscribing from the
158
+ * return Observable.
159
+ *
160
+ * @param {string} exe The executable to run
161
+ * @param {Array<string>} params The parameters to pass to the child
162
+ * @param {Object} opts Options to pass to spawn.
163
+ *
164
+ * @return {Observable<string>} Returns an Observable that when subscribed
165
+ * to, will create a detached process. The
166
+ * process output will be streamed to this
167
+ * Observable, and if unsubscribed from, the
168
+ * process will be terminated early. If the
169
+ * process terminates with a non-zero value,
170
+ * the Observable will terminate with onError.
171
+ */
172
+ function spawnDetached(exe, params) {
173
+ let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
174
+
175
+ var _findActualExecutable = findActualExecutable(exe, params);
176
+
177
+ let cmd = _findActualExecutable.cmd,
178
+ args = _findActualExecutable.args;
179
+
180
+
181
+ if (!isWindows) return spawn(cmd, args, Object.assign({}, opts || {}, { detached: true }));
182
+ const newParams = [cmd].concat(args);
183
+
184
+ let target = _path2.default.join(__dirname, '..', 'vendor', 'jobber', 'jobber.exe');
185
+ let options = Object.assign({}, opts || {}, { detached: true, jobber: true });
186
+
187
+ d(`spawnDetached: ${ target }, ${ newParams }`);
188
+ return spawn(target, newParams, options);
189
+ }
190
+
191
+ /**
192
+ * Spawns a process attached as a child of the current process.
193
+ *
194
+ * @param {string} exe The executable to run
195
+ * @param {Array<string>} params The parameters to pass to the child
196
+ * @param {Object} opts Options to pass to spawn.
197
+ *
198
+ * @return {Observable<string>} Returns an Observable that when subscribed
199
+ * to, will create a child process. The
200
+ * process output will be streamed to this
201
+ * Observable, and if unsubscribed from, the
202
+ * process will be terminated early. If the
203
+ * process terminates with a non-zero value,
204
+ * the Observable will terminate with onError.
205
+ */
206
+ function spawn(exe) {
207
+ let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
208
+ let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
209
+
210
+ opts = opts || {};
211
+ let spawnObs = _Observable.Observable.create(subj => {
212
+ let proc = null;
213
+
214
+ var _findActualExecutable2 = findActualExecutable(exe, params);
215
+
216
+ let cmd = _findActualExecutable2.cmd,
217
+ args = _findActualExecutable2.args;
218
+
219
+ d(`spawning process: ${ cmd } ${ args.join() }, ${ JSON.stringify(opts) }`);
220
+ let origOpts = Object.assign({}, opts);
221
+ if ('jobber' in origOpts) delete origOpts.jobber;
222
+ if ('split' in origOpts) delete origOpts.split;
223
+
224
+ proc = spawnOg(cmd, args, origOpts);
225
+
226
+ let bufHandler = source => b => {
227
+ if (b.length < 1) return;
228
+ let chunk = "<< String sent back was too long >>";
229
+ try {
230
+ chunk = b.toString();
231
+ } catch (e) {
232
+ chunk = `<< Lost chunk of process output for ${ exe } - length was ${ b.length }>>`;
233
+ }
234
+
235
+ subj.next({ source: source, text: chunk });
236
+ };
237
+
238
+ let ret = new _Subscription.Subscription();
239
+
240
+ if (opts.stdin) {
241
+ if (proc.stdin) {
242
+ ret.add(opts.stdin.subscribe(x => proc.stdin.write(x), subj.error, () => proc.stdin.end()));
243
+ } else {
244
+ subj.error(new Error(`opts.stdio conflicts with provided spawn opts.stdin observable, 'pipe' is required`));
245
+ }
246
+ }
247
+
248
+ let stderrCompleted = null;
249
+ let stdoutCompleted = null;
250
+ let noClose = false;
251
+
252
+ if (proc.stdout) {
253
+ stdoutCompleted = new _AsyncSubject.AsyncSubject();
254
+ proc.stdout.on('data', bufHandler('stdout'));
255
+ proc.stdout.on('close', () => {
256
+ stdoutCompleted.next(true);stdoutCompleted.complete();
257
+ });
258
+ } else {
259
+ stdoutCompleted = _Observable.Observable.of(true);
260
+ }
261
+
262
+ if (proc.stderr) {
263
+ stderrCompleted = new _AsyncSubject.AsyncSubject();
264
+ proc.stderr.on('data', bufHandler('stderr'));
265
+ proc.stderr.on('close', () => {
266
+ stderrCompleted.next(true);stderrCompleted.complete();
267
+ });
268
+ } else {
269
+ stderrCompleted = _Observable.Observable.of(true);
270
+ }
271
+
272
+ proc.on('error', e => {
273
+ noClose = true;
274
+ subj.error(e);
275
+ });
276
+
277
+ proc.on('close', code => {
278
+ noClose = true;
279
+ let pipesClosed = _Observable.Observable.merge(stdoutCompleted, stderrCompleted).reduce(acc => acc, true);
280
+
281
+ if (code === 0) {
282
+ pipesClosed.subscribe(() => subj.complete());
283
+ } else {
284
+ pipesClosed.subscribe(() => subj.error(new Error(`Failed with exit code: ${ code }`)));
285
+ }
286
+ });
287
+
288
+ ret.add(new _Subscription.Subscription(() => {
289
+ if (noClose) return;
290
+
291
+ d(`Killing process: ${ cmd } ${ args.join() }`);
292
+ if (opts.jobber) {
293
+ // NB: Connecting to Jobber's named pipe will kill it
294
+ _net2.default.connect(`\\\\.\\pipe\\jobber-${ proc.pid }`);
295
+ setTimeout(() => proc.kill(), 5 * 1000);
296
+ } else {
297
+ proc.kill();
298
+ }
299
+ }));
300
+
301
+ return ret;
302
+ });
303
+
304
+ return opts.split ? spawnObs : spawnObs.pluck('text');
305
+ }
306
+
307
+ function wrapObservableInPromise(obs) {
308
+ return new Promise((res, rej) => {
309
+ let out = '';
310
+
311
+ obs.subscribe(x => out += x, e => rej(new Error(`${ out }\n${ e.message }`)), () => res(out));
312
+ });
313
+ }
314
+
315
+ /**
316
+ * Spawns a process but detached from the current process. The process is put
317
+ * into its own Process Group.
318
+ *
319
+ * @param {string} exe The executable to run
320
+ * @param {Array<string>} params The parameters to pass to the child
321
+ * @param {Object} opts Options to pass to spawn.
322
+ *
323
+ * @return {Promise<string>} Returns an Promise that represents a detached
324
+ * process. The value returned is the process
325
+ * output. If the process terminates with a
326
+ * non-zero value, the Promise will resolve with
327
+ * an Error.
328
+ */
329
+ function spawnDetachedPromise(exe, params) {
330
+ let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
331
+
332
+ return wrapObservableInPromise(spawnDetached(exe, params, opts));
333
+ }
334
+
335
+ /**
336
+ * Spawns a process as a child process.
337
+ *
338
+ * @param {string} exe The executable to run
339
+ * @param {Array<string>} params The parameters to pass to the child
340
+ * @param {Object} opts Options to pass to spawn.
341
+ *
342
+ * @return {Promise<string>} Returns an Promise that represents a child
343
+ * process. The value returned is the process
344
+ * output. If the process terminates with a
345
+ * non-zero value, the Promise will resolve with
346
+ * an Error.
347
+ */
348
+ function spawnPromise(exe, params) {
349
+ let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
350
+
351
+ return wrapObservableInPromise(spawn(exe, params, opts));
352
+ }
@@ -56,7 +56,7 @@ export declare function spawnDetached(exe: string, params: Array<string>, opts?:
56
56
  * process terminates with a non-zero value,
57
57
  * the Observable will terminate with onError.
58
58
  */
59
- export declare function spawn<T>(exe: string, params?: Array<string>, opts?: any): Observable<T | string>;
59
+ export declare function spawn<T = string>(exe: string, params?: Array<string>, opts?: any): Observable<T>;
60
60
  /**
61
61
  * Spawns a process but detached from the current process. The process is put
62
62
  * into its own Process Group.
package/lib/src/index.js CHANGED
@@ -1,4 +1,13 @@
1
1
  "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
8
+ t[p[i]] = s[p[i]];
9
+ return t;
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  var path = require("path");
4
13
  var net = require("net");
@@ -168,9 +177,10 @@ function spawn(exe, params, opts) {
168
177
  if (opts === void 0) { opts = null; }
169
178
  opts = opts || {};
170
179
  var spawnObs = Observable_1.Observable.create(function (subj) {
180
+ var stdin = opts.stdin, optsWithoutStdIn = __rest(opts, ["stdin"]);
171
181
  var _a = findActualExecutable(exe, params), cmd = _a.cmd, args = _a.args;
172
- d("spawning process: " + cmd + " " + args.join() + ", " + JSON.stringify(opts));
173
- var origOpts = assign({}, opts);
182
+ d("spawning process: " + cmd + " " + args.join() + ", " + JSON.stringify(optsWithoutStdIn));
183
+ var origOpts = assign({}, optsWithoutStdIn);
174
184
  if ('jobber' in origOpts) {
175
185
  delete origOpts.jobber;
176
186
  }
@@ -201,7 +211,7 @@ function spawn(exe, params, opts) {
201
211
  var ret = new Subscription_1.Subscription();
202
212
  if (opts.stdin) {
203
213
  if (proc.stdin) {
204
- ret.add(opts.stdin.subscribe(function (x) { return proc.stdin.write(x); }, subj.error, function () { return proc.stdin.end(); }));
214
+ ret.add(opts.stdin.subscribe(function (x) { return proc.stdin.write(x); }, subj.error.bind(subj), function () { return proc.stdin.end(); }));
205
215
  }
206
216
  else {
207
217
  subj.error(new Error("opts.stdio conflicts with provided spawn opts.stdin observable, 'pipe' is required"));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spawn-rx",
3
- "version": "2.0.11",
3
+ "version": "2.0.12",
4
4
  "description": "An Rx-version of child_process.spawn",
5
5
  "scripts": {
6
6
  "doc": "echo \"esdoc may not work correctly\" && esdoc -c ./esdoc.json",
@@ -32,22 +32,22 @@
32
32
  "rxjs": "^5.1.1"
33
33
  },
34
34
  "devDependencies": {
35
- "@types/chai": "^3.4.35",
36
- "@types/chai-as-promised": "0.0.29",
35
+ "@types/chai": "^4.0.4",
36
+ "@types/chai-as-promised": "^7.1.0",
37
37
  "@types/mocha": "^2.2.39",
38
- "@types/node": "^7.0.5",
38
+ "@types/node": "^8.0.32",
39
39
  "babel-register": "^6.23.0",
40
- "chai": "^3.5.0",
41
- "chai-as-promised": "^6.0.0",
40
+ "chai": "^4.1.2",
41
+ "chai-as-promised": "^7.1.1",
42
42
  "esdoc": "^0.5.2",
43
43
  "esdoc-es7-plugin": "0.0.3",
44
44
  "esdoc-plugin-async-to-sync": "^0.5.0",
45
45
  "marked": "^0.3.6",
46
- "mocha": "^3.2.0",
46
+ "mocha": "^4.0.0",
47
47
  "npm-run-all": "^4.0.2",
48
- "ts-node": "^2.1.0",
49
- "tslint": "^4.4.2",
50
- "typescript": "^2.2.1",
51
- "uuid": "^3.0.1"
48
+ "ts-node": "^3.3.0",
49
+ "tslint": "^5.7.0",
50
+ "typescript": "^2.5.3",
51
+ "uuid": "3.0.1"
52
52
  }
53
53
  }
package/src/index.ts CHANGED
@@ -60,7 +60,7 @@ function runDownPath(exe: string): string {
60
60
  return target;
61
61
  }
62
62
 
63
- let haystack = process.env.PATH.split(isWindows ? ';' : ':');
63
+ let haystack = process.env.PATH!.split(isWindows ? ';' : ':');
64
64
  for (let p of haystack) {
65
65
  let needle = path.join(p, exe);
66
66
  if (statSyncNoException(needle)) {
@@ -112,14 +112,14 @@ export function findActualExecutable(exe: string, args: Array<string>): {
112
112
  }
113
113
 
114
114
  if (exe.match(/\.ps1$/i)) {
115
- let cmd = path.join(process.env.SYSTEMROOT, 'System32', 'WindowsPowerShell', 'v1.0', 'PowerShell.exe');
115
+ let cmd = path.join(process.env.SYSTEMROOT!, 'System32', 'WindowsPowerShell', 'v1.0', 'PowerShell.exe');
116
116
  let psargs = ['-ExecutionPolicy', 'Unrestricted', '-NoLogo', '-NonInteractive', '-File', exe];
117
117
 
118
118
  return { cmd: cmd, args: psargs.concat(args) };
119
119
  }
120
120
 
121
121
  if (exe.match(/\.(bat|cmd)$/i)) {
122
- let cmd = path.join(process.env.SYSTEMROOT, 'System32', 'cmd.exe');
122
+ let cmd = path.join(process.env.SYSTEMROOT!, 'System32', 'cmd.exe');
123
123
  let cmdArgs = ['/C', exe, ...args];
124
124
 
125
125
  return { cmd: cmd, args: cmdArgs };
@@ -185,15 +185,16 @@ export function spawnDetached(exe: string, params: Array<string>, opts: any = nu
185
185
  * the Observable will terminate with onError.
186
186
  */
187
187
 
188
- export function spawn<T>(exe: string, params: Array<string> = [], opts: any = null): Observable<T|string> {
188
+ export function spawn<T = string>(exe: string, params: Array<string> = [], opts: any = null): Observable<T> {
189
189
  opts = opts || {};
190
190
  let spawnObs = Observable.create((subj: Observer<{
191
191
  source: any,
192
192
  text: any
193
193
  }>) => {
194
+ let { stdin, ...optsWithoutStdIn } = opts;
194
195
  let { cmd, args } = findActualExecutable(exe, params);
195
- d(`spawning process: ${cmd} ${args.join()}, ${JSON.stringify(opts)}`);
196
- let origOpts = assign({}, opts);
196
+ d(`spawning process: ${cmd} ${args.join()}, ${JSON.stringify(optsWithoutStdIn)}`);
197
+ let origOpts = assign({}, optsWithoutStdIn);
197
198
  if ('jobber' in origOpts) {
198
199
  delete origOpts.jobber;
199
200
  }
@@ -227,7 +228,7 @@ export function spawn<T>(exe: string, params: Array<string> = [], opts: any = nu
227
228
  if (proc.stdin) {
228
229
  ret.add(opts.stdin.subscribe(
229
230
  (x: any) => proc.stdin.write(x),
230
- subj.error,
231
+ subj.error.bind(subj),
231
232
  () => proc.stdin.end()
232
233
  ));
233
234
  } else {
@@ -294,7 +295,7 @@ export function spawn<T>(exe: string, params: Array<string> = [], opts: any = nu
294
295
  }
295
296
 
296
297
  function wrapObservableInPromise<T>(obs: Observable<T>) {
297
- return new Promise((res, rej) => {
298
+ return new Promise<string>((res, rej) => {
298
299
  let out = '';
299
300
 
300
301
  obs.subscribe(
package/tsconfig.json CHANGED
@@ -16,10 +16,7 @@
16
16
  "pretty": true,
17
17
  "target": "es5",
18
18
  "outDir": "lib",
19
- "lib": ["dom", "es2015"],
20
- "typeRoots": [
21
- "./node_modules/@types"
22
- ]
19
+ "lib": ["dom", "es2015"]
23
20
  },
24
21
  "formatCodeOptions": {
25
22
  "indentSize": 2,