From 23a01392092f39af0036c072b79636fe4fcb492a Mon Sep 17 00:00:00 2001 From: Dimitri Benin Date: Wed, 3 Apr 2019 05:19:13 +0000 Subject: [PATCH] Refactor TypeScript definition to CommonJS compatible export (#4) --- index.d.ts | 67 +++++++++++++++++++++++++++++++++++-------------- index.js | 1 + index.test-d.ts | 5 ++-- package.json | 6 ++--- 4 files changed, 55 insertions(+), 24 deletions(-) diff --git a/index.d.ts b/index.d.ts index c241a7b..9332abf 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,25 +1,54 @@ -export interface DeferredPromise { - /** - Resolves the promise with a value or the result of another promise. +declare namespace pDefer { + interface DeferredPromise { + /** + Resolves the promise with a value or the result of another promise. - @param value - The value to resolve the promise with. - */ - resolve(value?: ValueType | PromiseLike): void; + @param value - The value to resolve the promise with. + */ + resolve(value?: ValueType | PromiseLike): void; - /** - Reject the promise with a provided reason or error. + /** + Reject the promise with a provided reason or error. - @param reason - The reason or error to reject the promise with. - */ - reject(reason?: unknown): void; + @param reason - The reason or error to reject the promise with. + */ + reject(reason?: unknown): void; - /** - The deferred promise. - */ - promise: Promise; + /** + The deferred promise. + */ + promise: Promise; + } } -/** -Create a deferred promise. -*/ -export default function pDefer(): DeferredPromise; +declare const pDefer: { + /** + Create a deferred promise. + + @example + ``` + import pDefer = require('p-defer'); + + function delay(ms) { + const deferred = pDefer(); + setTimeout(deferred.resolve, ms, '🦄'); + return deferred.promise; + } + + (async () => { + console.log(await delay(100)); + //=> '🦄' + })(); + ``` + */ + (): pDefer.DeferredPromise; + + // TODO: Remove this for the next major release, refactor the whole definition to: + // declare function pDefer(): pDefer.DeferredPromise< + // ValueType + // >; + // export = pDefer; + default: typeof pDefer; +}; + +export = pDefer; diff --git a/index.js b/index.js index d2fb668..552c70b 100644 --- a/index.js +++ b/index.js @@ -12,4 +12,5 @@ const pDefer = () => { }; module.exports = pDefer; +// TODO: Remove this for the next major release module.exports.default = pDefer; diff --git a/index.test-d.ts b/index.test-d.ts index 556cb9b..08994d7 100644 --- a/index.test-d.ts +++ b/index.test-d.ts @@ -1,5 +1,6 @@ -import {expectType} from 'tsd-check'; -import pDefer, {DeferredPromise} from '.'; +import {expectType} from 'tsd'; +import pDefer = require('.'); +import {DeferredPromise} from '.'; expectType>(pDefer()); expectType>(pDefer()); diff --git a/package.json b/package.json index 17c989e..fbc4f2d 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "node": ">=6" }, "scripts": { - "test": "xo && ava && tsd-check" + "test": "xo && ava && tsd" }, "files": [ "index.js", @@ -33,8 +33,8 @@ "bluebird" ], "devDependencies": { - "ava": "^1.3.1", - "tsd-check": "^0.5.0", + "ava": "^1.4.1", + "tsd": "^0.7.2", "xo": "^0.24.0" } }