From 91fab979fcbc51fb35efae7165c6be627f9b5ab3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E9=9B=A8=20Jerray?= <7lemonsoul@gmail.com> Date: Wed, 9 Aug 2017 04:37:52 +0800 Subject: [PATCH] Add type definitions for generic-pool (#18741) --- types/generic-pool/generic-pool-tests.ts | 60 ++++++++++++++++++++++++ types/generic-pool/index.d.ts | 47 +++++++++++++++++++ types/generic-pool/tsconfig.json | 22 +++++++++ types/generic-pool/tslint.json | 1 + 4 files changed, 130 insertions(+) create mode 100644 types/generic-pool/generic-pool-tests.ts create mode 100644 types/generic-pool/index.d.ts create mode 100644 types/generic-pool/tsconfig.json create mode 100644 types/generic-pool/tslint.json diff --git a/types/generic-pool/generic-pool-tests.ts b/types/generic-pool/generic-pool-tests.ts new file mode 100644 index 0000000000..f990f19a72 --- /dev/null +++ b/types/generic-pool/generic-pool-tests.ts @@ -0,0 +1,60 @@ +import * as genericPool from "generic-pool"; + +class Connection { + connected: boolean; +} + +const factory = { + create: (): Promise => { + return new Promise(resolve => { + let conn = new Connection(); + resolve(conn); + }); + }, + destroy: (conn: Connection): Promise => { + return new Promise(resolve => { + conn.connected = false; + resolve(); + }); + }, + validate: (conn: Connection): Promise => { + return new Promise(resolve => { + return conn.connected; + }); + } +}; + +let opts = { + max: 10, + min: 2, + maxWaitingClients: 2, + testOnBorrow: true, + acquireTimeoutMillis: 100, + fifo: true, + priorityRange: 5, + autostart: false, + evictionRunIntervalMillis: 200, + numTestsPerRun: 3, + softIdleTimeoutMillis: 100, + idleTimeoutMillis: 5000 +}; + +let pool = genericPool.createPool(factory, opts); + +pool.acquire() + .then((conn: Connection) => { + return pool.release(conn); + }).then(() => { + return pool.acquire(5); + }).then((conn: Connection) => { + return pool.destroy(conn); + }).then(() => { + return pool.clear(); + }).then((results: undefined[]) => { + }); + +pool.on('factoryCreateError', (err: Error) => { +}); + +pool.on('factoryDestroyError', (err: Error) => { +}); diff --git a/types/generic-pool/index.d.ts b/types/generic-pool/index.d.ts new file mode 100644 index 0000000000..7f7830f6b1 --- /dev/null +++ b/types/generic-pool/index.d.ts @@ -0,0 +1,47 @@ +// Type definitions for generic-pool 3.1 +// Project: https://github.com/coopernurse/node-pool#readme +// Definitions by: Jerray Fu +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +import { EventEmitter } from "events"; + +export class Pool extends EventEmitter { + spareResourceCapacity: number; + size: number; + available: number; + borrowed: number; + pending: number; + max: number; + min: number; + + acquire(priority?: number): Promise; + release(resource: T): void; + destroy(resource: T): void; + drain(): Promise; + clear(): Promise; +} + +export interface Factory { + create(): Promise; + destroy(client: T): Promise; + validate?(client: T): Promise; +} + +export interface Options { + max?: number; + min?: number; + maxWaitingClients?: number; + testOnBorrow?: boolean; + acquireTimeoutMillis?: number; + fifo?: boolean; + priorityRange?: number; + autostart?: boolean; + evictionRunIntervalMillis?: number; + numTestsPerRun?: number; + softIdleTimeoutMillis?: number; + idleTimeoutMillis?: number; +} + +export function createPool(factory: Factory, opts?: Options): Pool; diff --git a/types/generic-pool/tsconfig.json b/types/generic-pool/tsconfig.json new file mode 100644 index 0000000000..1110c67eff --- /dev/null +++ b/types/generic-pool/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", + "generic-pool-tests.ts" + ] +} diff --git a/types/generic-pool/tslint.json b/types/generic-pool/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/generic-pool/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }