/// // Tests by: Bart van der Schoor // Note: replicate changes to all overloads in both definition and test file // Note: keep both static and instance members inline (so similar) // Note: try to maintain the ordering and separators, and keep to the pattern var obj: Object; var bool: boolean; var num: number; var str: string; var err: Error; var x: any; var f: Function; var func: Function; var arr: any[]; var exp: RegExp; var anyArr: any[]; var strArr: string[]; var numArr: number[]; var voidVar: void; // - - - - - - - - - - - - - - - - - var value: any; var reason: any; var insanity: any; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - interface Foo { foo(): string; } interface Bar { bar(): string; } // - - - - - - - - - - - - - - - - - interface StrFooMap { [key:string]:Foo; } interface StrBarMap { [key:string]:Bar; } // - - - - - - - - - - - - - - - - - interface StrFooArrMap { [key:string]:Foo[]; } interface StrBarArrMap { [key:string]:Bar[]; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - var foo: Foo; var bar: Bar; var fooArr: Foo[]; var barArr: Bar[]; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - var numProm: Promise; var strProm: Promise; var anyProm: Promise; var boolProm: Promise; var objProm: Promise; var voidProm: Promise; var fooProm: Promise; var barProm: Promise; // - - - - - - - - - - - - - - - - - var numThen: Promise.Thenable; var strThen: Promise.Thenable; var anyThen: Promise.Thenable; var boolThen: Promise.Thenable; var objThen: Promise.Thenable; var voidThen: Promise.Thenable; var fooThen: Promise.Thenable; var barThen: Promise.Thenable; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - var numArrProm: Promise; var strArrProm: Promise; var anyArrProm: Promise; var fooArrProm: Promise; var barArrProm: Promise; // - - - - - - - - - - - - - - - - - var numArrThen: Promise.Thenable; var strArrThen: Promise.Thenable; var anyArrThen: Promise.Thenable; var fooArrThen: Promise.Thenable; var barArrThen: Promise.Thenable; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - var numPromArr: Promise[]; var strPromArr: Promise[]; var anyPromArr: Promise[]; var fooPromArr: Promise[]; var barPromArr: Promise[]; // - - - - - - - - - - - - - - - - - var numThenArr: Promise.Thenable[]; var strThenArr: Promise.Thenable[]; var anyThenArr: Promise.Thenable[]; var fooThenArr: Promise.Thenable[]; var barThenArr: Promise.Thenable[]; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // booya! var fooThenArrThen: Promise.Thenable[]>; var barThenArrThen: Promise.Thenable[]>; var fooResolver: Promise.Resolver; var barResolver: Promise.Resolver; var fooInspection: Promise.Inspection; var barInspection: Promise.Inspection; var fooInspectionArrProm: Promise[]>; var barInspectionArrProm: Promise[]>; var BlueBird: typeof Promise; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - var nodeCallbackFunc = (callback: (err: any, result: string) => void) => {} // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooThen = fooProm; barThen = barProm; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooProm = new Promise((resolve: (value: Foo) => void, reject: (reason: any) => void) => { if (bool) { resolve(foo); } else { reject(new Error(str)); } }); fooProm = new Promise((resolve: (value: Foo) => void) => { if (bool) { resolve(foo); } }); // - - - - - - - - - - - - - - - - - - - - - - - // needs a hint when used untyped? fooProm = new Promise((resolve, reject) => { if (bool) { resolve(fooThen); } else { reject(new Error(str)); } }); fooProm = new Promise((resolve) => { resolve(fooThen); }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooResolver.resolve(foo); fooResolver.reject(err); fooResolver.progress(bar); fooResolver.callback = (err: any, value: Foo) => { }; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool = fooInspection.isFulfilled(); bool = fooInspection.isRejected(); bool = fooInspection.isPending(); foo = fooInspection.value(); x = fooInspection.reason(); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - barProm = fooProm.then((value: Foo) => { return bar; }, (reason: any) => { return bar; }, (note: any) => { return bar; }); barProm = fooProm.then((value: Foo) => { return bar; }, (reason: any) => { return bar; }); barProm = fooProm.then((value: Foo) => { return bar; }); barProm = barProm.then((value: Bar) => { if (value) return value; var b:Bar; return Promise.resolve(b); }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - barProm = fooProm.catch((reason: any) => { return bar; }); barProm = fooProm.caught((reason: any) => { return bar; }); barProm = fooProm.catch((reason: any) => { return bar; }, (reason: any) => { return bar; }); barProm = fooProm.caught((reason: any) => { return bar; }, (reason: any) => { return bar; }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - barProm = fooProm.catch(Error, (reason: any) => { return bar; }); barProm = fooProm.catch(Promise.CancellationError, (reason: any) => { return bar; }); barProm = fooProm.caught(Error, (reason: any) => { return bar; }); barProm = fooProm.caught(Promise.CancellationError, (reason: any) => { return bar; }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - barProm = fooProm.error((reason: any) => { return bar; }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooProm = fooProm.finally(() => { // non-Thenable return is ignored return "foo"; }); fooProm = fooProm.finally(() => { return fooThen; }); fooProm = fooProm.finally(() => { // non-Thenable return is ignored }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooProm = fooProm.lastly(() => { // non-Thenable return is ignored return "foo"; }); fooProm = fooProm.lastly(() => { return fooThen; }); fooProm = fooProm.lastly(() => { // non-Thenable return is ignored }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooProm = fooProm.bind(obj); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - voidVar = fooProm.done((value: Foo) => { return bar; }, (reason: any) => { return bar; }, (note: any) => { }); voidVar = fooProm.done((value: Foo) => { return bar; }, (reason: any) => { return bar; }); voidVar = fooProm.done((value: Foo) => { return bar; }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - voidVar = fooProm.done((value: Foo) => { return barThen; }, (reason: any) => { return barThen; }, (note: any) => { }); voidVar = fooProm.done((value: Foo) => { return barThen; }, (reason: any) => { return barThen; }); voidVar = fooProm.done((value: Foo) => { return barThen; }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooProm = fooProm.tap((value: Foo) => { // non-Thenable return is ignored return "foo"; }); fooProm = fooProm.tap((value: Foo) => { return fooThen; }); fooProm = fooProm.tap((value: Foo) => { return voidThen; }); fooProm = fooProm.tap(() => { // non-Thenable return is ignored }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooProm = fooProm.progressed((note: any) => { return foo; }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooProm = fooProm.delay(num); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooProm = fooProm.timeout(num); fooProm = fooProm.timeout(num, str); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooProm.nodeify(); fooProm = fooProm.nodeify((err: any) => { }); fooProm = fooProm.nodeify((err: any, foo?: Foo) => { }); fooProm.nodeify({ spread: true }); fooProm = fooProm.nodeify((err: any) => { }, { spread: true }); fooProm = fooProm.nodeify((err: any, foo?: Foo) => { }, { spread: true }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - barProm = fooProm.fork((value: Foo) => { return bar; }, (reason: any) => { return bar; }, (note: any) => { }); barProm = fooProm.fork((value: Foo) => { return bar; }, (reason: any) => { return bar; }); barProm = fooProm.fork((value: Foo) => { return bar; }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - barProm = fooProm.fork((value: Foo) => { return barThen; }, (reason: any) => { return barThen; }, (note: any) => { }); barProm = fooProm.fork((value: Foo) => { return barThen; }, (reason: any) => { return barThen; }); barProm = fooProm.fork((value: Foo) => { return barThen; }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - barProm = fooProm.cancel(); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooProm = fooProm.cancellable(); fooProm = fooProm.uncancellable(); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool = fooProm.isCancellable(); bool = fooProm.isFulfilled(); bool = fooProm.isRejected(); bool = fooProm.isPending(); bool = fooProm.isResolved(); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooInspection = fooProm.inspect(); anyProm = fooProm.call(str); anyProm = fooProm.call(str, 1, 2, 3); //TODO enable get() test when implemented // barProm = fooProm.get(str); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - barProm = fooProm.return(bar); barProm = fooProm.thenReturn(bar); voidProm = fooProm.return(); voidProm = fooProm.thenReturn(); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // fooProm fooProm = fooProm.throw(err); fooProm = fooProm.thenThrow(err); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - str = fooProm.toString(); obj = fooProm.toJSON(); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - barProm = fooArrProm.spread((one: Foo, two: Bar) => { return bar; }, (reason: any) => { return bar; }); barProm = fooArrProm.spread((one: Foo, two: Bar, twotwo: Foo) => { return bar; }); // - - - - - - - - - - - - - - - - - barProm = fooArrProm.spread((one: Foo, two: Bar) => { return barThen; }, (reason: any) => { return barThen; }); barProm = fooArrProm.spread((one: Foo, two: Bar, twotwo: Foo) => { return barThen; }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //TODO fix collection inference barArrProm = fooProm.all(); objProm = fooProm.props(); barInspectionArrProm = fooProm.settle(); barProm = fooProm.any(); barArrProm = fooProm.some(num); barProm = fooProm.race(); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //TODO fix collection inference barArrProm = fooProm.map((item: Foo, index: number, arrayLength: number) => { return bar; }); barArrProm = fooProm.map((item: Foo) => { return bar; }); barArrProm = fooProm.map((item: Foo, index: number, arrayLength: number) => { return bar; }, { concurrency: 1 }); barArrProm = fooProm.map((item: Foo) => { return bar; }, { concurrency: 1 }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - barProm = fooProm.reduce((memo: Bar, item: Foo, index: number, arrayLength: number) => { return memo; }); barProm = fooProm.reduce((memo: Bar, item: Foo) => { return memo; }, bar); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooArrProm = fooArrProm.filter((item: Foo, index: number, arrayLength: number) => { return bool; }); fooArrProm = fooArrProm.filter((item: Foo) => { return bool; }); fooArrProm = fooArrProm.filter((item: Foo, index: number, arrayLength: number) => { return bool; }, { concurrency: 1 }); fooArrProm = fooArrProm.filter((item: Foo) => { return bool; }, { concurrency: 1 }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooProm = Promise.try(() => { return foo; }); fooProm = Promise.try(() => { return foo; }, arr); fooProm = Promise.try(() => { return foo; }, arr, x); // - - - - - - - - - - - - - - - - - fooProm = Promise.try(() => { return fooThen; }); fooProm = Promise.try(() => { return fooThen; }, arr); fooProm = Promise.try(() => { return fooThen; }, arr, x); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooProm = Promise.attempt(() => { return foo; }); fooProm = Promise.attempt(() => { return foo; }, arr); fooProm = Promise.attempt(() => { return foo; }, arr, x); // - - - - - - - - - - - - - - - - - fooProm = Promise.attempt(() => { return fooThen; }); fooProm = Promise.attempt(() => { return fooThen; }, arr); fooProm = Promise.attempt(() => { return fooThen; }, arr, x); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - func = Promise.method(function () { }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooProm = Promise.resolve(foo); fooProm = Promise.resolve(fooThen); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - voidProm = Promise.reject(reason); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooResolver = Promise.defer(); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooProm = Promise.cast(foo); fooProm = Promise.cast(fooThen); voidProm = Promise.bind(x); bool = Promise.is(value); Promise.longStackTraces(); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //TODO enable delay fooProm = Promise.delay(fooThen, num); fooProm = Promise.delay(foo, num); voidProm = Promise.delay(num); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - func = Promise.promisify(f); func = Promise.promisify(f, obj); obj = Promise.promisifyAll(obj); anyProm = Promise.fromNode(callback => nodeCallbackFunc(callback)); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - declare var util: any; function defaultFilter(name: string, func: Function) { return util.isIdentifier(name) && name.charAt(0) !== "_" && !util.isClass(func); } function DOMPromisifier(originalMethod: Function) { // return a function return function promisified() { var args = [].slice.call(arguments); // Needed so that the original method can be called with the correct receiver var self = this; // which returns a promise return new Promise(function(resolve, reject) { args.push(resolve, reject); originalMethod.apply(self, args); }); }; } obj = Promise.promisifyAll(obj, { suffix: "", filter: defaultFilter, promisifier: DOMPromisifier }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //TODO enable generator /* func = Promise.coroutine(f); barProm = Promise.spawn(f); */ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BlueBird = Promise.noConflict(); Promise.onPossiblyUnhandledRejection((reason: any) => { }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //TODO expand tests to overloads fooArrProm = Promise.all(fooThenArrThen); fooArrProm = Promise.all(fooArrProm); fooArrProm = Promise.all(fooThenArr); fooArrProm = Promise.all(fooArr); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - objProm = Promise.props(objProm); objProm = Promise.props(obj); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //TODO expand tests to overloads fooInspectionArrProm = Promise.settle(fooThenArrThen); fooInspectionArrProm = Promise.settle(fooArrProm); fooInspectionArrProm = Promise.settle(fooThenArr); fooInspectionArrProm = Promise.settle(fooArr); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //TODO expand tests to overloads fooProm = Promise.any(fooThenArrThen); fooProm = Promise.any(fooArrProm); fooProm = Promise.any(fooThenArr); fooProm = Promise.any(fooArr); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //TODO expand tests to overloads fooProm = Promise.race(fooThenArrThen); fooProm = Promise.race(fooArrProm); fooProm = Promise.race(fooThenArr); fooProm = Promise.race(fooArr); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //TODO expand tests to overloads fooArrProm = Promise.some(fooThenArrThen, num); fooArrProm = Promise.some(fooArrThen, num); fooArrProm = Promise.some(fooThenArr, num); fooArrProm = Promise.some(fooArr, num); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fooArrProm = Promise.join(foo, foo, foo); fooArrProm = Promise.join(fooThen, fooThen, fooThen); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // map() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // fooThenArrThen barArrProm = Promise.map(fooThenArrThen, (item: Foo) => { return bar; }); barArrProm = Promise.map(fooThenArrThen, (item: Foo) => { return barThen; }); barArrProm = Promise.map(fooThenArrThen, (item: Foo, index: number, arrayLength: number) => { return bar; }); barArrProm = Promise.map(fooThenArrThen, (item: Foo, index: number, arrayLength: number) => { return barThen; }); barArrProm = Promise.map(fooThenArrThen, (item: Foo) => { return bar; }, { concurrency: 1 }); barArrProm = Promise.map(fooThenArrThen, (item: Foo) => { return barThen; }, { concurrency: 1 }); barArrProm = Promise.map(fooThenArrThen, (item: Foo, index: number, arrayLength: number) => { return bar; }, { concurrency: 1 }); barArrProm = Promise.map(fooThenArrThen, (item: Foo, index: number, arrayLength: number) => { return barThen; }, { concurrency: 1 }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // fooArrThen barArrProm = Promise.map(fooArrThen, (item: Foo) => { return bar; }); barArrProm = Promise.map(fooArrThen, (item: Foo) => { return barThen; }); barArrProm = Promise.map(fooArrThen, (item: Foo, index: number, arrayLength: number) => { return bar; }); barArrProm = Promise.map(fooArrThen, (item: Foo, index: number, arrayLength: number) => { return barThen; }); barArrProm = Promise.map(fooArrThen, (item: Foo) => { return bar; }, { concurrency: 1 }); barArrProm = Promise.map(fooArrThen, (item: Foo) => { return barThen; }, { concurrency: 1 }); barArrProm = Promise.map(fooArrThen, (item: Foo, index: number, arrayLength: number) => { return bar; }, { concurrency: 1 }); barArrProm = Promise.map(fooArrThen, (item: Foo, index: number, arrayLength: number) => { return barThen; }, { concurrency: 1 }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // fooThenArr barArrProm = Promise.map(fooThenArr, (item: Foo) => { return bar; }); barArrProm = Promise.map(fooThenArr, (item: Foo) => { return barThen; }); barArrProm = Promise.map(fooThenArr, (item: Foo, index: number, arrayLength: number) => { return bar; }); barArrProm = Promise.map(fooThenArr, (item: Foo, index: number, arrayLength: number) => { return barThen; }); barArrProm = Promise.map(fooThenArr, (item: Foo) => { return bar; }, { concurrency: 1 }); barArrProm = Promise.map(fooThenArr, (item: Foo) => { return barThen; }, { concurrency: 1 }); barArrProm = Promise.map(fooThenArr, (item: Foo, index: number, arrayLength: number) => { return bar; }, { concurrency: 1 }); barArrProm = Promise.map(fooThenArr, (item: Foo, index: number, arrayLength: number) => { return barThen; }, { concurrency: 1 }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // fooArr barArrProm = Promise.map(fooArr, (item: Foo) => { return bar; }); barArrProm = Promise.map(fooArr, (item: Foo) => { return barThen; }); barArrProm = Promise.map(fooArr, (item: Foo, index: number, arrayLength: number) => { return bar; }); barArrProm = Promise.map(fooArr, (item: Foo, index: number, arrayLength: number) => { return barThen; }); barArrProm = Promise.map(fooArr, (item: Foo) => { return bar; }, { concurrency: 1 }); barArrProm = Promise.map(fooArr, (item: Foo) => { return barThen; }, { concurrency: 1 }); barArrProm = Promise.map(fooArr, (item: Foo, index: number, arrayLength: number) => { return bar; }, { concurrency: 1 }); barArrProm = Promise.map(fooArr, (item: Foo, index: number, arrayLength: number) => { return barThen; }, { concurrency: 1 }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // reduce() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // fooThenArrThen barProm = Promise.reduce(fooThenArrThen, (memo: Bar, item: Foo) => { return memo; }, bar); barProm = Promise.reduce(fooThenArrThen, (memo: Bar, item: Foo) => { return barThen; }, bar); barProm = Promise.reduce(fooThenArrThen, (memo: Bar, item: Foo, index: number, arrayLength: number) => { return memo; }, bar); barProm = Promise.reduce(fooThenArrThen, (memo: Bar, item: Foo, index: number, arrayLength: number) => { return barThen; }, bar); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // fooArrThen barProm = Promise.reduce(fooArrThen, (memo: Bar, item: Foo) => { return memo; }, bar); barProm = Promise.reduce(fooArrThen, (memo: Bar, item: Foo) => { return barThen; }, bar); barProm = Promise.reduce(fooArrThen, (memo: Bar, item: Foo, index: number, arrayLength: number) => { return memo; }, bar); barProm = Promise.reduce(fooArrThen, (memo: Bar, item: Foo, index: number, arrayLength: number) => { return barThen; }, bar); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // fooThenArr barProm = Promise.reduce(fooThenArr, (memo: Bar, item: Foo) => { return memo; }, bar); barProm = Promise.reduce(fooThenArr, (memo: Bar, item: Foo) => { return barThen; }, bar); barProm = Promise.reduce(fooThenArr, (memo: Bar, item: Foo, index: number, arrayLength: number) => { return memo; }, bar); barProm = Promise.reduce(fooThenArr, (memo: Bar, item: Foo, index: number, arrayLength: number) => { return barThen; }, bar); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // fooArr barProm = Promise.reduce(fooArr, (memo: Bar, item: Foo) => { return memo; }, bar); barProm = Promise.reduce(fooArr, (memo: Bar, item: Foo) => { return barThen; }, bar); barProm = Promise.reduce(fooArr, (memo: Bar, item: Foo, index: number, arrayLength: number) => { return memo; }, bar); barProm = Promise.reduce(fooArr, (memo: Bar, item: Foo, index: number, arrayLength: number) => { return barThen; }, bar); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // filter() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // fooThenArrThen fooArrProm = Promise.filter(fooThenArrThen, (item: Foo) => { return bool; }); fooArrProm = Promise.filter(fooThenArrThen, (item: Foo) => { return boolThen; }); fooArrProm = Promise.filter(fooThenArrThen, (item: Foo, index: number, arrayLength: number) => { return bool; }); fooArrProm = Promise.filter(fooThenArrThen, (item: Foo, index: number, arrayLength: number) => { return boolThen; }); fooArrProm = Promise.filter(fooThenArrThen, (item: Foo) => { return bool; }, { concurrency: 1 }); fooArrProm = Promise.filter(fooThenArrThen, (item: Foo) => { return boolThen; }, { concurrency: 1 }); fooArrProm = Promise.filter(fooThenArrThen, (item: Foo, index: number, arrayLength: number) => { return bool; }, { concurrency: 1 }); fooArrProm = Promise.filter(fooThenArrThen, (item: Foo, index: number, arrayLength: number) => { return boolThen; }, { concurrency: 1 }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // fooArrThen fooArrProm = Promise.filter(fooArrThen, (item: Foo) => { return bool; }); fooArrProm = Promise.filter(fooArrThen, (item: Foo) => { return boolThen; }); fooArrProm = Promise.filter(fooArrThen, (item: Foo, index: number, arrayLength: number) => { return bool; }); fooArrProm = Promise.filter(fooArrThen, (item: Foo, index: number, arrayLength: number) => { return boolThen; }); fooArrProm = Promise.filter(fooArrThen, (item: Foo) => { return bool; }, { concurrency: 1 }); fooArrProm = Promise.filter(fooArrThen, (item: Foo) => { return boolThen; }, { concurrency: 1 }); fooArrProm = Promise.filter(fooArrThen, (item: Foo, index: number, arrayLength: number) => { return bool; }, { concurrency: 1 }); fooArrProm = Promise.filter(fooArrThen, (item: Foo, index: number, arrayLength: number) => { return boolThen; }, { concurrency: 1 }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // fooThenArr fooArrProm = Promise.filter(fooThenArr, (item: Foo) => { return bool; }); fooArrProm = Promise.filter(fooThenArr, (item: Foo) => { return boolThen; }); fooArrProm = Promise.filter(fooThenArr, (item: Foo, index: number, arrayLength: number) => { return bool; }); fooArrProm = Promise.filter(fooThenArr, (item: Foo, index: number, arrayLength: number) => { return boolThen; }); fooArrProm = Promise.filter(fooThenArr, (item: Foo) => { return bool; }, { concurrency: 1 }); fooArrProm = Promise.filter(fooThenArr, (item: Foo) => { return boolThen; }, { concurrency: 1 }); fooArrProm = Promise.filter(fooThenArr, (item: Foo, index: number, arrayLength: number) => { return bool; }, { concurrency: 1 }); fooArrProm = Promise.filter(fooThenArr, (item: Foo, index: number, arrayLength: number) => { return boolThen; }, { concurrency: 1 }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // fooArr fooArrProm = Promise.filter(fooArr, (item: Foo) => { return bool; }); fooArrProm = Promise.filter(fooArr, (item: Foo) => { return boolThen; }); fooArrProm = Promise.filter(fooArr, (item: Foo, index: number, arrayLength: number) => { return bool; }); fooArrProm = Promise.filter(fooArr, (item: Foo, index: number, arrayLength: number) => { return boolThen; }); fooArrProm = Promise.filter(fooArr, (item: Foo) => { return bool; }, { concurrency: 1 }); fooArrProm = Promise.filter(fooArr, (item: Foo) => { return boolThen; }, { concurrency: 1 }); fooArrProm = Promise.filter(fooArr, (item: Foo, index: number, arrayLength: number) => { return bool; }, { concurrency: 1 }); fooArrProm = Promise.filter(fooArr, (item: Foo, index: number, arrayLength: number) => { return boolThen; }, { concurrency: 1 }); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -