declare type Task = (...args: any) => any; declare type PromiseResult = T extends Promise ? U : T; declare type Returns = T extends (...args: any) => any ? ReturnType : DEFAULT; declare type Accepts = T extends (...args: any) => any ? Parameters : DEFAULT; declare type RET = Returns; declare type ACC = Accepts; declare type RES_UNBOX = T extends { brand: '5Z7RupztR4SHT30zgDbkfA'; head: infer U; tail: infer V; } ? [U, ...RES_UNBOX2] : T extends { brand: 'aegqPhq3SqmnD9Cvp7OhXQ'; head: infer U; } ? [U] : T extends { brand: 'FuAKcRSZRzyuO6apiynTGQ'; } ? [] : never; declare type RES_UNBOX2 = T extends { brand: '5Z7RupztR4SHT30zgDbkfA'; head: infer U; tail: infer V; } ? [U, ...RES_UNBOX3] : T extends { brand: 'aegqPhq3SqmnD9Cvp7OhXQ'; head: infer U; } ? [U] : T extends { brand: 'FuAKcRSZRzyuO6apiynTGQ'; } ? [] : never; declare type RES_UNBOX3 = T extends { brand: '5Z7RupztR4SHT30zgDbkfA'; head: infer U; tail: infer V; } ? [U, ...RES_UNBOX4] : T extends { brand: 'aegqPhq3SqmnD9Cvp7OhXQ'; head: infer U; } ? [U] : T extends { brand: 'FuAKcRSZRzyuO6apiynTGQ'; } ? [] : never; declare type RES_UNBOX4 = T extends { brand: '5Z7RupztR4SHT30zgDbkfA'; head: infer U; tail: infer V; } ? [U, ...RES_UNBOX5] : T extends { brand: 'aegqPhq3SqmnD9Cvp7OhXQ'; head: infer U; } ? [U] : T extends { brand: 'FuAKcRSZRzyuO6apiynTGQ'; } ? [] : never; declare type RES_UNBOX5 = T extends { brand: '5Z7RupztR4SHT30zgDbkfA'; head: infer U; tail: infer V; } ? [U, ...RES_UNBOX6] : T extends { brand: 'aegqPhq3SqmnD9Cvp7OhXQ'; head: infer U; } ? [U] : T extends { brand: 'FuAKcRSZRzyuO6apiynTGQ'; } ? [] : never; declare type RES_UNBOX6 = T extends { brand: '5Z7RupztR4SHT30zgDbkfA'; head: infer U; tail: infer V; } ? [U, ...RES_UNBOX7] : T extends { brand: 'aegqPhq3SqmnD9Cvp7OhXQ'; head: infer U; } ? [U] : T extends { brand: 'FuAKcRSZRzyuO6apiynTGQ'; } ? [] : never; declare type RES_UNBOX7 = T extends { brand: '5Z7RupztR4SHT30zgDbkfA'; head: infer U; tail: infer V; } ? [U, ...RES_UNBOX8] : T extends { brand: 'aegqPhq3SqmnD9Cvp7OhXQ'; head: infer U; } ? [U] : T extends { brand: 'FuAKcRSZRzyuO6apiynTGQ'; } ? [] : never; declare type RES_UNBOX8 = T extends { brand: '5Z7RupztR4SHT30zgDbkfA'; head: infer U; tail: infer V; } ? [U, ...RES_UNBOX9] : T extends { brand: 'aegqPhq3SqmnD9Cvp7OhXQ'; head: infer U; } ? [U] : T extends { brand: 'FuAKcRSZRzyuO6apiynTGQ'; } ? [] : never; declare type RES_UNBOX9 = T extends { brand: '5Z7RupztR4SHT30zgDbkfA'; head: infer U; tail: infer V; } ? [U, ...RES_UNBOX10] : T extends { brand: 'aegqPhq3SqmnD9Cvp7OhXQ'; head: infer U; } ? [U] : T extends { brand: 'FuAKcRSZRzyuO6apiynTGQ'; } ? [] : never; declare type RES_UNBOX10 = T extends { brand: '5Z7RupztR4SHT30zgDbkfA'; head: infer U; tail: infer V; } ? [U, ...RES_UNBOX11] : T extends { brand: 'aegqPhq3SqmnD9Cvp7OhXQ'; head: infer U; } ? [U] : T extends { brand: 'FuAKcRSZRzyuO6apiynTGQ'; } ? [] : never; declare type RES_UNBOX11 = T extends { brand: '5Z7RupztR4SHT30zgDbkfA'; head: infer U; tail: infer V; } ? [U, ...RES_UNBOX12] : T extends { brand: 'aegqPhq3SqmnD9Cvp7OhXQ'; head: infer U; } ? [U] : T extends { brand: 'FuAKcRSZRzyuO6apiynTGQ'; } ? [] : never; declare type RES_UNBOX12 = T extends { brand: '5Z7RupztR4SHT30zgDbkfA'; head: infer U; tail: infer V; } ? [U, ...RES_UNBOX13] : T extends { brand: 'aegqPhq3SqmnD9Cvp7OhXQ'; head: infer U; } ? [U] : T extends { brand: 'FuAKcRSZRzyuO6apiynTGQ'; } ? [] : never; declare type RES_UNBOX13 = []; declare type _BUILD_RES = T extends Task ? PromiseResult> : never; declare type _RES = T extends [infer HEAD, ...infer TAIL] ? { brand: '5Z7RupztR4SHT30zgDbkfA'; head: _BUILD_RES; tail: _RES; } : T extends [infer HEAD] ? { brand: 'aegqPhq3SqmnD9Cvp7OhXQ'; head: _BUILD_RES; } : { brand: 'FuAKcRSZRzyuO6apiynTGQ'; }; declare type RES = RES_UNBOX<_RES>; declare type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never; declare type IfEquals = (() => G extends T ? 1 : 2) extends (() => G extends U ? 1 : 2) ? Y : N; declare type ParallelArg = T extends Task ? ACC extends [infer U] ? [IfEquals] : ACC extends [] ? unknown[] : any : unknown[]; declare type BoxedParallelArgs = { [P in keyof T]: { _box: ParallelArg; }; }[Exclude]; declare type UnboxIntersection = T extends { _box: infer U; } ? U : never; declare type ParallelTask = Task; declare type ParallelArgs = T extends [...infer U] ? UnboxIntersection>> : T extends (infer U)[] ? ParallelArg : [ ]; declare type ParallelResult = T extends [...infer U] ? RES : T extends (infer U)[] ? _BUILD_RES : unknown; /** * ```javascript * * let InParallel = require('async-patterns/InParallel'); * * const task = InParallel( * async (i) => i + 1, * async (i) => i + 2, * async (i) => i + 3 * ); * * const results = await task(0); // results is [1, 2, 3] * * ``` * * @name InParallel * @param {...function} tasks - any number of async tasks. * @returns {function} an async wrapper function that runs all the tasks in parallel, and returns an array of results * @memberof async-patterns */ declare const InParallel: (...tasks: T) => (...args: ParallelArgs) => Promise>; export = InParallel;