Socket
Socket
Sign inDemoInstall

@npmcli/promise-spawn

Package Overview
Dependencies
Maintainers
5
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@npmcli/promise-spawn - npm Package Compare versions

Comparing version 7.0.1 to 7.0.2

77

lib/index.js

@@ -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 @@ },

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc