diff options
Diffstat (limited to 'sandbox/testAppNevena/Front/node_modules/@npmcli/promise-spawn')
4 files changed, 188 insertions, 0 deletions
diff --git a/sandbox/testAppNevena/Front/node_modules/@npmcli/promise-spawn/LICENSE b/sandbox/testAppNevena/Front/node_modules/@npmcli/promise-spawn/LICENSE new file mode 100644 index 00000000..8f90f96f --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/@npmcli/promise-spawn/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) npm, Inc. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE NPM DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE NPM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, +OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. diff --git a/sandbox/testAppNevena/Front/node_modules/@npmcli/promise-spawn/README.md b/sandbox/testAppNevena/Front/node_modules/@npmcli/promise-spawn/README.md new file mode 100644 index 00000000..b569948c --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/@npmcli/promise-spawn/README.md @@ -0,0 +1,66 @@ +# @npmcli/promise-spawn + +Spawn processes the way the npm cli likes to do. Give it some options, +it'll give you a Promise that resolves or rejects based on the results of +the execution. + +Note: When the current user is root, this will use +[`infer-owner`](http://npm.im/infer-owner) to find the owner of the current +working directory, and run with that effective uid/gid. Otherwise, it runs +as the current user always. (This helps prevent doing git checkouts and +such, and leaving root-owned files lying around in user-owned locations.) + +## USAGE + +```js +const promiseSpawn = require('@npmcli/promise-spawn') + +promiseSpawn('ls', [ '-laF', 'some/dir/*.js' ], { + cwd: '/tmp/some/path', // defaults to process.cwd() + stdioString: false, // stdout/stderr as strings rather than buffers + stdio: 'pipe', // any node spawn stdio arg is valid here + // any other arguments to node child_process.spawn can go here as well, + // but uid/gid will be ignored and set by infer-owner if relevant. +}, { + extra: 'things', + to: 'decorate', + the: 'result', +}).then(result => { + // {code === 0, signal === null, stdout, stderr, and all the extras} + console.log('ok!', result) +}).catch(er => { + // er has all the same properties as the result, set appropriately + console.error('failed!', er) +}) +``` + +## API + +### `promiseSpawn(cmd, args, opts, extra)` -> `Promise` + +Run the command, return a Promise that resolves/rejects based on the +process result. + +Result or error will be decorated with the properties in the `extra` +object. You can use this to attach some helpful info about _why_ the +command is being run, if it makes sense for your use case. + +If `stdio` is set to anything other than `'inherit'`, then the result/error +will be decorated with `stdout` and `stderr` values. If `stdioString` is +set to `true`, these will be strings. Otherwise they will be Buffer +objects. + +Returned promise is decorated with the `stdin` stream if the process is set +to pipe from `stdin`. Writing to this stream writes to the `stdin` of the +spawned process. + +#### Options + +- `stdioString` Boolean, default `false`. Return stdout/stderr output as + strings rather than buffers. +- `cwd` String, default `process.cwd()`. Current working directory for + running the script. Also the argument to `infer-owner` to determine + effective uid/gid when run as root on Unix systems. +- Any other options for `child_process.spawn` can be passed as well, but + note that `uid` and `gid` will be overridden by the owner of the cwd when + run as root on Unix systems, or `null` otherwise. diff --git a/sandbox/testAppNevena/Front/node_modules/@npmcli/promise-spawn/index.js b/sandbox/testAppNevena/Front/node_modules/@npmcli/promise-spawn/index.js new file mode 100644 index 00000000..6ad51b8e --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/@npmcli/promise-spawn/index.js @@ -0,0 +1,75 @@ +const {spawn} = require('child_process') + +const inferOwner = require('infer-owner') + +const isPipe = (stdio = 'pipe', fd) => + stdio === 'pipe' || stdio === null ? true + : Array.isArray(stdio) ? isPipe(stdio[fd], fd) + : false + +// 'extra' object is for decorating the error a bit more +const promiseSpawn = (cmd, args, opts, extra = {}) => { + const cwd = opts.cwd || process.cwd() + const isRoot = process.getuid && process.getuid() === 0 + const { uid, gid } = isRoot ? inferOwner.sync(cwd) : {} + return promiseSpawnUid(cmd, args, { + ...opts, + cwd, + uid, + gid + }, extra) +} + +const stdioResult = (stdout, stderr, {stdioString, stdio}) => + stdioString ? { + stdout: isPipe(stdio, 1) ? Buffer.concat(stdout).toString() : null, + stderr: isPipe(stdio, 2) ? Buffer.concat(stderr).toString() : null, + } + : { + stdout: isPipe(stdio, 1) ? Buffer.concat(stdout) : null, + stderr: isPipe(stdio, 2) ? Buffer.concat(stderr) : null, + } + +const promiseSpawnUid = (cmd, args, opts, extra) => { + let proc + const p = new Promise((res, rej) => { + proc = spawn(cmd, args, opts) + const stdout = [] + const stderr = [] + const reject = er => rej(Object.assign(er, { + cmd, + args, + ...stdioResult(stdout, stderr, opts), + ...extra, + })) + proc.on('error', reject) + if (proc.stdout) { + proc.stdout.on('data', c => stdout.push(c)).on('error', reject) + proc.stdout.on('error', er => reject(er)) + } + if (proc.stderr) { + proc.stderr.on('data', c => stderr.push(c)).on('error', reject) + proc.stderr.on('error', er => reject(er)) + } + proc.on('close', (code, signal) => { + const result = { + cmd, + args, + code, + signal, + ...stdioResult(stdout, stderr, opts), + ...extra + } + if (code || signal) + rej(Object.assign(new Error('command failed'), result)) + else + res(result) + }) + }) + + p.stdin = proc.stdin + p.process = proc + return p +} + +module.exports = promiseSpawn diff --git a/sandbox/testAppNevena/Front/node_modules/@npmcli/promise-spawn/package.json b/sandbox/testAppNevena/Front/node_modules/@npmcli/promise-spawn/package.json new file mode 100644 index 00000000..be7342f5 --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/@npmcli/promise-spawn/package.json @@ -0,0 +1,32 @@ +{ + "name": "@npmcli/promise-spawn", + "version": "1.3.2", + "files": [ + "index.js" + ], + "description": "spawn processes the way the npm cli likes to do", + "repository": { + "type": "git", + "url": "git+https://github.com/npm/promise-spawn" + }, + "author": "Isaac Z. Schlueter <i@izs.me> (https://izs.me)", + "license": "ISC", + "scripts": { + "test": "tap", + "snap": "tap", + "preversion": "npm test", + "postversion": "npm publish", + "prepublishOnly": "git push origin --follow-tags" + }, + "tap": { + "check-coverage": true + }, + "devDependencies": { + "minipass": "^3.1.1", + "require-inject": "^1.4.4", + "tap": "^14.10.6" + }, + "dependencies": { + "infer-owner": "^1.0.4" + } +} |