@nsshunt/stsdatamanagement 1.17.144 → 1.17.146
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/pgpoolmanager.js
CHANGED
|
@@ -31,11 +31,19 @@ class PGPoolManager extends tiny_emitter_1.TinyEmitter {
|
|
|
31
31
|
usedefaultdb: false
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
|
-
this.#
|
|
34
|
+
this.#CreatePools(options);
|
|
35
35
|
}
|
|
36
|
-
#
|
|
37
|
-
const { databaseUrl, connectionString, defaultDatabaseConnectionString, isProduction
|
|
36
|
+
#CreatePools(options) {
|
|
37
|
+
const { databaseUrl, connectionString, defaultDatabaseConnectionString, isProduction } = (0, stsconfig_1.$Options)();
|
|
38
38
|
const poolConnectionString = isProduction ? databaseUrl : (options.usedefaultdb === true ? defaultDatabaseConnectionString : connectionString);
|
|
39
|
+
const poolConnectionStrings = poolConnectionString.split(',');
|
|
40
|
+
for (let i = 0; i < poolConnectionStrings.length; i++) {
|
|
41
|
+
this.#CreatePool(i, poolConnectionStrings[i]);
|
|
42
|
+
}
|
|
43
|
+
this.#AttachInstruments();
|
|
44
|
+
}
|
|
45
|
+
#CreatePool(poolIndex, poolConnectionString) {
|
|
46
|
+
const { isProduction, poolSize } = (0, stsconfig_1.$Options)();
|
|
39
47
|
// https://mylifedigital.co.uk/securing-node-postgres-with-ssl/
|
|
40
48
|
const pool = new pg_1.Pool({
|
|
41
49
|
connectionString: poolConnectionString,
|
|
@@ -61,7 +69,7 @@ class PGPoolManager extends tiny_emitter_1.TinyEmitter {
|
|
|
61
69
|
const sep = usernamepassword.split(':');
|
|
62
70
|
const usernamepasswordReplacement = usernamepassword.replace(sep[1], '*****************************');
|
|
63
71
|
const safeConnectionString = poolConnectionString.replace(usernamepassword, usernamepasswordReplacement);
|
|
64
|
-
this.#pools[
|
|
72
|
+
this.#pools[this.#GetPoolKey(poolIndex)] = {
|
|
65
73
|
connectionString: poolConnectionString,
|
|
66
74
|
safeConnectionString,
|
|
67
75
|
pool
|
|
@@ -85,11 +93,11 @@ class PGPoolManager extends tiny_emitter_1.TinyEmitter {
|
|
|
85
93
|
});
|
|
86
94
|
pool.on('connect', () => {
|
|
87
95
|
//debug(chalk.green(`[${this.#safeConnectionString}]: pool connect`));
|
|
88
|
-
this
|
|
96
|
+
this.#UpdateInstruments();
|
|
89
97
|
});
|
|
90
98
|
pool.on('acquire', () => {
|
|
91
99
|
//debug(chalk.green(`[${this.#safeConnectionString}]: pool acquire`));
|
|
92
|
-
this
|
|
100
|
+
this.#UpdateInstruments();
|
|
93
101
|
});
|
|
94
102
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
95
103
|
pool.on('release', (error) => {
|
|
@@ -98,13 +106,12 @@ class PGPoolManager extends tiny_emitter_1.TinyEmitter {
|
|
|
98
106
|
console.error(chalk_1.default.red(`Unexpected error on client release from pool: [${error}], connection: [${safeConnectionString}]`));
|
|
99
107
|
}
|
|
100
108
|
//debug(chalk.green(`[${this.#safeConnectionString}]: pool release`));
|
|
101
|
-
this
|
|
109
|
+
this.#UpdateInstruments();
|
|
102
110
|
});
|
|
103
111
|
pool.on('remove', () => {
|
|
104
112
|
//debug(chalk.green(`[${this.#safeConnectionString}]: pool remove`));
|
|
105
|
-
this
|
|
113
|
+
this.#UpdateInstruments();
|
|
106
114
|
});
|
|
107
|
-
this.AttachInstruments();
|
|
108
115
|
}
|
|
109
116
|
async EndPool(poolItem) {
|
|
110
117
|
debug(chalk_1.default.cyan(`Ending database for process PID: ${process.pid}`));
|
|
@@ -120,14 +127,13 @@ class PGPoolManager extends tiny_emitter_1.TinyEmitter {
|
|
|
120
127
|
else {
|
|
121
128
|
debug(chalk_1.default.yellow(`Database pool was not defined - not ended for PID: ${process.pid}`));
|
|
122
129
|
}
|
|
123
|
-
this.DetachInstruments();
|
|
124
130
|
}
|
|
125
131
|
async End() {
|
|
126
132
|
debug(chalk_1.default.cyan(`Ending database for process PID: ${process.pid}`));
|
|
127
133
|
for (const [, pool] of Object.entries(this.#pools)) {
|
|
128
134
|
await this.EndPool(pool); //@@ should use promise.all
|
|
129
135
|
}
|
|
130
|
-
this
|
|
136
|
+
this.#DetachInstruments();
|
|
131
137
|
}
|
|
132
138
|
#GetPoolKey(index) {
|
|
133
139
|
return `${this.#keyPrefix}${index}`;
|
|
@@ -143,7 +149,7 @@ class PGPoolManager extends tiny_emitter_1.TinyEmitter {
|
|
|
143
149
|
}
|
|
144
150
|
}
|
|
145
151
|
//@@ make event using TinyEmitter
|
|
146
|
-
UpdateInstruments() {
|
|
152
|
+
#UpdateInstruments() {
|
|
147
153
|
const data = {
|
|
148
154
|
totalCount: 0,
|
|
149
155
|
idleCount: 0,
|
|
@@ -156,12 +162,12 @@ class PGPoolManager extends tiny_emitter_1.TinyEmitter {
|
|
|
156
162
|
}
|
|
157
163
|
this.emit(PGPoolManagerEventName.UpdateInstruments, data);
|
|
158
164
|
}
|
|
159
|
-
AttachInstruments(interval = 1000) {
|
|
165
|
+
#AttachInstruments(interval = 1000) {
|
|
160
166
|
this.#observer = setInterval(() => {
|
|
161
|
-
this
|
|
167
|
+
this.#UpdateInstruments();
|
|
162
168
|
}, interval).unref();
|
|
163
169
|
}
|
|
164
|
-
DetachInstruments() {
|
|
170
|
+
#DetachInstruments() {
|
|
165
171
|
clearInterval(this.#observer);
|
|
166
172
|
this.#observer = null;
|
|
167
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pgpoolmanager.js","sourceRoot":"","sources":["../src/pgpoolmanager.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA6C;AAE7C,kDAA0B;AAE1B,kDAA0B;AAC1B,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAE3C,kBAAe;AAEf,sDAA6B;AAE7B,oDAA4B;AAE5B,2BAA2B;AAC3B,wEAAwE;AACxE,sFAAsF;AACtF,2BAAiD;AACjD,+CAA2C;AAM3C,IAAY,sBAEX;AAFD,WAAY,sBAAsB;IAC9B,iEAAuC,CAAA;AAC3C,CAAC,EAFW,sBAAsB,sCAAtB,sBAAsB,QAEjC;AAQD,MAAa,aAAc,SAAQ,0BAAW;IAE1C,SAAS,GAA0B,IAAI,CAAC;IACxC,MAAM,GAA8B,EAAG,CAAC;IACxC,UAAU,GAAW,SAAS,CAAC;IAE/B,YAAY,OAA8B;QAEtC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,GAAG;gBACN,YAAY,EAAE,KAAK;aACtB,CAAA;QACL,CAAC;QAED,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"pgpoolmanager.js","sourceRoot":"","sources":["../src/pgpoolmanager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/types/pgpoolmanager.d.ts
CHANGED
|
@@ -18,8 +18,5 @@ export declare class PGPoolManager extends TinyEmitter {
|
|
|
18
18
|
EndPool(poolItem: IPoolItem): Promise<void>;
|
|
19
19
|
End(): Promise<void>;
|
|
20
20
|
connect(usemultipledatabases?: boolean): Promise<PoolClient>;
|
|
21
|
-
UpdateInstruments(): void;
|
|
22
|
-
AttachInstruments(interval?: number): void;
|
|
23
|
-
DetachInstruments(): void;
|
|
24
21
|
}
|
|
25
22
|
//# sourceMappingURL=pgpoolmanager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pgpoolmanager.d.ts","sourceRoot":"","sources":["../src/pgpoolmanager.ts"],"names":[],"mappings":"AAOA,OAAO,QAAQ,CAAA;AASf,OAAO,EAAE,IAAI,EAAc,UAAU,EAAE,MAAM,IAAI,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,WAAW,oBAAoB;IACpC,YAAY,EAAE,OAAO,CAAA;CACrB;AAED,oBAAY,sBAAsB;IAC9B,iBAAiB,sBAAsB;CAC1C;AAED,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,IAAI,CAAA;IACV,gBAAgB,EAAE,MAAM,CAAA;IACxB,oBAAoB,EAAE,MAAM,CAAA;CAC/B;AAED,qBAAa,aAAc,SAAQ,WAAW;;gBAM9B,OAAO,CAAC,EAAE,oBAAoB;
|
|
1
|
+
{"version":3,"file":"pgpoolmanager.d.ts","sourceRoot":"","sources":["../src/pgpoolmanager.ts"],"names":[],"mappings":"AAOA,OAAO,QAAQ,CAAA;AASf,OAAO,EAAE,IAAI,EAAc,UAAU,EAAE,MAAM,IAAI,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,WAAW,oBAAoB;IACpC,YAAY,EAAE,OAAO,CAAA;CACrB;AAED,oBAAY,sBAAsB;IAC9B,iBAAiB,sBAAsB;CAC1C;AAED,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,IAAI,CAAA;IACV,gBAAgB,EAAE,MAAM,CAAA;IACxB,oBAAoB,EAAE,MAAM,CAAA;CAC/B;AAED,qBAAa,aAAc,SAAQ,WAAW;;gBAM9B,OAAO,CAAC,EAAE,oBAAoB;IAwGpC,OAAO,CAAC,QAAQ,EAAE,SAAS;IAe3B,GAAG;IAYH,OAAO,CAAC,oBAAoB,GAAE,OAAc,GAAG,OAAO,CAAC,UAAU,CAAC;CAqC3E"}
|