Fix predicate and object types for bluebird

This commit is contained in:
Wellington Mendoza
2017-06-19 15:51:45 -05:00
parent 882213e20f
commit bd36ddb202
2 changed files with 204 additions and 60 deletions

View File

@@ -373,6 +373,30 @@ fooProm = fooProm.catch(CustomError, reason => {
fooProm = fooProm.catch(CustomError1, CustomError2, CustomError3, error => {});
fooProm = fooProm.catch(CustomError1, CustomError2, CustomError3, CustomError4, error => {});
fooProm = fooProm.catch(CustomError1, CustomError2, CustomError3, CustomError4, CustomError5, error => {});
const booPredicate1 = (error: CustomError1) => true;
const booPredicate2 = (error: [number]) => true;
const booPredicate3 = (error: string) => true;
const booPredicate4 = (error: Object) => true;
const booPredicate5 = (error: any) => true;
fooProm = fooProm.catch(booPredicate1, error => {});
fooProm = fooProm.catch(booPredicate1, booPredicate2, error => {});
fooProm = fooProm.catch(booPredicate1, booPredicate2, booPredicate3, error => {});
fooProm = fooProm.catch(booPredicate1, booPredicate2, booPredicate3, booPredicate4, error => {});
fooProm = fooProm.catch(booPredicate1, booPredicate2, booPredicate3, booPredicate4, booPredicate5, error => {});
const booObject1 = new CustomError1();
const booObject2 = [400, 500];
const booObject3 = "Error";
const booObject4 = {code: 400};
const booObject5: any = null;
fooProm = fooProm.catch(booObject1, error => {});
fooProm = fooProm.catch(booObject1, booObject2, error => {});
fooProm = fooProm.catch(booObject1, booObject2, booObject3, error => {});
fooProm = fooProm.catch(booObject1, booObject2, booObject3, booObject4, error => {});
fooProm = fooProm.catch(booObject1, booObject2, booObject3, booObject4, booObject5, error => {});
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@@ -69,127 +69,247 @@ declare class Bluebird<R> implements PromiseLike<R>, Bluebird.Inspection<R> {
* TODO: disallow non-objects
*/
catch<E1 extends Error, E2 extends Error, E3 extends Error, E4 extends Error, E5 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter2: (new (...args: any[]) => E2) | ((error: any) => boolean) | Object,
filter3: (new (...args: any[]) => E3) | ((error: any) => boolean) | Object,
filter4: (new (...args: any[]) => E4) | ((error: any) => boolean) | Object,
filter5: (new (...args: any[]) => E5) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
filter2: (new (...args: any[]) => E2) | ((error: E2) => boolean) | E2,
filter3: (new (...args: any[]) => E3) | ((error: E3) => boolean) | E3,
filter4: (new (...args: any[]) => E4) | ((error: E4) => boolean) | E4,
filter5: (new (...args: any[]) => E5) | ((error: E5) => boolean) | E5,
onReject: (error: E1 | E2 | E3 | E4 | E5) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
catch<E1, E2, E3, E4, E5>(
filter1: ((error: E1) => boolean) | E1,
filter2: ((error: E2) => boolean) | E2,
filter3: ((error: E3) => boolean) | E3,
filter4: ((error: E4) => boolean) | E4,
filter5: ((error: E5) => boolean) | E5,
onReject: (error: E1 | E2 | E3 | E4 | E5) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
caught<E1 extends Error, E2 extends Error, E3 extends Error, E4 extends Error, E5 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter2: (new (...args: any[]) => E2) | ((error: any) => boolean) | Object,
filter3: (new (...args: any[]) => E3) | ((error: any) => boolean) | Object,
filter4: (new (...args: any[]) => E4) | ((error: any) => boolean) | Object,
filter5: (new (...args: any[]) => E5) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
filter2: (new (...args: any[]) => E2) | ((error: E2) => boolean) | E2,
filter3: (new (...args: any[]) => E3) | ((error: E3) => boolean) | E3,
filter4: (new (...args: any[]) => E4) | ((error: E4) => boolean) | E4,
filter5: (new (...args: any[]) => E5) | ((error: E5) => boolean) | E5,
onReject: (error: E1 | E2 | E3 | E4 | E5) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
caught<E1, E2, E3, E4, E5>(
filter1: ((error: E1) => boolean) | E1,
filter2: ((error: E2) => boolean) | E2,
filter3: ((error: E3) => boolean) | E3,
filter4: ((error: E4) => boolean) | E4,
filter5: ((error: E5) => boolean) | E5,
onReject: (error: E1 | E2 | E3 | E4 | E5) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
catch<U, E1 extends Error, E2 extends Error, E3 extends Error, E4 extends Error, E5 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter2: (new (...args: any[]) => E2) | ((error: any) => boolean) | Object,
filter3: (new (...args: any[]) => E3) | ((error: any) => boolean) | Object,
filter4: (new (...args: any[]) => E4) | ((error: any) => boolean) | Object,
filter5: (new (...args: any[]) => E5) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
filter2: (new (...args: any[]) => E2) | ((error: E2) => boolean) | E2,
filter3: (new (...args: any[]) => E3) | ((error: E3) => boolean) | E3,
filter4: (new (...args: any[]) => E4) | ((error: E4) => boolean) | E4,
filter5: (new (...args: any[]) => E5) | ((error: E5) => boolean) | E5,
onReject: (error: E1 | E2 | E3 | E4 | E5) => U | PromiseLike<U> | void | PromiseLike<void>,
): Bluebird<U | R>;
catch<U, E1, E2, E3, E4, E5>(
filter1: ((error: E1) => boolean) | E1,
filter2: ((error: E2) => boolean) | E2,
filter3: ((error: E3) => boolean) | E3,
filter4: ((error: E4) => boolean) | E4,
filter5: ((error: E5) => boolean) | E5,
onReject: (error: E1 | E2 | E3 | E4 | E5) => U | PromiseLike<U>,
): Bluebird<U | R>;
caught<U, E1 extends Error, E2 extends Error, E3 extends Error, E4 extends Error, E5 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter2: (new (...args: any[]) => E2) | ((error: any) => boolean) | Object,
filter3: (new (...args: any[]) => E3) | ((error: any) => boolean) | Object,
filter4: (new (...args: any[]) => E4) | ((error: any) => boolean) | Object,
filter5: (new (...args: any[]) => E5) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
filter2: (new (...args: any[]) => E2) | ((error: E2) => boolean) | E2,
filter3: (new (...args: any[]) => E3) | ((error: E3) => boolean) | E3,
filter4: (new (...args: any[]) => E4) | ((error: E4) => boolean) | E4,
filter5: (new (...args: any[]) => E5) | ((error: E5) => boolean) | E5,
onReject: (error: E1 | E2 | E3 | E4 | E5) => U | PromiseLike<U>,
): Bluebird<U | R>;
caught<U, E1, E2, E3, E4, E5>(
filter1: ((error: E1) => boolean) | E1,
filter2: ((error: E2) => boolean) | E2,
filter3: ((error: E3) => boolean) | E3,
filter4: ((error: E4) => boolean) | E4,
filter5: ((error: E5) => boolean) | E5,
onReject: (error: E1 | E2 | E3 | E4 | E5) => U | PromiseLike<U>,
): Bluebird<U | R>;
catch<E1 extends Error, E2 extends Error, E3 extends Error, E4 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter2: (new (...args: any[]) => E2) | ((error: any) => boolean) | Object,
filter3: (new (...args: any[]) => E3) | ((error: any) => boolean) | Object,
filter4: (new (...args: any[]) => E4) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
filter2: (new (...args: any[]) => E2) | ((error: E2) => boolean) | E2,
filter3: (new (...args: any[]) => E3) | ((error: E3) => boolean) | E3,
filter4: (new (...args: any[]) => E4) | ((error: E4) => boolean) | E4,
onReject: (error: E1 | E2 | E3 | E4) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
catch<E1, E2, E3, E4>(
filter1: ((error: E1) => boolean) | E1,
filter2: ((error: E2) => boolean) | E2,
filter3: ((error: E3) => boolean) | E3,
filter4: ((error: E4) => boolean) | E4,
onReject: (error: E1 | E2 | E3 | E4) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
caught<E1 extends Error, E2 extends Error, E3 extends Error, E4 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter2: (new (...args: any[]) => E2) | ((error: any) => boolean) | Object,
filter3: (new (...args: any[]) => E3) | ((error: any) => boolean) | Object,
filter4: (new (...args: any[]) => E4) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
filter2: (new (...args: any[]) => E2) | ((error: E2) => boolean) | E2,
filter3: (new (...args: any[]) => E3) | ((error: E3) => boolean) | E3,
filter4: (new (...args: any[]) => E4) | ((error: E4) => boolean) | E4,
onReject: (error: E1 | E2 | E3 | E4) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
caught<E1, E2, E3, E4>(
filter1: ((error: E1) => boolean) | E1,
filter2: ((error: E2) => boolean) | E2,
filter3: ((error: E3) => boolean) | E3,
filter4: ((error: E4) => boolean) | E4,
onReject: (error: E1 | E2 | E3 | E4) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
catch<U, E1 extends Error, E2 extends Error, E3 extends Error, E4 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter2: (new (...args: any[]) => E2) | ((error: any) => boolean) | Object,
filter3: (new (...args: any[]) => E3) | ((error: any) => boolean) | Object,
filter4: (new (...args: any[]) => E4) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
filter2: (new (...args: any[]) => E2) | ((error: E2) => boolean) | E2,
filter3: (new (...args: any[]) => E3) | ((error: E3) => boolean) | E3,
filter4: (new (...args: any[]) => E4) | ((error: E4) => boolean) | E4,
onReject: (error: E1 | E2 | E3 | E4) => U | PromiseLike<U>,
): Bluebird<U | R>;
catch<U, E1, E2, E3, E4>(
filter1: ((error: E1) => boolean) | E1,
filter2: ((error: E2) => boolean) | E2,
filter3: ((error: E3) => boolean) | E3,
filter4: ((error: E4) => boolean) | E4,
onReject: (error: E1 | E2 | E3 | E4) => U | PromiseLike<U>,
): Bluebird<U | R>;
caught<U, E1 extends Error, E2 extends Error, E3 extends Error, E4 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter2: (new (...args: any[]) => E2) | ((error: any) => boolean) | Object,
filter3: (new (...args: any[]) => E3) | ((error: any) => boolean) | Object,
filter4: (new (...args: any[]) => E4) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
filter2: (new (...args: any[]) => E2) | ((error: E2) => boolean) | E2,
filter3: (new (...args: any[]) => E3) | ((error: E3) => boolean) | E3,
filter4: (new (...args: any[]) => E4) | ((error: E4) => boolean) | E4,
onReject: (error: E1 | E2 | E3 | E4) => U | PromiseLike<U>,
): Bluebird<U | R>;
caught<U, E1, E2, E3, E4>(
filter1: ((error: E1) => boolean) | E1,
filter2: ((error: E2) => boolean) | E2,
filter3: ((error: E3) => boolean) | E3,
filter4: ((error: E4) => boolean) | E4,
onReject: (error: E1 | E2 | E3 | E4) => U | PromiseLike<U>,
): Bluebird<U | R>;
catch<E1 extends Error, E2 extends Error, E3 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter2: (new (...args: any[]) => E2) | ((error: any) => boolean) | Object,
filter3: (new (...args: any[]) => E3) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
filter2: (new (...args: any[]) => E2) | ((error: E2) => boolean) | E2,
filter3: (new (...args: any[]) => E3) | ((error: E3) => boolean) | E3,
onReject: (error: E1 | E2 | E3) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
catch<E1, E2, E3>(
filter1: ((error: E1) => boolean) | E1,
filter2: ((error: E2) => boolean) | E2,
filter3: ((error: E3) => boolean) | E3,
onReject: (error: E1 | E2 | E3) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
caught<E1 extends Error, E2 extends Error, E3 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter2: (new (...args: any[]) => E2) | ((error: any) => boolean) | Object,
filter3: (new (...args: any[]) => E3) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
filter2: (new (...args: any[]) => E2) | ((error: E2) => boolean) | E2,
filter3: (new (...args: any[]) => E3) | ((error: E3) => boolean) | E3,
onReject: (error: E1 | E2 | E3) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
caught<E1, E2, E3>(
filter1: ((error: E1) => boolean) | E1,
filter2: ((error: E2) => boolean) | E2,
filter3: ((error: E3) => boolean) | E3,
onReject: (error: E1 | E2 | E3) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
catch<U, E1 extends Error, E2 extends Error, E3 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter2: (new (...args: any[]) => E2) | ((error: any) => boolean) | Object,
filter3: (new (...args: any[]) => E3) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
filter2: (new (...args: any[]) => E2) | ((error: E2) => boolean) | E2,
filter3: (new (...args: any[]) => E3) | ((error: E3) => boolean) | E3,
onReject: (error: E1 | E2 | E3) => U | PromiseLike<U>,
): Bluebird<U | R>;
catch<U, E1, E2, E3>(
filter1: ((error: E1) => boolean) | E1,
filter2: ((error: E2) => boolean) | E2,
filter3: ((error: E3) => boolean) | E3,
onReject: (error: E1 | E2 | E3) => U | PromiseLike<U>,
): Bluebird<U | R>;
caught<U, E1 extends Error, E2 extends Error, E3 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter2: (new (...args: any[]) => E2) | ((error: any) => boolean) | Object,
filter3: (new (...args: any[]) => E3) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
filter2: (new (...args: any[]) => E2) | ((error: E2) => boolean) | E2,
filter3: (new (...args: any[]) => E3) | ((error: E3) => boolean) | E3,
onReject: (error: E1 | E2 | E3) => U | PromiseLike<U>,
): Bluebird<U | R>;
caught<U, E1, E2, E3>(
filter1: ((error: E1) => boolean) | E1,
filter2: ((error: E2) => boolean) | E2,
filter3: ((error: E3) => boolean) | E3,
onReject: (error: E1 | E2 | E3) => U | PromiseLike<U>,
): Bluebird<U | R>;
catch<E1 extends Error, E2 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter2: (new (...args: any[]) => E2) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
filter2: (new (...args: any[]) => E2) | ((error: E2) => boolean) | E2,
onReject: (error: E1 | E2) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
catch<E1, E2>(
filter1: ((error: E1) => boolean) | E1,
filter2: ((error: E2) => boolean) | E2,
onReject: (error: E1 | E2) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
caught<E1 extends Error, E2 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter2: (new (...args: any[]) => E2) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
filter2: (new (...args: any[]) => E2) | ((error: E2) => boolean) | E2,
onReject: (error: E1 | E2) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
caught<E1, E2>(
filter1: ((error: E1) => boolean) | E1,
filter2: ((error: E2) => boolean) | E2,
onReject: (error: E1 | E2) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
catch<U, E1 extends Error, E2 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter2: (new (...args: any[]) => E2) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
filter2: (new (...args: any[]) => E2) | ((error: E2) => boolean) | E2,
onReject: (error: E1 | E2) => U | PromiseLike<U>,
): Bluebird<U | R>;
catch<U, E1, E2>(
filter1: ((error: E1) => boolean) | E1,
filter2: ((error: E2) => boolean) | E2,
onReject: (error: E1 | E2) => U | PromiseLike<U>,
): Bluebird<U | R>;
caught<U, E1 extends Error, E2 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter2: (new (...args: any[]) => E2) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
filter2: (new (...args: any[]) => E2) | ((error: E2) => boolean) | E2,
onReject: (error: E1 | E2) => U | PromiseLike<U>,
): Bluebird<U | R>;
caught<U, E1, E2>(
filter1: ((error: E1) => boolean) | E1,
filter2: ((error: E2) => boolean) | E2,
onReject: (error: E1 | E2) => U | PromiseLike<U>,
): Bluebird<U | R>;
catch<E1 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
onReject: (error: E1) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
catch<E1>(
filter1: ((error: E1) => boolean) | E1,
onReject: (error: E1) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
caught<E1 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
onReject: (error: E1) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
caught<E1>(
filter1: ((error: E1) => boolean) | E1,
onReject: (error: E1) => R | PromiseLike<R> | void | PromiseLike<void>,
): Bluebird<R>;
catch<U, E1 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
onReject: (error: E1) => U | PromiseLike<U>,
): Bluebird<U | R>;
catch<U, E1>(
filter1: ((error: E1) => boolean) | E1,
onReject: (error: E1) => U | PromiseLike<U>,
): Bluebird<U | R>;
caught<U, E1 extends Error>(
filter1: (new (...args: any[]) => E1) | ((error: any) => boolean) | Object,
filter1: (new (...args: any[]) => E1) | ((error: E1) => boolean) | E1,
onReject: (error: E1) => U | PromiseLike<U>,
): Bluebird<U | R>;
caught<U, E1>(
filter1: ((error: E1) => boolean) | E1,
onReject: (error: E1) => U | PromiseLike<U>,
): Bluebird<U | R>;