From ea8444f155e2adb84e016bcb7b524803b12119d9 Mon Sep 17 00:00:00 2001 From: Alexander <2273103+SkeLLLa@users.noreply.github.com> Date: Fri, 22 Jul 2022 11:41:40 +0200 Subject: [PATCH] fix(types): add missing pool stats (#1573) * fix(types): add missing pool stats * fix(test): expect type fix --- test/types/pool.test-d.ts | 11 ++++++++++- types/pool-stats.d.ts | 19 +++++++++++++++++++ types/pool.d.ts | 4 ++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 types/pool-stats.d.ts diff --git a/test/types/pool.test-d.ts b/test/types/pool.test-d.ts index 05334696bda..c237468e836 100644 --- a/test/types/pool.test-d.ts +++ b/test/types/pool.test-d.ts @@ -1,5 +1,5 @@ import { Duplex, Readable, Writable } from 'stream' -import { expectAssignable } from 'tsd' +import { expectAssignable, expectType } from 'tsd' import { Dispatcher, Pool, Client } from '../..' import { URL } from 'url' @@ -16,6 +16,7 @@ expectAssignable(new Pool('', { connections: 1 })) // properties expectAssignable(pool.closed) expectAssignable(pool.destroyed) + expectAssignable(pool.stats) // request expectAssignable>(pool.request({ origin: '', path: '', method: 'GET' })) @@ -100,4 +101,12 @@ expectAssignable(new Pool('', { connections: 1 })) expectAssignable(pool.destroy(() => {})) expectAssignable(pool.destroy(new Error(), () => {})) expectAssignable(pool.destroy(null, () => {})) + + // stats + expectType(pool.stats.connected) + expectType(pool.stats.free) + expectType(pool.stats.pending) + expectType(pool.stats.queued) + expectType(pool.stats.running) + expectType(pool.stats.size) } diff --git a/types/pool-stats.d.ts b/types/pool-stats.d.ts new file mode 100644 index 00000000000..807e68f1b81 --- /dev/null +++ b/types/pool-stats.d.ts @@ -0,0 +1,19 @@ +import Pool = require("./pool") + +export = PoolStats + +declare class PoolStats { + constructor(pool: Pool); + /** Number of open socket connections in this pool. */ + connected: number; + /** Number of open socket connections in this pool that do not have an active request. */ + free: number; + /** Number of pending requests across all clients in this pool. */ + pending: number; + /** Number of queued requests across all clients in this pool. */ + queued: number; + /** Number of currently active requests across all clients in this pool. */ + running: number; + /** Number of active, pending, or queued requests across all clients in this pool. */ + size: number; +} diff --git a/types/pool.d.ts b/types/pool.d.ts index 82aeb376cd2..af7fb94a9a6 100644 --- a/types/pool.d.ts +++ b/types/pool.d.ts @@ -1,5 +1,6 @@ import Client = require('./client') import Dispatcher = require('./dispatcher') +import TPoolStats = require('./pool-stats') import { URL } from 'url' export = Pool @@ -10,9 +11,12 @@ declare class Pool extends Dispatcher { closed: boolean; /** `true` after `pool.destroyed()` has been called or `pool.close()` has been called and the pool shutdown has completed. */ destroyed: boolean; + /** Aggregate stats for a Pool. */ + readonly stats: TPoolStats; } declare namespace Pool { + export type PoolStats = TPoolStats; export interface Options extends Client.Options { /** Default: `(origin, opts) => new Client(origin, opts)`. */ factory?(origin: URL, opts: object): Dispatcher;