1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import {isReadableStream} from 'is-stream';
- import {isUint8Array} from '../utils/uint-array.js';
- import {isUrl, isFilePathString} from './type.js';
- // Append the `stdin` option with the `input` and `inputFile` options
- export const handleInputOptions = ({input, inputFile}, fdNumber) => fdNumber === 0
- ? [
- ...handleInputOption(input),
- ...handleInputFileOption(inputFile),
- ]
- : [];
- const handleInputOption = input => input === undefined ? [] : [{
- type: getInputType(input),
- value: input,
- optionName: 'input',
- }];
- const getInputType = input => {
- if (isReadableStream(input, {checkOpen: false})) {
- return 'nodeStream';
- }
- if (typeof input === 'string') {
- return 'string';
- }
- if (isUint8Array(input)) {
- return 'uint8Array';
- }
- throw new Error('The `input` option must be a string, a Uint8Array or a Node.js Readable stream.');
- };
- const handleInputFileOption = inputFile => inputFile === undefined ? [] : [{
- ...getInputFileType(inputFile),
- optionName: 'inputFile',
- }];
- const getInputFileType = inputFile => {
- if (isUrl(inputFile)) {
- return {type: 'fileUrl', value: inputFile};
- }
- if (isFilePathString(inputFile)) {
- return {type: 'filePath', value: {file: inputFile}};
- }
- throw new Error('The `inputFile` option must be a file path string or a file URL.');
- };
|