lightning-pool
Version:
Fastest generic Pool written with TypeScript
129 lines (128 loc) • 4.25 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PoolOptions = void 0;
const events_1 = require("events");
const defaultValues = {
acquireMaxRetries: 0,
acquireRetryWait: 2000,
acquireTimeoutMillis: 0,
fifo: true,
idleTimeoutMillis: 30000,
houseKeepInterval: 1000,
min: 0,
minIdle: 0,
max: 10,
maxQueue: 1000,
validation: true,
};
class PoolOptions extends events_1.EventEmitter {
constructor(pool) {
super();
this.pool = pool;
this._acquireMaxRetries = defaultValues.acquireMaxRetries;
this._acquireRetryWait = defaultValues.acquireRetryWait;
this._acquireTimeoutMillis = defaultValues.acquireTimeoutMillis;
this._fifo = defaultValues.fifo;
this._idleTimeoutMillis = defaultValues.idleTimeoutMillis;
this._houseKeepInterval = defaultValues.houseKeepInterval;
this._min = defaultValues.min;
this._minIdle = defaultValues.minIdle;
this._max = defaultValues.max;
this._maxQueue = defaultValues.maxQueue;
this._validation = defaultValues.validation;
this.pool = pool;
}
get acquireMaxRetries() {
return this._acquireMaxRetries;
}
set acquireMaxRetries(val) {
this._acquireMaxRetries = val >= 0 ? val : defaultValues.acquireMaxRetries;
this.emit('change', 'acquireMaxRetries', this._acquireMaxRetries);
}
get acquireRetryWait() {
return this._acquireRetryWait;
}
set acquireRetryWait(val) {
this._acquireRetryWait = val >= 0 ? val : defaultValues.acquireRetryWait;
this.emit('change', 'acquireRetryWait', this._acquireRetryWait);
}
get acquireTimeoutMillis() {
return this._acquireTimeoutMillis;
}
set acquireTimeoutMillis(val) {
this._acquireTimeoutMillis =
val >= 0 ? val : defaultValues.acquireTimeoutMillis;
this.emit('change', 'acquireTimeoutMillis', this._acquireTimeoutMillis);
}
get fifo() {
return this._fifo;
}
set fifo(val) {
// noinspection PointlessBooleanExpressionJS
this._fifo = !!val;
this.emit('change', 'fifo', this.fifo);
}
get idleTimeoutMillis() {
return this._idleTimeoutMillis;
}
set idleTimeoutMillis(val) {
this._idleTimeoutMillis = val >= 0 ? val : defaultValues.idleTimeoutMillis;
this.emit('change', 'idleTimeoutMillis', this._idleTimeoutMillis);
}
get houseKeepInterval() {
return this._houseKeepInterval;
}
set houseKeepInterval(val) {
this._houseKeepInterval = val >= 0 ? val : defaultValues.houseKeepInterval;
this.emit('change', 'houseKeepInterval', this._houseKeepInterval);
}
get min() {
return this._min;
}
set min(val) {
this._min = val >= 0 ? val : defaultValues.min;
if (this._min > this._max)
this._max = this._min;
this.emit('change', 'min', this._min);
}
get minIdle() {
return this._minIdle;
}
set minIdle(val) {
this._minIdle = val >= 0 ? val : defaultValues.minIdle;
this.emit('change', 'minIdle', this.minIdle);
}
get max() {
return this._max;
}
set max(val) {
this._max = val >= 0 ? Math.max(val, 1) : defaultValues.max;
if (this._min > this._max)
this._min = this._max;
this.emit('change', 'max', this._max);
}
get maxQueue() {
return this._maxQueue;
}
set maxQueue(val) {
this._maxQueue = val >= 0 ? Math.max(val, 1) : defaultValues.maxQueue;
this.emit('change', 'maxQueue', this._maxQueue);
}
get validation() {
return this._validation;
}
set validation(val) {
// noinspection PointlessBooleanExpressionJS
this._validation = !!val;
this.emit('change', 'validation', this._validation);
}
assign(values) {
const proto = Object.getPrototypeOf(this);
for (const k of Object.keys(values)) {
const desc = Object.getOwnPropertyDescriptor(proto, k);
if (desc && desc.set)
this[k] = values[k];
}
}
}
exports.PoolOptions = PoolOptions;