From c698079f5a5c65fc144a8a080efd759f5660ab0e Mon Sep 17 00:00:00 2001 From: Dimitri Benin Date: Sat, 29 Jul 2017 00:48:21 +0200 Subject: [PATCH] [p-timeout] introduce typings (#18480) --- types/p-timeout/index.d.ts | 16 ++++++++++++++++ types/p-timeout/p-timeout-tests.ts | 29 +++++++++++++++++++++++++++++ types/p-timeout/tsconfig.json | 22 ++++++++++++++++++++++ types/p-timeout/tslint.json | 1 + 4 files changed, 68 insertions(+) create mode 100644 types/p-timeout/index.d.ts create mode 100644 types/p-timeout/p-timeout-tests.ts create mode 100644 types/p-timeout/tsconfig.json create mode 100644 types/p-timeout/tslint.json diff --git a/types/p-timeout/index.d.ts b/types/p-timeout/index.d.ts new file mode 100644 index 0000000000..882cc7adc8 --- /dev/null +++ b/types/p-timeout/index.d.ts @@ -0,0 +1,16 @@ +// Type definitions for p-timeout 1.2 +// Project: https://github.com/sindresorhus/p-timeout#readme +// Definitions by: BendingBender +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +export = pTimeout; + +declare function pTimeout(input: Promise, ms: number, message?: string | pTimeout.TimeoutError): Promise; +declare function pTimeout(input: Promise, ms: number, fallback: () => R | Promise): Promise; + +declare namespace pTimeout { + class TimeoutError extends Error { + readonly name: 'TimeoutError'; + constructor(message?: string); + } +} diff --git a/types/p-timeout/p-timeout-tests.ts b/types/p-timeout/p-timeout-tests.ts new file mode 100644 index 0000000000..455ed2204f --- /dev/null +++ b/types/p-timeout/p-timeout-tests.ts @@ -0,0 +1,29 @@ +/// + +import pTimeout = require('p-timeout'); + +const delayedPromise: () => Promise = () => new Promise(resolve => setTimeout(() => resolve('foo'), 200)); + +let str: string; +let num: number; +pTimeout(delayedPromise(), 50).then(() => 'foo'); +pTimeout(delayedPromise(), 50, () => { + return pTimeout(delayedPromise(), 300); +}); +pTimeout(delayedPromise(), 50).then(res => str = res); +pTimeout(delayedPromise(), 50, 'error').then(res => str = res); +pTimeout(delayedPromise(), 50, new pTimeout.TimeoutError('error')).then(res => str = res); +pTimeout(delayedPromise(), 50, () => Promise.resolve(10)).then(res => { + if (typeof res === 'string') { + str = res; + } else { + num = res; + } +}); +pTimeout(delayedPromise(), 50, () => 10).then(res => { + if (typeof res === 'string') { + str = res; + } else { + num = res; + } +}); diff --git a/types/p-timeout/tsconfig.json b/types/p-timeout/tsconfig.json new file mode 100644 index 0000000000..9ff2454750 --- /dev/null +++ b/types/p-timeout/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "p-timeout-tests.ts" + ] +} diff --git a/types/p-timeout/tslint.json b/types/p-timeout/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/p-timeout/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }