Socket
Socket
Sign inDemoInstall

execa

Package Overview
Dependencies
20
Maintainers
2
Versions
54
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 9.0.1 to 9.0.2

lib/arguments/specific.js~

5

package.json
{
"name": "execa",
"version": "9.0.1",
"version": "9.0.2",
"description": "Process execution for humans",

@@ -23,3 +23,3 @@ "license": "MIT",

"scripts": {
"test": "xo && c8 ava && tsd"
"test": "xo && c8 ava && tsd && tsc"
},

@@ -76,2 +76,3 @@ "files": [

"tsd": "^0.31.0",
"typescript": "^5.4.5",
"which": "^4.0.0",

@@ -78,0 +79,0 @@ "xo": "^0.58.0"

10

types/arguments/specific.d.ts
import type {FromOption} from './fd-options.js';
// Options which can be fd-specific like `{verbose: {stdout: 'none', stderr: 'full'}}`
export type FdGenericOption<OptionType = unknown> = OptionType | GenericOptionObject<OptionType>;
export type FdGenericOption<OptionType> = OptionType | GenericOptionObject<OptionType>;
type GenericOptionObject<OptionType = unknown> = {
type GenericOptionObject<OptionType> = {
readonly [FdName in FromOption]?: OptionType

@@ -12,5 +12,5 @@ };

export type FdSpecificOption<
GenericOption extends FdGenericOption,
GenericOption extends FdGenericOption<unknown>,
FdNumber extends string,
> = GenericOption extends GenericOptionObject
> = GenericOption extends GenericOptionObject<unknown>
? FdSpecificObjectOption<GenericOption, FdNumber>

@@ -20,3 +20,3 @@ : GenericOption;

type FdSpecificObjectOption<
GenericOption extends GenericOptionObject,
GenericOption extends GenericOptionObject<unknown>,
FdNumber extends string,

@@ -23,0 +23,0 @@ > = keyof GenericOption extends FromOption

@@ -1,10 +0,12 @@

import type {CommonResultInstance} from '../return/result.js';
import type {Result, SyncResult} from '../return/result.js';
// Values allowed inside `...${...}...` template syntax
export type TemplateExpression =
type TemplateExpressionItem =
| string
| number
| CommonResultInstance
| ReadonlyArray<string | number | CommonResultInstance>;
| Result
| SyncResult;
export type TemplateExpression = TemplateExpressionItem | readonly TemplateExpressionItem[];
// `...${...}...` template syntax

@@ -11,0 +13,0 @@ export type TemplateString = readonly [TemplateStringsArray, ...readonly TemplateExpression[]];

@@ -5,12 +5,18 @@ import type {CommonOptions, Options, SyncOptions} from '../arguments/options.js';

declare abstract class CommonError<
IsSync extends boolean = boolean,
OptionsType extends CommonOptions = CommonOptions,
IsSync extends boolean,
OptionsType extends CommonOptions,
> extends CommonResult<IsSync, OptionsType> {
message: NonNullable<CommonResult['message']>;
shortMessage: NonNullable<CommonResult['shortMessage']>;
originalMessage: NonNullable<CommonResult['originalMessage']>;
readonly name: NonNullable<CommonResult['name']>;
stack: NonNullable<CommonResult['stack']>;
message: CommonErrorProperty<IsSync, OptionsType, 'message'>;
shortMessage: CommonErrorProperty<IsSync, OptionsType, 'shortMessage'>;
originalMessage: CommonErrorProperty<IsSync, OptionsType, 'originalMessage'>;
readonly name: CommonErrorProperty<IsSync, OptionsType, 'name'>;
stack: CommonErrorProperty<IsSync, OptionsType, 'stack'>;
}
type CommonErrorProperty<
IsSync extends boolean,
OptionsType extends CommonOptions,
PropertyName extends keyof CommonResult<IsSync, OptionsType>,
> = NonNullable<CommonResult<IsSync, OptionsType>[PropertyName]>;
// `result.*` defined only on failure, i.e. on `error.*`

@@ -17,0 +23,0 @@ export type ErrorProperties =

@@ -10,3 +10,3 @@ import type {NoStreamStdioOption, StdioOptionCommon} from '../stdio/type.js';

FdNumber extends string,
OptionsType extends CommonOptions = CommonOptions,
OptionsType extends CommonOptions,
> = FdSpecificOption<OptionsType['buffer'], FdNumber> extends false

@@ -21,3 +21,3 @@ ? true

FdNumber extends string,
OptionsType extends CommonOptions = CommonOptions,
OptionsType extends CommonOptions,
> = IgnoresOutput<FdNumber, FdStdioOption<FdNumber, OptionsType>>;

@@ -24,0 +24,0 @@

@@ -8,8 +8,8 @@ import type {IsObjectFd} from '../transform/object-mode.js';

// `result.all`
export type ResultAll<OptionsType extends CommonOptions = CommonOptions> =
export type ResultAll<OptionsType extends CommonOptions> =
ResultAllProperty<OptionsType['all'], OptionsType>;
type ResultAllProperty<
AllOption extends CommonOptions['all'] = CommonOptions['all'],
OptionsType extends CommonOptions = CommonOptions,
AllOption extends CommonOptions['all'],
OptionsType extends CommonOptions,
> = AllOption extends true

@@ -24,9 +24,9 @@ ? ResultStdio<

type AllMainFd<OptionsType extends CommonOptions = CommonOptions> =
type AllMainFd<OptionsType extends CommonOptions> =
IgnoresResultOutput<'1', OptionsType> extends true ? '2' : '1';
type AllObjectFd<OptionsType extends CommonOptions = CommonOptions> =
type AllObjectFd<OptionsType extends CommonOptions> =
IsObjectFd<'1', OptionsType> extends true ? '1' : '2';
type AllLinesFd<OptionsType extends CommonOptions = CommonOptions> =
type AllLinesFd<OptionsType extends CommonOptions> =
FdSpecificOption<OptionsType['lines'], '1'> extends true ? '1' : '2';

@@ -7,3 +7,3 @@ import type {StdioOptionsArray} from '../stdio/type.js';

// `result.stdio`
export type ResultStdioArray<OptionsType extends CommonOptions = CommonOptions> =
export type ResultStdioArray<OptionsType extends CommonOptions> =
MapResultStdio<StdioOptionNormalizedArray<OptionsType>, OptionsType>;

@@ -13,3 +13,3 @@

StdioOptionsArrayType extends StdioOptionsArray,
OptionsType extends CommonOptions = CommonOptions,
OptionsType extends CommonOptions,
> = {

@@ -16,0 +16,0 @@ -readonly [FdNumber in keyof StdioOptionsArrayType]: ResultStdioNotAll<

@@ -10,3 +10,3 @@ import type {BufferEncodingOption, BinaryEncodingOption} from '../arguments/encoding-option.js';

FdNumber extends string,
OptionsType extends CommonOptions = CommonOptions,
OptionsType extends CommonOptions,
> = ResultStdio<FdNumber, FdNumber, FdNumber, OptionsType>;

@@ -19,3 +19,3 @@

LinesFdNumber extends string,
OptionsType extends CommonOptions = CommonOptions,
OptionsType extends CommonOptions,
> = ResultStdioProperty<

@@ -32,3 +32,3 @@ ObjectFdNumber,

StreamOutputIgnored extends boolean,
OptionsType extends CommonOptions = CommonOptions,
OptionsType extends CommonOptions,
> = StreamOutputIgnored extends true

@@ -35,0 +35,0 @@ ? undefined

@@ -10,4 +10,4 @@ import type {SignalConstants} from 'node:os';

export declare abstract class CommonResult<
IsSync extends boolean = boolean,
OptionsType extends CommonOptions = CommonOptions,
IsSync extends boolean,
OptionsType extends CommonOptions,
> {

@@ -165,15 +165,10 @@ /**

export type CommonResultInstance<
IsSync extends boolean = boolean,
OptionsType extends CommonOptions = CommonOptions,
> = InstanceType<typeof CommonResult<IsSync, OptionsType>>;
type SuccessResult<
IsSync extends boolean = boolean,
OptionsType extends CommonOptions = CommonOptions,
> = CommonResultInstance<IsSync, OptionsType> & OmitErrorIfReject<OptionsType['reject']>;
IsSync extends boolean,
OptionsType extends CommonOptions,
> = InstanceType<typeof CommonResult<IsSync, OptionsType>> & OmitErrorIfReject<OptionsType['reject']>;
type OmitErrorIfReject<RejectOption extends CommonOptions['reject']> = RejectOption extends false
? {}
: {[ErrorProperty in ErrorProperties]: never};
type OmitErrorIfReject<RejectOption extends CommonOptions['reject']> = {
[ErrorProperty in ErrorProperties]: RejectOption extends false ? unknown : never
};

@@ -180,0 +175,0 @@ /**

@@ -5,5 +5,5 @@ import type {CommonOptions} from '../arguments/options.js';

// `options.stdio`, normalized as an array
export type StdioOptionNormalizedArray<OptionsType extends CommonOptions = CommonOptions> = StdioOptionNormalized<OptionsType['stdio']>;
export type StdioOptionNormalizedArray<OptionsType extends CommonOptions> = StdioOptionNormalized<OptionsType['stdio']>;
type StdioOptionNormalized<StdioOption extends CommonOptions['stdio'] = CommonOptions['stdio']> = StdioOption extends StdioOptionsArray
type StdioOptionNormalized<StdioOption extends CommonOptions['stdio']> = StdioOption extends StdioOptionsArray
? StdioOption

@@ -10,0 +10,0 @@ : StdioOption extends StdinOptionCommon

@@ -9,5 +9,5 @@ import type {CommonOptions} from '../arguments/options.js';

FdNumber extends string,
OptionsType extends CommonOptions = CommonOptions,
OptionsType extends CommonOptions,
> = FdNumber extends '0'
? true
: Intersects<StdioSingleOptionItems<FdStdioArrayOption<FdNumber, OptionsType>>, InputStdioOption>;

@@ -13,3 +13,3 @@ import type {CommonOptions} from '../arguments/options.js';

FdNumber extends string,
OptionsType extends CommonOptions = CommonOptions,
OptionsType extends CommonOptions,
> = Extract<FdStdioOptionProperty<FdNumber, OptionsType>, StdioOptionCommon>;

@@ -19,3 +19,3 @@

FdNumber extends string,
OptionsType extends CommonOptions = CommonOptions,
OptionsType extends CommonOptions,
> = string extends FdNumber ? StdioOptionCommon

@@ -33,3 +33,3 @@ : FdNumber extends keyof StandardStreams

FdNumber extends string,
OptionsType extends CommonOptions = CommonOptions,
OptionsType extends CommonOptions,
> = Extract<FdStdioArrayOptionProperty<FdNumber, StdioOptionNormalizedArray<OptionsType>>, StdioOptionCommon>;

@@ -45,5 +45,5 @@

? StdioOptionsType[FdNumber]
: StdioOptionNormalizedArray extends StdioOptionsType
: StdioOptionNormalizedArray<CommonOptions> extends StdioOptionsType
? StdioOptionsType[number]
: undefined
: undefined;
import type {Readable, Writable} from 'node:stream';
import type {ReadableStream, WritableStream, TransformStream} from 'node:stream/web';
import type {

@@ -92,5 +93,5 @@ Not,

type StdinSingleOption<
IsSync extends boolean = boolean,
IsExtra extends boolean = boolean,
IsArray extends boolean = boolean,
IsSync extends boolean,
IsExtra extends boolean,
IsArray extends boolean,
> =

@@ -115,5 +116,5 @@ | CommonStdioOption<IsSync, IsExtra, IsArray>

type StdoutStderrSingleOption<
IsSync extends boolean = boolean,
IsExtra extends boolean = boolean,
IsArray extends boolean = boolean,
IsSync extends boolean,
IsExtra extends boolean,
IsArray extends boolean,
> =

@@ -137,3 +138,3 @@ | CommonStdioOption<IsSync, IsExtra, IsArray>

// `options.stdio[3+]`
type StdioExtraOptionCommon<IsSync extends boolean = boolean> =
type StdioExtraOptionCommon<IsSync extends boolean> =
| StdinOptionCommon<IsSync, true>

@@ -140,0 +141,0 @@ | StdoutStderrOptionCommon<IsSync, true>;

@@ -6,20 +6,13 @@ import type {Readable} from 'node:stream';

// `subprocess.all`
export type SubprocessAll<OptionsType extends Options = Options> = AllStream<OptionsType['all'], OptionsType>;
export type SubprocessAll<OptionsType extends Options> = AllStream<AllIgnored<OptionsType['all'], OptionsType>>;
type AllStream<
AllOption extends Options['all'] = Options['all'],
OptionsType extends Options = Options,
type AllStream<IsIgnored> = IsIgnored extends true ? undefined : Readable;
type AllIgnored<
AllOption extends Options['all'],
OptionsType extends Options,
> = AllOption extends true
? AllIfStdout<IgnoresSubprocessOutput<'1', OptionsType>, OptionsType>
: undefined;
type AllIfStdout<
StdoutResultIgnored extends boolean,
OptionsType extends Options = Options,
> = StdoutResultIgnored extends true
? AllIfStderr<IgnoresSubprocessOutput<'2', OptionsType>>
: Readable;
type AllIfStderr<StderrResultIgnored extends boolean> = StderrResultIgnored extends true
? undefined
: Readable;
? IgnoresSubprocessOutput<'1', OptionsType> extends true
? IgnoresSubprocessOutput<'2', OptionsType>
: false
: true;

@@ -7,3 +7,3 @@ import type {StdioOptionNormalizedArray} from '../stdio/array.js';

// `subprocess.stdio`
export type SubprocessStdioArray<OptionsType extends Options = Options> = MapStdioStreams<StdioOptionNormalizedArray<OptionsType>, OptionsType>;
export type SubprocessStdioArray<OptionsType extends Options> = MapStdioStreams<StdioOptionNormalizedArray<OptionsType>, OptionsType>;

@@ -13,3 +13,3 @@ // We cannot use mapped types because it must be compatible with Node.js `ChildProcess["stdio"]` which uses a tuple with exactly 5 items

StdioOptionsArrayType extends StdioOptionsArray,
OptionsType extends Options = Options,
OptionsType extends Options,
> = [

@@ -16,0 +16,0 @@ SubprocessStdioStream<'0', OptionsType>,

@@ -9,3 +9,3 @@ import type {Readable, Writable} from 'node:stream';

FdNumber extends string,
OptionsType extends Options = Options,
OptionsType extends Options,
> = SubprocessStream<FdNumber, IgnoresSubprocessOutput<FdNumber, OptionsType>, OptionsType>;

@@ -16,3 +16,3 @@

StreamResultIgnored extends boolean,
OptionsType extends Options = Options,
OptionsType extends Options,
> = StreamResultIgnored extends true

@@ -19,0 +19,0 @@ ? null

@@ -24,3 +24,3 @@ import type {ChildProcess} from 'node:child_process';

type ExecaCustomSubprocess<OptionsType extends Options = Options> = {
type ExecaCustomSubprocess<OptionsType extends Options> = {
/**

@@ -27,0 +27,0 @@ Process identifier ([PID](https://en.wikipedia.org/wiki/Process_identifier)).

@@ -0,1 +1,2 @@

import type {TransformStream} from 'node:stream/web';
import type {Duplex} from 'node:stream';

@@ -14,2 +15,9 @@ import type {Unless} from '../utils.js';

export type TransformCommon = {
/**
If `true`, allow `transformOptions.transform` and `transformOptions.final` to return any type, not just `string` or `Uint8Array`.
*/
readonly objectMode?: boolean;
};
/**

@@ -40,14 +48,8 @@ A transform or an array of transforms can be passed to the `stdin`, `stdout`, `stderr` or `stdio` option.

readonly preserveNewlines?: boolean;
} & TransformCommon;
/**
If `true`, allow `transformOptions.transform` and `transformOptions.final` to return any type, not just `string` or `Uint8Array`.
*/
readonly objectMode?: boolean;
};
// `options.std*: Duplex`
export type DuplexTransform = {
readonly transform: Duplex;
readonly objectMode?: boolean;
};
} & TransformCommon;

@@ -57,3 +59,2 @@ // `options.std*: TransformStream`

readonly transform: TransformStream;
readonly objectMode?: boolean;
};
} & TransformCommon;
import type {StdioSingleOption, StdioOptionCommon, StdioSingleOptionItems} from '../stdio/type.js';
import type {FdStdioOption} from '../stdio/option.js';
import type {CommonOptions} from '../arguments/options.js';
import type {DuplexTransform} from './normalize.js';
import type {DuplexTransform, TransformCommon} from './normalize.js';

@@ -10,3 +10,3 @@ // Whether a file descriptor is in object mode

FdNumber extends string,
OptionsType extends CommonOptions = CommonOptions,
OptionsType extends CommonOptions,
> = IsObjectStdioOption<FdStdioOption<FdNumber, OptionsType>>;

@@ -16,3 +16,3 @@

type IsObjectStdioSingleOption<StdioSingleOptionType extends StdioSingleOption> = StdioSingleOptionType extends {objectMode?: boolean}
type IsObjectStdioSingleOption<StdioSingleOptionType extends StdioSingleOption> = StdioSingleOptionType extends TransformCommon
? BooleanObjectMode<StdioSingleOptionType['objectMode']>

@@ -19,0 +19,0 @@ : StdioSingleOptionType extends DuplexTransform

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc