import { Task } from './task' ; declare module './task' { namespace Task { function all < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , E1 , E2 , E3 , E4 , E5 , E6 , E7 , E8 , E9 , E10 > ( tasks ) ; function all < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , E1 , E2 , E3 , E4 , E5 , E6 , E7 , E8 , E9 > ( tasks ) ; function all < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , E1 , E2 , E3 , E4 , E5 , E6 , E7 , E8 > ( tasks ) ; function all < T1 , T2 , T3 , T4 , T5 , T6 , T7 , E1 , E2 , E3 , E4 , E5 , E6 , E7 > ( tasks ) ; function all < T1 , T2 , T3 , T4 , T5 , T6 , E1 , E2 , E3 , E4 , E5 , E6 > ( tasks ) ; function all < T1 , T2 , T3 , T4 , T5 , E1 , E2 , E3 , E4 , E5 > ( tasks ) ; function all < T1 , T2 , T3 , T4 , E1 , E2 , E3 , E4 > ( tasks ) ; function all < T1 , T2 , T3 , E1 , E2 , E3 > ( tasks ) ; function all < T1 , T2 , E1 , E2 > ( tasks ) ; function all < T1 , E1 > ( tasks ) ; function all < T , E > ( tasks ) ; } } Task . all = function ( tasks ) : any { let rejected = false ; const resolvedValues = [ ] ; let resolvedQty = 0 ; return new Task ( ( outerResolve , outerReject ) => { if ( ! tasks . length ) { outerResolve ( [ ] ) ; } tasks . forEach ( ( aTask , index ) => { aTask . fork ( ( err ) => { if ( ! rejected ) { rejected = true ; outerReject ( err ) ; } } , ( x ) => { if ( rejected ) { return ; } resolvedValues [ index ] = x ; resolvedQty ++ ; if ( resolvedQty === tasks . length ) { outerResolve ( resolvedValues ) ; } } ) ; } ) ; } ) ; } ;