@npmcli/promise-spawn
Advanced tools
Comparing version 7.0.1 to 7.0.2
@@ -15,50 +15,51 @@ 'use strict' | ||
let proc | ||
let resolve, reject | ||
const promise = new Promise((_resolve, _reject) => { | ||
resolve = _resolve | ||
reject = _reject | ||
}) | ||
const p = new Promise((res, rej) => { | ||
proc = spawn(cmd, args, opts) | ||
// Create error here so we have a more useful stack trace when rejecting | ||
const closeError = new Error('command failed') | ||
const stdout = [] | ||
const stderr = [] | ||
const stdout = [] | ||
const stderr = [] | ||
const reject = er => rej(Object.assign(er, { | ||
cmd, | ||
args, | ||
...stdioResult(stdout, stderr, opts), | ||
...extra, | ||
})) | ||
const getResult = (result) => ({ | ||
cmd, | ||
args, | ||
...result, | ||
...stdioResult(stdout, stderr, opts), | ||
...extra, | ||
}) | ||
const rejectWithOpts = (er, erOpts) => { | ||
const resultError = getResult(erOpts) | ||
reject(Object.assign(er, resultError)) | ||
} | ||
proc.on('error', reject) | ||
const proc = spawn(cmd, args, opts) | ||
promise.stdin = proc.stdin | ||
promise.process = proc | ||
if (proc.stdout) { | ||
proc.stdout.on('data', c => stdout.push(c)).on('error', reject) | ||
proc.stdout.on('error', er => reject(er)) | ||
} | ||
proc.on('error', rejectWithOpts) | ||
if (proc.stderr) { | ||
proc.stderr.on('data', c => stderr.push(c)).on('error', reject) | ||
proc.stderr.on('error', er => reject(er)) | ||
} | ||
if (proc.stdout) { | ||
proc.stdout.on('data', c => stdout.push(c)) | ||
proc.stdout.on('error', rejectWithOpts) | ||
} | ||
proc.on('close', (code, signal) => { | ||
const result = { | ||
cmd, | ||
args, | ||
code, | ||
signal, | ||
...stdioResult(stdout, stderr, opts), | ||
...extra, | ||
} | ||
if (proc.stderr) { | ||
proc.stderr.on('data', c => stderr.push(c)) | ||
proc.stderr.on('error', rejectWithOpts) | ||
} | ||
if (code || signal) { | ||
rej(Object.assign(new Error('command failed'), result)) | ||
} else { | ||
res(result) | ||
} | ||
}) | ||
proc.on('close', (code, signal) => { | ||
if (code || signal) { | ||
rejectWithOpts(closeError, { code, signal }) | ||
} else { | ||
resolve(getResult({ code, signal })) | ||
} | ||
}) | ||
p.stdin = proc.stdin | ||
p.process = proc | ||
return p | ||
return promise | ||
} | ||
@@ -65,0 +66,0 @@ |
{ | ||
"name": "@npmcli/promise-spawn", | ||
"version": "7.0.1", | ||
"version": "7.0.2", | ||
"files": [ | ||
@@ -12,3 +12,3 @@ "bin/", | ||
"type": "git", | ||
"url": "https://github.com/npm/promise-spawn.git" | ||
"url": "git+https://github.com/npm/promise-spawn.git" | ||
}, | ||
@@ -36,3 +36,3 @@ "author": "GitHub Inc.", | ||
"@npmcli/eslint-config": "^4.0.0", | ||
"@npmcli/template-oss": "4.21.3", | ||
"@npmcli/template-oss": "4.22.0", | ||
"spawk": "^1.7.1", | ||
@@ -46,3 +46,3 @@ "tap": "^16.0.1" | ||
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", | ||
"version": "4.21.3", | ||
"version": "4.22.0", | ||
"publish": true | ||
@@ -49,0 +49,0 @@ }, |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
12161
229