From a64e81d5511282e968dccd17c7af0a698392857f Mon Sep 17 00:00:00 2001 From: Damien SOREL Date: Sat, 18 Aug 2018 13:42:00 +0200 Subject: [PATCH] Add angular-q-extras --- .../angular-q-extras-tests.ts | 34 +++++++++++++++ types/angular-q-extras/index.d.ts | 42 +++++++++++++++++++ types/angular-q-extras/tsconfig.json | 23 ++++++++++ types/angular-q-extras/tslint.json | 3 ++ 4 files changed, 102 insertions(+) create mode 100644 types/angular-q-extras/angular-q-extras-tests.ts create mode 100644 types/angular-q-extras/index.d.ts create mode 100644 types/angular-q-extras/tsconfig.json create mode 100644 types/angular-q-extras/tslint.json diff --git a/types/angular-q-extras/angular-q-extras-tests.ts b/types/angular-q-extras/angular-q-extras-tests.ts new file mode 100644 index 0000000000..0832b6dae0 --- /dev/null +++ b/types/angular-q-extras/angular-q-extras-tests.ts @@ -0,0 +1,34 @@ +interface MyService { + getFirstname(): ng.IPromise; + getLastname(): ng.IPromise; +} + +function TestCtrl($q: ng.IQService, MyService: MyService) { + function arrayCallback(result: [ng.PromiseValue, ng.PromiseValue]) { + const firstnameOk: boolean = $q.isFulfilledState(result[0]); + const lastnameOk: boolean = $q.isFulfilledState(result[1]); + } + + function objectCallback(result: {firstname: ng.PromiseValue, lastname: ng.PromiseValue}) { + const firstnameOk: boolean = $q.isFulfilledState(result.firstname); + const lastnameOk: boolean = $q.isFulfilledState(result.lastname); + } + + $q + .allSettled([ + MyService.getFirstname(), + MyService.getLastname() + ]) + .then(arrayCallback); + + $q + .allSettled({ + firstname: MyService.getFirstname(), + lastname: MyService.getLastname() + }) + .then(objectCallback); +} + +TestCtrl.$inject = ['$q', 'MyService']; + +angular.module('test').controller('TestCtrl', TestCtrl); diff --git a/types/angular-q-extras/index.d.ts b/types/angular-q-extras/index.d.ts new file mode 100644 index 0000000000..f73724ab43 --- /dev/null +++ b/types/angular-q-extras/index.d.ts @@ -0,0 +1,42 @@ +// Type definitions for angular-q-extras 1.1 +// Project: https://github.com/niqdev/angular-q-extras +// Definitions by: Damien Sorel +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.3 + +declare var _: string; +export = _; + +import * as angular from 'angular'; + +declare module 'angular' { + type PromiseState = 'fulfilled' | 'rejected'; + + interface PromiseValue { + state: PromiseState; + value?: T; + reason?: any; + } + + // tslint:disable-next-line interface-name + interface IQService { + // tslint:disable:max-line-length + allSettled(values: [T1 | IPromise, T2 | IPromise, T3 | IPromise, T4 | IPromise, T5 | IPromise, T6 | IPromise, T7 | IPromise, T8 | IPromise, T9 | IPromise, T10 | IPromise]): IPromise<[PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue]>; + allSettled(values: [T1 | IPromise, T2 | IPromise, T3 | IPromise, T4 | IPromise, T5 | IPromise, T6 | IPromise, T7 | IPromise, T8 | IPromise, T9 | IPromise]): IPromise<[PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue]>; + allSettled(values: [T1 | IPromise, T2 | IPromise, T3 | IPromise, T4 | IPromise, T5 | IPromise, T6 | IPromise, T7 | IPromise, T8 | IPromise]): IPromise<[PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue]>; + allSettled(values: [T1 | IPromise, T2 | IPromise, T3 | IPromise, T4 | IPromise, T5 | IPromise, T6 | IPromise, T7 | IPromise]): IPromise<[PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue]>; + allSettled(values: [T1 | IPromise, T2 | IPromise, T3 | IPromise, T4 | IPromise, T5 | IPromise, T6 | IPromise]): IPromise<[PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue]>; + allSettled(values: [T1 | IPromise, T2 | IPromise, T3 | IPromise, T4 | IPromise, T5 | IPromise]): IPromise<[PromiseValue, PromiseValue, PromiseValue, PromiseValue, PromiseValue]>; + allSettled(values: [T1 | IPromise, T2 | IPromise, T3 | IPromise, T4 | IPromise]): IPromise<[PromiseValue, PromiseValue, PromiseValue, PromiseValue]>; + allSettled(values: [T1 | IPromise, T2 | IPromise, T3 | IPromise]): IPromise<[PromiseValue, PromiseValue, PromiseValue]>; + allSettled(values: [T1 | IPromise, T2 | IPromise]): IPromise<[PromiseValue, PromiseValue]>; + // tslint:enable:max-line-length + + allSettled(promises: Array>): IPromise>>; + + allSettled(promises: { [K in keyof T]: (T[K] | IPromise); }): IPromise<{ [K in keyof T]: PromiseValue; }>; + + isFulfilledState(promise: PromiseValue): boolean; + isRejectedState(promise: PromiseValue): boolean; + } +} diff --git a/types/angular-q-extras/tsconfig.json b/types/angular-q-extras/tsconfig.json new file mode 100644 index 0000000000..3047a809eb --- /dev/null +++ b/types/angular-q-extras/tsconfig.json @@ -0,0 +1,23 @@ +{ + "files": [ + "index.d.ts", + "angular-q-extras-tests.ts" + ], + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + } +} diff --git a/types/angular-q-extras/tslint.json b/types/angular-q-extras/tslint.json new file mode 100644 index 0000000000..d88586e5bd --- /dev/null +++ b/types/angular-q-extras/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "dtslint/dt.json" +}