diff --git a/types/p-queue/index.d.ts b/types/p-queue/index.d.ts new file mode 100644 index 0000000000..3cc6acef53 --- /dev/null +++ b/types/p-queue/index.d.ts @@ -0,0 +1,50 @@ +// Type definitions for p-queue 1.1 +// Project: https://github.com/sindresorhus/p-queue#readme +// Definitions by: BendingBender +// Evan Shortiss +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.3 + +export = PQueue; + +declare class PQueue { + size: number; + pending: number; + + constructor(opts?: PQueue.Options); + + add(fn: PQueue.Task, opts?: O): Promise; + + onEmpty(): Promise; + + clear(): void; +} + +declare namespace PQueue { + interface QueueAddOptions { + [key: string]: any; + } + + interface QueueClassConstructor { + new(): QueueClass; + } + + interface QueueClass { + size: number; + + enqueue(run: () => void, options?: O): void; + + dequeue(): (() => void) | undefined; + } + + interface Options { + queueClass?: QueueClassConstructor; + concurrency?: number; + } + + interface DefaultAddOptions { + priority?: number; + } + + type Task = () => Promise; +} diff --git a/types/p-queue/p-queue-tests.ts b/types/p-queue/p-queue-tests.ts new file mode 100644 index 0000000000..6a63e9e607 --- /dev/null +++ b/types/p-queue/p-queue-tests.ts @@ -0,0 +1,42 @@ +import PQueue = require('p-queue'); + +const queue = new PQueue({concurrency: 1}); + +queue.add(() => Promise.resolve('sindresorhus.com')).then((sindre) => { + const str: string = sindre; +}); + +Promise.resolve((): Promise => Promise.resolve('unicorn')) + .then(task => queue.add(task, {priority: 5})) + .then(unicorn => { + const str: string = unicorn; + }); + +queue.onEmpty().then(() => { +}); +queue.clear(); + +let num: number; +num = queue.size; +num = queue.pending; + +class QueueClass implements PQueue.QueueClass<{ any: string }> { + private queue: Array<() => void>; + + size = 0; + + constructor() { + this.queue = []; + } + + enqueue(run: () => void, options: { any: string }) { + this.queue.push(run); + } + + dequeue() { + return this.queue.shift(); + } +} + +const queue2 = new PQueue({queueClass: QueueClass}); +queue2.add(() => Promise.resolve(), {any: 'hi'}); diff --git a/types/p-queue/tsconfig.json b/types/p-queue/tsconfig.json new file mode 100644 index 0000000000..6fd210c82f --- /dev/null +++ b/types/p-queue/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-queue-tests.ts" + ] +} diff --git a/types/p-queue/tslint.json b/types/p-queue/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/p-queue/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }