From cb47904741f96ebc7fa32f29a2fca7df2f64d606 Mon Sep 17 00:00:00 2001 From: Hossein Zamanian Date: Tue, 7 Sep 2021 18:09:13 +0430 Subject: [PATCH 1/3] add event for acquired and released function Took 16 minutes --- lib/Pool.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/Pool.js b/lib/Pool.js index 0a006dd..9dbe520 100644 --- a/lib/Pool.js +++ b/lib/Pool.js @@ -20,6 +20,8 @@ const reflector = require("./utils").reflector; */ const FACTORY_CREATE_ERROR = "factoryCreateError"; const FACTORY_DESTROY_ERROR = "factoryDestroyError"; +const RESOURCE_ACQUIRED = "resourceAcquired"; +const RESOURCE_RELEASED = "resourceReleased"; class Pool extends EventEmitter { /** @@ -467,7 +469,10 @@ class Pool extends EventEmitter { this._waitingClientsQueue.enqueue(resourceRequest, priority); this._dispense(); - return resourceRequest.promise; + return resourceRequest.promise.then(resource => { + this.emit(RESOURCE_ACQUIRED); + return resource; + }); } /** @@ -527,7 +532,10 @@ class Pool extends EventEmitter { this._addPooledResourceToAvailableObjects(pooledResource); this._dispense(); - return this._Promise.resolve(); + return this._Promise.resolve().then(res => { + this.emit(RESOURCE_RELEASED); + return res; + }); } /** From aed32db793c80cf0c9214e59ac314accaa6bf678 Mon Sep 17 00:00:00 2001 From: Hossein Zamanian Date: Tue, 7 Sep 2021 18:09:32 +0430 Subject: [PATCH 2/3] add ts definition for event emitter Took 24 seconds --- index.d.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/index.d.ts b/index.d.ts index 44daab8..67c6b6d 100644 --- a/index.d.ts +++ b/index.d.ts @@ -6,6 +6,13 @@ import { EventEmitter } from "events"; +export declare interface Pool { + on(event: 'factoryCreateError', listener: (error: Error) => void | Promise): this; + on(event: 'factoryDestroyError', listener: (error: Error) => void | Promise): this; + on(event: 'resourceAcquires', listener: () => void | Promise): this; + on(event: 'resourceReleased', listener: () => void | Promise): this; +} + export class Pool extends EventEmitter { spareResourceCapacity: number; size: number; From c74375b614f602701f47ce0111567e8790b90e88 Mon Sep 17 00:00:00 2001 From: Hossein Zamanian Date: Tue, 7 Sep 2021 21:45:25 +0430 Subject: [PATCH 3/3] fix typo error in event name Took 28 seconds --- index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.d.ts b/index.d.ts index 67c6b6d..f336916 100644 --- a/index.d.ts +++ b/index.d.ts @@ -9,7 +9,7 @@ import { EventEmitter } from "events"; export declare interface Pool { on(event: 'factoryCreateError', listener: (error: Error) => void | Promise): this; on(event: 'factoryDestroyError', listener: (error: Error) => void | Promise): this; - on(event: 'resourceAcquires', listener: () => void | Promise): this; + on(event: 'resourceAcquired', listener: () => void | Promise): this; on(event: 'resourceReleased', listener: () => void | Promise): this; }