12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 'use strict';
- const aliases = ['stdin', 'stdout', 'stderr'];
-
- const hasAlias = opts => aliases.some(alias => opts[alias] !== undefined);
-
- const normalizeStdio = opts => {
- if (!opts) {
- return;
- }
-
- const {stdio} = opts;
-
- if (stdio === undefined) {
- return aliases.map(alias => opts[alias]);
- }
-
- if (hasAlias(opts)) {
- throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${aliases.map(alias => `\`${alias}\``).join(', ')}`);
- }
-
- if (typeof stdio === 'string') {
- return stdio;
- }
-
- if (!Array.isArray(stdio)) {
- throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``);
- }
-
- const length = Math.max(stdio.length, aliases.length);
- return Array.from({length}, (value, index) => stdio[index]);
- };
-
- module.exports = normalizeStdio;
-
- // `ipc` is pushed unless it is already present
- module.exports.node = opts => {
- const stdio = normalizeStdio(opts);
-
- if (stdio === 'ipc') {
- return 'ipc';
- }
-
- if (stdio === undefined || typeof stdio === 'string') {
- return [stdio, stdio, stdio, 'ipc'];
- }
-
- if (stdio.includes('ipc')) {
- return stdio;
- }
-
- return [...stdio, 'ipc'];
- };
|