UNPKG

execa

Version:
27 lines (21 loc) • 1.24 kB
import type {StdioSingleOptionItems} from '../stdio/type.js'; import type {FdStdioOption} from '../stdio/option.js'; import type {CommonOptions} from '../arguments/options.js'; import type {DuplexTransform, TransformCommon} from './normalize.js'; // Whether a file descriptor is in object mode // I.e. whether `result.stdout|stderr|stdio|all` is an array of `unknown` due to `objectMode: true` export type IsObjectFd< FdNumber extends string, OptionsType extends CommonOptions, > = IsObjectStdioOption<FdStdioOption<FdNumber, OptionsType>>; type IsObjectStdioOption<StdioOptionType> = IsObjectStdioSingleOption<StdioSingleOptionItems<StdioOptionType>>; // Direction wrappers do not change the transform's object mode. type IsObjectStdioSingleOption<StdioSingleOptionType> = StdioSingleOptionType extends {readonly value: infer Value} ? IsObjectStdioSingleOption<Value> : StdioSingleOptionType extends TransformCommon ? BooleanObjectMode<StdioSingleOptionType['objectMode']> : StdioSingleOptionType extends DuplexTransform ? StdioSingleOptionType['transform']['readableObjectMode'] : false; type BooleanObjectMode<ObjectModeOption extends boolean | undefined> = ObjectModeOption extends true ? true : false; export {};