@nsshunt/stsappframework 3.3.184 → 4.0.1
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/README.md +300 -319
- package/dist/commonTypes.js +1 -12
- package/dist/commonTypes.js.map +1 -1
- package/dist/exampleapp/app.js +238 -0
- package/dist/exampleapp/app.js.map +1 -0
- package/dist/index.js +11 -7
- package/dist/index.js.map +1 -1
- package/dist/logger/stsTransportLoggerSocket.js +5 -0
- package/dist/logger/stsTransportLoggerSocket.js.map +1 -1
- package/dist/{process → plugins}/clusterworkermanager.js +37 -36
- package/dist/plugins/clusterworkermanager.js.map +1 -0
- package/dist/plugins/pgpoolmanager.js +186 -0
- package/dist/plugins/pgpoolmanager.js.map +1 -0
- package/dist/{process → plugins}/servertypes/serverUtils.js.map +1 -1
- package/dist/{process → plugins}/servertypes/stsexpressserver.js +44 -19
- package/dist/plugins/servertypes/stsexpressserver.js.map +1 -0
- package/dist/{process → plugins}/servertypes/stsjsonrpcserver.js +2 -3
- package/dist/plugins/servertypes/stsjsonrpcserver.js.map +1 -0
- package/dist/{process → plugins}/servertypes/stsserverfactory.js +2 -2
- package/dist/plugins/servertypes/stsserverfactory.js.map +1 -0
- package/dist/{process → plugins}/servertypes/ststcprawserver.js +2 -2
- package/dist/plugins/servertypes/ststcprawserver.js.map +1 -0
- package/dist/plugins/stsclusterworkermanagerplugin.js +54 -0
- package/dist/plugins/stsclusterworkermanagerplugin.js.map +1 -0
- package/dist/plugins/stsconfigplugin.js +16 -0
- package/dist/plugins/stsconfigplugin.js.map +1 -0
- package/dist/plugins/stsexpresscontrollerplugin.js +47 -0
- package/dist/plugins/stsexpresscontrollerplugin.js.map +1 -0
- package/dist/plugins/stsinstrumentmanagerplugin.js +102 -0
- package/dist/plugins/stsinstrumentmanagerplugin.js.map +1 -0
- package/dist/plugins/stslatencymanager.js +122 -0
- package/dist/plugins/stslatencymanager.js.map +1 -0
- package/dist/plugins/stslatencyplugin.js +29 -0
- package/dist/plugins/stslatencyplugin.js.map +1 -0
- package/dist/plugins/stslifecycleplugin.js +48 -0
- package/dist/plugins/stslifecycleplugin.js.map +1 -0
- package/dist/plugins/stsloggerplugin.js +60 -0
- package/dist/plugins/stsloggerplugin.js.map +1 -0
- package/dist/{process/metrics.js → plugins/stsmetricsplugin.js} +33 -9
- package/dist/plugins/stsmetricsplugin.js.map +1 -0
- package/dist/plugins/stspgpoolmanagerplugin.js +67 -0
- package/dist/plugins/stspgpoolmanagerplugin.js.map +1 -0
- package/dist/plugins/stsserverplugin.js +89 -0
- package/dist/plugins/stsserverplugin.js.map +1 -0
- package/dist/route/stsrootroute.js +10 -0
- package/dist/route/stsrootroute.js.map +1 -0
- package/dist/stsapp.js +190 -0
- package/dist/stsapp.js.map +1 -0
- package/package.json +16 -23
- package/types/commonTypes.d.ts +28 -203
- package/types/commonTypes.d.ts.map +1 -1
- package/types/exampleapp/app.d.ts +2 -0
- package/types/exampleapp/app.d.ts.map +1 -0
- package/types/index.d.ts +11 -7
- package/types/index.d.ts.map +1 -1
- package/types/logger/stsTransportLoggerSocket.d.ts +1 -0
- package/types/logger/stsTransportLoggerSocket.d.ts.map +1 -1
- package/types/{process → plugins}/clusterworkermanager.d.ts +5 -1
- package/types/plugins/clusterworkermanager.d.ts.map +1 -0
- package/types/plugins/pgpoolmanager.d.ts +34 -0
- package/types/plugins/pgpoolmanager.d.ts.map +1 -0
- package/types/{process → plugins}/servertypes/serverUtils.d.ts.map +1 -1
- package/types/plugins/servertypes/stsexpressserver.d.ts +22 -0
- package/types/plugins/servertypes/stsexpressserver.d.ts.map +1 -0
- package/types/{process → plugins}/servertypes/stsjsonrpcserver.d.ts +1 -9
- package/types/plugins/servertypes/stsjsonrpcserver.d.ts.map +1 -0
- package/types/{process → plugins}/servertypes/stsserverfactory.d.ts +2 -4
- package/types/plugins/servertypes/stsserverfactory.d.ts.map +1 -0
- package/types/{process → plugins}/servertypes/ststcprawserver.d.ts +1 -9
- package/types/plugins/servertypes/ststcprawserver.d.ts.map +1 -0
- package/types/plugins/stsclusterworkermanagerplugin.d.ts +16 -0
- package/types/plugins/stsclusterworkermanagerplugin.d.ts.map +1 -0
- package/types/plugins/stsconfigplugin.d.ts +10 -0
- package/types/plugins/stsconfigplugin.d.ts.map +1 -0
- package/types/plugins/stsexpresscontrollerplugin.d.ts +25 -0
- package/types/plugins/stsexpresscontrollerplugin.d.ts.map +1 -0
- package/types/plugins/stsinstrumentmanagerplugin.d.ts +31 -0
- package/types/plugins/stsinstrumentmanagerplugin.d.ts.map +1 -0
- package/types/plugins/stslatencymanager.d.ts +24 -0
- package/types/plugins/stslatencymanager.d.ts.map +1 -0
- package/types/plugins/stslatencyplugin.d.ts +12 -0
- package/types/plugins/stslatencyplugin.d.ts.map +1 -0
- package/types/plugins/stslifecycleplugin.d.ts +25 -0
- package/types/plugins/stslifecycleplugin.d.ts.map +1 -0
- package/types/plugins/stsloggerplugin.d.ts +19 -0
- package/types/plugins/stsloggerplugin.d.ts.map +1 -0
- package/types/{process/metrics.d.ts → plugins/stsmetricsplugin.d.ts} +12 -5
- package/types/plugins/stsmetricsplugin.d.ts.map +1 -0
- package/types/plugins/stspgpoolmanagerplugin.d.ts +14 -0
- package/types/plugins/stspgpoolmanagerplugin.d.ts.map +1 -0
- package/types/plugins/stsserverplugin.d.ts +16 -0
- package/types/plugins/stsserverplugin.d.ts.map +1 -0
- package/types/route/stsrootroute.d.ts +5 -0
- package/types/route/stsrootroute.d.ts.map +1 -0
- package/types/stsapp.d.ts +16 -0
- package/types/stsapp.d.ts.map +1 -0
- package/dist/grpc/grpcServer.js +0 -415
- package/dist/grpc/grpcServer.js.map +0 -1
- package/dist/process/clusterworkermanager.js.map +0 -1
- package/dist/process/datamanager.js +0 -78
- package/dist/process/datamanager.js.map +0 -1
- package/dist/process/latencyManager.js +0 -56
- package/dist/process/latencyManager.js.map +0 -1
- package/dist/process/logManager.js +0 -36
- package/dist/process/logManager.js.map +0 -1
- package/dist/process/masterprocessbase.js +0 -154
- package/dist/process/masterprocessbase.js.map +0 -1
- package/dist/process/metrics.js.map +0 -1
- package/dist/process/processbase.js +0 -203
- package/dist/process/processbase.js.map +0 -1
- package/dist/process/prometheusmanager.js +0 -112
- package/dist/process/prometheusmanager.js.map +0 -1
- package/dist/process/serverprocessbase.js +0 -204
- package/dist/process/serverprocessbase.js.map +0 -1
- package/dist/process/servertypes/stsexpressserver.js.map +0 -1
- package/dist/process/servertypes/stsjsonrpcserver.js.map +0 -1
- package/dist/process/servertypes/stsserverfactory.js.map +0 -1
- package/dist/process/servertypes/ststcprawserver.js.map +0 -1
- package/dist/process/singleprocessbase.js +0 -48
- package/dist/process/singleprocessbase.js.map +0 -1
- package/dist/process/sysinfo.js +0 -56
- package/dist/process/sysinfo.js.map +0 -1
- package/dist/process/workerprocessbase.js +0 -35
- package/dist/process/workerprocessbase.js.map +0 -1
- package/dist/publishertransports/publishTransportUtils.js +0 -43
- package/dist/publishertransports/publishTransportUtils.js.map +0 -1
- package/dist/sysinfo/network.js +0 -31
- package/dist/sysinfo/network.js.map +0 -1
- package/dist/validation/errors.js +0 -7
- package/dist/validation/errors.js.map +0 -1
- package/types/grpc/grpcServer.d.ts +0 -31
- package/types/grpc/grpcServer.d.ts.map +0 -1
- package/types/process/clusterworkermanager.d.ts.map +0 -1
- package/types/process/datamanager.d.ts +0 -15
- package/types/process/datamanager.d.ts.map +0 -1
- package/types/process/latencyManager.d.ts +0 -10
- package/types/process/latencyManager.d.ts.map +0 -1
- package/types/process/logManager.d.ts +0 -9
- package/types/process/logManager.d.ts.map +0 -1
- package/types/process/masterprocessbase.d.ts +0 -13
- package/types/process/masterprocessbase.d.ts.map +0 -1
- package/types/process/metrics.d.ts.map +0 -1
- package/types/process/processbase.d.ts +0 -19
- package/types/process/processbase.d.ts.map +0 -1
- package/types/process/prometheusmanager.d.ts +0 -10
- package/types/process/prometheusmanager.d.ts.map +0 -1
- package/types/process/serverprocessbase.d.ts +0 -18
- package/types/process/serverprocessbase.d.ts.map +0 -1
- package/types/process/servertypes/stsexpressserver.d.ts +0 -34
- package/types/process/servertypes/stsexpressserver.d.ts.map +0 -1
- package/types/process/servertypes/stsjsonrpcserver.d.ts.map +0 -1
- package/types/process/servertypes/stsserverfactory.d.ts.map +0 -1
- package/types/process/servertypes/ststcprawserver.d.ts.map +0 -1
- package/types/process/singleprocessbase.d.ts +0 -14
- package/types/process/singleprocessbase.d.ts.map +0 -1
- package/types/process/sysinfo.d.ts +0 -8
- package/types/process/sysinfo.d.ts.map +0 -1
- package/types/process/workerprocessbase.d.ts +0 -8
- package/types/process/workerprocessbase.d.ts.map +0 -1
- package/types/publishertransports/publishTransportUtils.d.ts +0 -5
- package/types/publishertransports/publishTransportUtils.d.ts.map +0 -1
- package/types/sysinfo/network.d.ts +0 -4
- package/types/sysinfo/network.d.ts.map +0 -1
- package/types/validation/errors.d.ts +0 -7
- package/types/validation/errors.d.ts.map +0 -1
- /package/dist/{process → plugins}/servertypes/serverUtils.js +0 -0
- /package/types/{process → plugins}/servertypes/serverUtils.d.ts +0 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import cluster from "cluster";
|
|
4
|
+
//const pg = require('pg');
|
|
5
|
+
//pg.types.setTypeParser(20, BigInt); // Type Id 20 = BIGINT | BIGSERIAL
|
|
6
|
+
// https://stackoverflow.com/questions/39168501/pg-promise-returns-integers-as-strings
|
|
7
|
+
import { Pool } from "pg";
|
|
8
|
+
import { TinyEmitter } from "tiny-emitter";
|
|
9
|
+
import { Gauge } from "@nsshunt/stsobservability";
|
|
10
|
+
import { STSMetricsPluginToken } from "./stsmetricsplugin.js";
|
|
11
|
+
import { STSLoggerPluginToken } from "./stsloggerplugin.js";
|
|
12
|
+
import { inject } from "@nsshunt/stsutils";
|
|
13
|
+
export var IDBAccessLayerEvents;
|
|
14
|
+
(function (IDBAccessLayerEvents) {
|
|
15
|
+
IDBAccessLayerEvents["UpdateInstruments"] = "UpdateInstruments";
|
|
16
|
+
})(IDBAccessLayerEvents || (IDBAccessLayerEvents = {}));
|
|
17
|
+
export class PGPoolManager extends TinyEmitter {
|
|
18
|
+
#options;
|
|
19
|
+
#observer = null;
|
|
20
|
+
#pools = {};
|
|
21
|
+
#keyPrefix = "__STS__";
|
|
22
|
+
currentReadOnlyPoolIndex = 0;
|
|
23
|
+
logger = inject(STSLoggerPluginToken);
|
|
24
|
+
metrics = inject(STSMetricsPluginToken);
|
|
25
|
+
constructor(options) {
|
|
26
|
+
super();
|
|
27
|
+
this.#options = options;
|
|
28
|
+
}
|
|
29
|
+
#LogDebugMessage(message) {
|
|
30
|
+
this.logger.debug(message);
|
|
31
|
+
}
|
|
32
|
+
#LogErrorMessage(message) {
|
|
33
|
+
this.logger.error(message);
|
|
34
|
+
}
|
|
35
|
+
Start = async () => {
|
|
36
|
+
const poolConnectionStrings = this.#options.poolConnectionString.split(",");
|
|
37
|
+
for (let i = 0; i < poolConnectionStrings.length; i++) {
|
|
38
|
+
this.#CreatePool(i, poolConnectionStrings[i]);
|
|
39
|
+
}
|
|
40
|
+
this.#AttachInstruments();
|
|
41
|
+
};
|
|
42
|
+
#CreatePool = (poolIndex, poolConnectionString) => {
|
|
43
|
+
// https://mylifedigital.co.uk/securing-node-postgres-with-ssl/
|
|
44
|
+
const pool = new Pool({
|
|
45
|
+
connectionString: poolConnectionString,
|
|
46
|
+
ssl: this.#options.ssl,
|
|
47
|
+
max: this.#options.poolSize, // Default is 10 - This will be the number in a pool per thread (worker)
|
|
48
|
+
// Consideration needs to be given for the max number of connections at the database.
|
|
49
|
+
// Max connections calculation = max pool size * max workers (threads) per instance/node * max instances in a cluster (k3s, k8s, swarm mode etc.)
|
|
50
|
+
/*
|
|
51
|
+
ssl: {
|
|
52
|
+
// rejectUnauthorized: true, // Make this true for PROD
|
|
53
|
+
rejectUnauthorized: false,
|
|
54
|
+
//ca: fs.readFileSync('/path/to/server-certificates/root.crt').toString(),
|
|
55
|
+
//key: fs.readFileSync('/path/to/client-key/postgresql.key').toString(),
|
|
56
|
+
//cert: fs.readFileSync('/path/to/client-certificates/postgresql.crt').toString(),
|
|
57
|
+
}
|
|
58
|
+
*/
|
|
59
|
+
});
|
|
60
|
+
const re = new RegExp("//(.*)@").exec(poolConnectionString);
|
|
61
|
+
let usernamepassword = "";
|
|
62
|
+
if (re) {
|
|
63
|
+
usernamepassword = re[1];
|
|
64
|
+
}
|
|
65
|
+
const sep = usernamepassword.split(":");
|
|
66
|
+
const usernamepasswordReplacement = usernamepassword.replace(sep[1], "*****************************");
|
|
67
|
+
const safeConnectionString = poolConnectionString.replace(usernamepassword, usernamepasswordReplacement);
|
|
68
|
+
this.#pools[this.#GetPoolKey(poolIndex)] = {
|
|
69
|
+
connectionString: poolConnectionString,
|
|
70
|
+
safeConnectionString,
|
|
71
|
+
pool,
|
|
72
|
+
};
|
|
73
|
+
if (cluster.isPrimary) {
|
|
74
|
+
this.#LogDebugMessage(chalk.yellow(`Created Database Pool with Master Thread, PID: [${process.pid}]`));
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
this.#LogDebugMessage(chalk.yellow(`Created Database Pool with Worker Thread, PID: [${process.pid}]`));
|
|
78
|
+
}
|
|
79
|
+
this.#LogDebugMessage(chalk.yellow(`Created Database Pool: Master Thread`));
|
|
80
|
+
this.#LogDebugMessage(chalk.yellow(` Connection URI: [${safeConnectionString}]`));
|
|
81
|
+
this.#LogDebugMessage(chalk.yellow(` Maximum Pool Size: [${this.#options.poolSize}]`));
|
|
82
|
+
this.#LogDebugMessage(chalk.yellow(` SSL Connection: [${this.#options.ssl}]`));
|
|
83
|
+
// the pool will emit an error on behalf of any idle clients
|
|
84
|
+
// it contains if a backend error or network partition happens
|
|
85
|
+
pool.on("error", (error) => {
|
|
86
|
+
this.#LogDebugMessage(chalk.red(`[${safeConnectionString}]: pool error`));
|
|
87
|
+
this.#LogErrorMessage(chalk.red(`Unexpected error on idle client: [${error}], connection: [${safeConnectionString}]`));
|
|
88
|
+
});
|
|
89
|
+
pool.on("connect", () => {
|
|
90
|
+
//this.#LogDebugMessage(chalk.green(`[${safeConnectionString}]: pool connect`));
|
|
91
|
+
this.#UpdateInstruments();
|
|
92
|
+
});
|
|
93
|
+
pool.on("acquire", () => {
|
|
94
|
+
//this.#LogDebugMessage(chalk.green(`[${safeConnectionString}]: pool acquire`));
|
|
95
|
+
this.#UpdateInstruments();
|
|
96
|
+
});
|
|
97
|
+
pool.on("release", (error) => {
|
|
98
|
+
if (error) {
|
|
99
|
+
this.#LogDebugMessage(chalk.red(`[${safeConnectionString}]: pool release`));
|
|
100
|
+
this.#LogErrorMessage(chalk.red(`Unexpected error on client release from pool: [${error}], connection: [${safeConnectionString}]`));
|
|
101
|
+
}
|
|
102
|
+
//this.#LogDebugMessage(chalk.green(`[${safeConnectionString}]: pool release`));
|
|
103
|
+
this.#UpdateInstruments();
|
|
104
|
+
});
|
|
105
|
+
pool.on("remove", () => {
|
|
106
|
+
//this.#LogDebugMessage(chalk.green(`[${safeConnectionString}]: pool remove`));
|
|
107
|
+
this.#UpdateInstruments();
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
EndPool = async (poolItem) => {
|
|
111
|
+
this.#LogDebugMessage(chalk.cyan(`Ending database for process PID: ${process.pid}`));
|
|
112
|
+
if (poolItem) {
|
|
113
|
+
this.#LogDebugMessage(chalk.cyan(`ending pool with connection string: [${poolItem.safeConnectionString}]`));
|
|
114
|
+
this.#LogDebugMessage(chalk.cyan(`pool details (before end), Total: [${poolItem.pool.totalCount}], Idle: [${poolItem.pool.idleCount}], Waiting: [${poolItem.pool.waitingCount}]`));
|
|
115
|
+
await poolItem.pool.end();
|
|
116
|
+
this.#LogDebugMessage(chalk.cyan(`pool details (after end), Total: [${poolItem.pool.totalCount}], Idle: [${poolItem.pool.idleCount}], Waiting: [${poolItem.pool.waitingCount}]`));
|
|
117
|
+
this.#LogDebugMessage(chalk.green(`Database pool ended for PID: ${process.pid}`));
|
|
118
|
+
poolItem.pool.removeAllListeners();
|
|
119
|
+
this.#LogDebugMessage(chalk.green(`Removed all listeners: ${process.pid}`));
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
this.#LogDebugMessage(chalk.yellow(`Database pool was not defined - not ended for PID: ${process.pid}`));
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
Stop = async () => {
|
|
126
|
+
this.#LogDebugMessage(chalk.cyan(`Ending database for process PID: ${process.pid}`));
|
|
127
|
+
for (const [, pool] of Object.entries(this.#pools)) {
|
|
128
|
+
await this.EndPool(pool);
|
|
129
|
+
}
|
|
130
|
+
this.#DetachInstruments();
|
|
131
|
+
};
|
|
132
|
+
#GetPoolKey(index) {
|
|
133
|
+
return `${this.#keyPrefix}${index}`;
|
|
134
|
+
}
|
|
135
|
+
async GetReadWritePoolClient() {
|
|
136
|
+
return this.#pools[this.#GetPoolKey(0)].pool.connect();
|
|
137
|
+
}
|
|
138
|
+
async GetReadOnlyPoolClient() {
|
|
139
|
+
const poolLength = Object.keys(this.#pools).length;
|
|
140
|
+
if (poolLength > 1) {
|
|
141
|
+
this.currentReadOnlyPoolIndex++;
|
|
142
|
+
if (this.currentReadOnlyPoolIndex >= poolLength) {
|
|
143
|
+
this.currentReadOnlyPoolIndex = 1;
|
|
144
|
+
}
|
|
145
|
+
return this.#pools[this.#GetPoolKey(this.currentReadOnlyPoolIndex)].pool.connect();
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
return this.GetReadWritePoolClient();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
#UpdateInstruments = () => {
|
|
152
|
+
const data = {
|
|
153
|
+
totalCount: 0,
|
|
154
|
+
idleCount: 0,
|
|
155
|
+
waitingCount: 0,
|
|
156
|
+
};
|
|
157
|
+
for (const [, poolItem] of Object.entries(this.#pools)) {
|
|
158
|
+
data.totalCount += poolItem.pool.totalCount;
|
|
159
|
+
data.idleCount += poolItem.pool.idleCount;
|
|
160
|
+
data.waitingCount += poolItem.pool.waitingCount;
|
|
161
|
+
}
|
|
162
|
+
this.emit(IDBAccessLayerEvents.UpdateInstruments, data);
|
|
163
|
+
this.#UpdatePGPoolManagerInstrument(data);
|
|
164
|
+
};
|
|
165
|
+
#UpdatePGPoolManagerInstrument = (data) => {
|
|
166
|
+
this.metrics.UpdateInstrument(Gauge.CONNECTION_POOL_TOTAL_GAUGE, {
|
|
167
|
+
val: data.totalCount,
|
|
168
|
+
});
|
|
169
|
+
this.metrics.UpdateInstrument(Gauge.CONNECTION_POOL_IDLE_GAUGE, {
|
|
170
|
+
val: data.idleCount,
|
|
171
|
+
});
|
|
172
|
+
this.metrics.UpdateInstrument(Gauge.CONNECTION_POOL_WAITING_GAUGE, {
|
|
173
|
+
val: data.waitingCount,
|
|
174
|
+
});
|
|
175
|
+
};
|
|
176
|
+
#AttachInstruments = (interval = 1000) => {
|
|
177
|
+
this.#observer = setInterval(() => {
|
|
178
|
+
this.#UpdateInstruments();
|
|
179
|
+
}, interval).unref();
|
|
180
|
+
};
|
|
181
|
+
#DetachInstruments = () => {
|
|
182
|
+
clearInterval(this.#observer);
|
|
183
|
+
this.#observer = null;
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=pgpoolmanager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pgpoolmanager.js","sourceRoot":"","sources":["../../src/plugins/pgpoolmanager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverUtils.js","sourceRoot":"","sources":["../../../src/
|
|
1
|
+
{"version":3,"file":"serverUtils.js","sourceRoot":"","sources":["../../../src/plugins/servertypes/serverUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAIzB,MAAM,CAAC,MAAM,aAAa,GAAG,CACzB,kBAA2B,EAC3B,0BAAmC,EACzB,EAAE;IACZ,IAAI,kBAAkB,IAAI,0BAA0B,EAAE,CAAC;QACnD,OAAO;YACH,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,kBAAkB,CAAC;YACxC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,0BAA0B,CAAC;SACpD,CAAC;IACN,CAAC;IACD,MAAM,IAAI,KAAK,CACX,gGAAgG,CACnG,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -5,25 +5,30 @@ import cookieParser from "cookie-parser";
|
|
|
5
5
|
import { RequestLoggerMiddleware, RequestLoggerMiddlewareEventName, } from "@nsshunt/stsinstrumentmanagerclient";
|
|
6
6
|
import { goptions } from "@nsshunt/stsconfig";
|
|
7
7
|
import { GetTLSOptions } from "./serverUtils.js";
|
|
8
|
-
import { PrometheusManager } from "./../prometheusmanager.js";
|
|
9
|
-
import { STSLoggerToken, PublishInstrumentControllerToken, } from "./../../commonTypes.js";
|
|
10
8
|
import { Gauge, } from "@nsshunt/stsobservability";
|
|
11
9
|
import { ServerNetworkMiddleware, ServerNetworkMiddlewareEventName, } from "./../../middleware/serverNetworkMiddleware.js";
|
|
12
10
|
import chalk from "chalk";
|
|
13
11
|
import { inject } from "@nsshunt/stsutils";
|
|
14
12
|
import { createServer as createServerHttps, } from "node:https";
|
|
15
13
|
import { createServer as createServerHttp, } from "node:http";
|
|
14
|
+
import { STSLoggerPluginToken } from "./../stsloggerplugin.js";
|
|
15
|
+
import { STSInstrumentControllerPluginToken } from "./../stsinstrumentmanagerplugin.js";
|
|
16
16
|
export class STSExpressServer {
|
|
17
17
|
#options;
|
|
18
18
|
#ERROR_THRESHOLD_TIMEOUT = 1000;
|
|
19
19
|
httpServer;
|
|
20
20
|
#attributes = {};
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
#routes = express.Router();
|
|
22
|
+
draining = false;
|
|
23
|
+
publishInstrumentController = inject(STSInstrumentControllerPluginToken);
|
|
24
|
+
logger = inject(STSLoggerPluginToken);
|
|
23
25
|
constructor(options) {
|
|
24
26
|
this.#options = options;
|
|
25
27
|
this.#SetupHTTPServerFromExpressServer(this.#SetupExpressServer());
|
|
26
28
|
}
|
|
29
|
+
IsDraining = () => {
|
|
30
|
+
return this.draining;
|
|
31
|
+
};
|
|
27
32
|
#SetupRequestLoggerMiddleware = () => {
|
|
28
33
|
// Standard RequestLoggerMiddleware for all STS services
|
|
29
34
|
const requestLoggerMiddleware = new RequestLoggerMiddleware({
|
|
@@ -106,17 +111,11 @@ export class STSExpressServer {
|
|
|
106
111
|
}))
|
|
107
112
|
.use(express.json({ limit: goptions.maxPayloadSize }))
|
|
108
113
|
.use(this.#SetupRequestLoggerMiddleware().Middleware)
|
|
109
|
-
.use(this.#SetupNetworkMiddleware().Middleware)
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}
|
|
115
|
-
if (this.#options.expressServerRouteFactory) {
|
|
116
|
-
this.#options.expressServerRouteFactory(app);
|
|
117
|
-
}
|
|
118
|
-
// Express error handling fall-back
|
|
119
|
-
app.use(function (err, req, res, next) {
|
|
114
|
+
.use(this.#SetupNetworkMiddleware().Middleware)
|
|
115
|
+
// Everything dynamically registered goes here
|
|
116
|
+
.use(this.#routes)
|
|
117
|
+
// Express error handling fall-back
|
|
118
|
+
.use(function (err, _req, res, next) {
|
|
120
119
|
if (err) {
|
|
121
120
|
res.status(err.status).send(err);
|
|
122
121
|
}
|
|
@@ -126,6 +125,9 @@ export class STSExpressServer {
|
|
|
126
125
|
});
|
|
127
126
|
return app;
|
|
128
127
|
};
|
|
128
|
+
Use(router) {
|
|
129
|
+
this.#routes.use(router);
|
|
130
|
+
}
|
|
129
131
|
#SetupHTTPServerFromExpressServer = (app) => {
|
|
130
132
|
if (this.#options.useTls) {
|
|
131
133
|
this.httpServer = createServerHttps(GetTLSOptions(this.#options.httpsServerKeyPath, this.#options.httpsServerCertificatePath), app);
|
|
@@ -133,9 +135,11 @@ export class STSExpressServer {
|
|
|
133
135
|
else {
|
|
134
136
|
this.httpServer = createServerHttp(app);
|
|
135
137
|
}
|
|
138
|
+
/*
|
|
136
139
|
if (this.#options.prometheusSupport === true) {
|
|
137
140
|
new PrometheusManager().SetupPrometheusForMaster();
|
|
138
141
|
}
|
|
142
|
+
*/
|
|
139
143
|
// https://stackoverflow.com/questions/21342828/node-express-unix-domain-socket-permissions
|
|
140
144
|
//@@httpServer.listen('/tmp/stsrest01.sock').on('listening', () =>
|
|
141
145
|
//@@httpServer.listen('/var/run/sts/stsrest01.sock').on('listening', () =>
|
|
@@ -145,11 +149,32 @@ export class STSExpressServer {
|
|
|
145
149
|
});
|
|
146
150
|
};
|
|
147
151
|
Stop = async () => {
|
|
148
|
-
if (this.httpServer) {
|
|
149
|
-
|
|
150
|
-
this.logger.info(`${logPrefix} Closing httpServer.`);
|
|
151
|
-
this.httpServer.close();
|
|
152
|
+
if (!this.httpServer) {
|
|
153
|
+
return;
|
|
152
154
|
}
|
|
155
|
+
this.draining = true;
|
|
156
|
+
const closePromise = new Promise((resolve) => {
|
|
157
|
+
if (this.httpServer) {
|
|
158
|
+
this.httpServer.close(() => {
|
|
159
|
+
resolve();
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
resolve();
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
const timeoutPromise = new Promise((resolve) => {
|
|
167
|
+
setTimeout(() => {
|
|
168
|
+
if (this.httpServer) {
|
|
169
|
+
this.httpServer.closeAllConnections();
|
|
170
|
+
resolve();
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
resolve();
|
|
174
|
+
}
|
|
175
|
+
}, 5000).unref();
|
|
176
|
+
});
|
|
177
|
+
await Promise.race([closePromise, timeoutPromise]);
|
|
153
178
|
};
|
|
154
179
|
GetAttributes() {
|
|
155
180
|
return this.#attributes;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stsexpressserver.js","sourceRoot":"","sources":["../../../src/plugins/servertypes/stsexpressserver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
|
-
import { STSLoggerToken, } from "./../../commonTypes.js";
|
|
3
1
|
import jayson from "jayson";
|
|
4
2
|
import { inject } from "@nsshunt/stsutils";
|
|
5
3
|
import { GetTLSOptions } from "./serverUtils.js";
|
|
4
|
+
import { STSLoggerPluginToken } from "./../stsloggerplugin.js";
|
|
6
5
|
export class STSJsonRPCServer {
|
|
7
6
|
options;
|
|
8
|
-
logger = inject(
|
|
7
|
+
logger = inject(STSLoggerPluginToken);
|
|
9
8
|
httpServer;
|
|
10
9
|
#attributes = {};
|
|
11
10
|
constructor(options) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stsjsonrpcserver.js","sourceRoot":"","sources":["../../../src/plugins/servertypes/stsjsonrpcserver.ts"],"names":[],"mappings":"AASA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,OAAO,gBAAgB;IACR,OAAO,CAA2B;IAClC,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC/C,UAAU,CAAoB;IACtC,WAAW,GAAwB,EAAE,CAAC;IAEtC,YAAY,OAAiC;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAED,mBAAmB,GAAG,GAAS,EAAE;QAC7B,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACzC,mDAAmD;QACnD,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,IAAS,EAAE,QAAa;YACzD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,GAAG,CAC9B,aAAa,CACT,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAC/B,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAC1C,CACJ,CAAC;QACD,IAAI,CAAC,UAAyB,CAAC,EAAE,CAC9B,kBAAkB,EAClB,IAAI,CAAC,eAAe,CACvB,CAAC;QACF,IAAI,CAAC,UAAU;aACV,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE;YAC3D,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,yCAAyC;gBACrC,IAAI,CAAC,OAAO,CAAC,UAAU;gBACvB,GAAG,CACV,CAAC;QACN,CAAC,CAAC;aACD,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,wBAAwB,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CACpG,CAAC;QACN,CAAC,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,eAAe,GAAG,CAAC,MAAkB,EAAQ,EAAE;QAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,aAAa;YACT,MAAM,CAAC,aAAa;YACpB,GAAG;YACH,MAAM,CAAC,UAAU;YACjB,GAAG;YACH,OAAO,CAAC,GAAG,CAClB,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAS,EAAE,EAAE;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,UAAU;gBACN,MAAM,CAAC,aAAa;gBACpB,GAAG;gBACH,MAAM,CAAC,UAAU;gBACjB,GAAG;gBACH,OAAO,CAAC,GAAG,CAClB,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAS,EAAE,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,IAAI,GAAG,KAAK,IAAmB,EAAE;QAC7B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,2BAA2B,OAAO,CAAC,GAAG,GAAG,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,sBAAsB,CAAC,CAAC;YACrD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC,CAAC;IAEF,aAAa;QACT,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,aAAa;QACT,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;CACJ"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { STSExpressServer
|
|
2
|
-
import { STSJsonRPCServer
|
|
1
|
+
import { STSExpressServer } from "./stsexpressserver.js";
|
|
2
|
+
import { STSJsonRPCServer } from "./stsjsonrpcserver.js";
|
|
3
3
|
import { STSRPCRawServer } from "./ststcprawserver.js";
|
|
4
4
|
export const CreateSTSServer = ({ serverType, options, }) => {
|
|
5
5
|
switch (serverType) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stsserverfactory.js","sourceRoot":"","sources":["../../../src/plugins/servertypes/stsserverfactory.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAkBvD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC5B,UAAU,EACV,OAAO,GACc,EAAc,EAAE;IACrC,QAAQ,UAAU,EAAE,CAAC;QACjB,KAAK,SAAS,CAAC;QACf,KAAK,aAAa;YACd,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEzC,KAAK,YAAY;YACb,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;QAExC,KAAK,cAAc;YACf,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
2
|
import chalk from "chalk";
|
|
3
|
-
import { STSLoggerToken, } from "./../../commonTypes.js";
|
|
4
3
|
import tls from "node:tls";
|
|
5
4
|
import { inject } from "@nsshunt/stsutils";
|
|
6
5
|
import { GetTLSOptions } from "./serverUtils.js";
|
|
6
|
+
import { STSLoggerPluginToken } from "./../stsloggerplugin.js";
|
|
7
7
|
export class STSRPCRawServer {
|
|
8
8
|
options;
|
|
9
|
-
logger = inject(
|
|
9
|
+
logger = inject(STSLoggerPluginToken);
|
|
10
10
|
httpServer;
|
|
11
11
|
sockets = [];
|
|
12
12
|
#attributes = {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ststcprawserver.js","sourceRoot":"","sources":["../../../src/plugins/servertypes/ststcprawserver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
|
+
import { InjectionToken } from "@nsshunt/stsutils";
|
|
3
|
+
import { inject } from "@nsshunt/stsutils";
|
|
4
|
+
import { STSLoggerPluginToken } from "./stsloggerplugin.js";
|
|
5
|
+
import { ClusterWorkerManager, } from "./clusterworkermanager.js";
|
|
6
|
+
import { STSConfigPluginToken } from "./stsconfigplugin.js";
|
|
7
|
+
import os from "node:os";
|
|
8
|
+
export const STSClusterWorkerManagerPluginToken = new InjectionToken("__STSPlugin__ClusterWorkerManager");
|
|
9
|
+
// STSOptions
|
|
10
|
+
export class STSClusterWorkerManagerPlugin {
|
|
11
|
+
logger = inject(STSLoggerPluginToken);
|
|
12
|
+
config = inject(STSConfigPluginToken);
|
|
13
|
+
clusterWorkerManager;
|
|
14
|
+
install = (injector, options) => {
|
|
15
|
+
if (!options) {
|
|
16
|
+
throw new Error("STSClusterWorkerManagerPlugin requires options");
|
|
17
|
+
}
|
|
18
|
+
this.clusterWorkerManager = new ClusterWorkerManager(options);
|
|
19
|
+
injector.register({
|
|
20
|
+
provide: STSClusterWorkerManagerPluginToken,
|
|
21
|
+
useValue: this.clusterWorkerManager,
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
_GetNumCPUs = async () => {
|
|
25
|
+
const numOSCpus = os.availableParallelism();
|
|
26
|
+
let numCPUs = 2;
|
|
27
|
+
if (this.config.useCPUs > 0) {
|
|
28
|
+
if (this.config.useCPUs >= 1) {
|
|
29
|
+
numCPUs = this.config.useCPUs;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
numCPUs = Math.round(numOSCpus * this.config.useCPUs);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
numCPUs = numOSCpus;
|
|
37
|
+
}
|
|
38
|
+
return numCPUs;
|
|
39
|
+
};
|
|
40
|
+
Start = async () => {
|
|
41
|
+
this.logger.info(`${process.pid} STSClusterWorkerManagerPlugin: Start() Starting ...`);
|
|
42
|
+
const numCPUs = await this._GetNumCPUs();
|
|
43
|
+
for (let i = 0; i < numCPUs; i++) {
|
|
44
|
+
this.clusterWorkerManager?.SpawnWorker();
|
|
45
|
+
}
|
|
46
|
+
this.logger.info(`${process.pid} STSClusterWorkerManagerPlugin: Start() Started`);
|
|
47
|
+
};
|
|
48
|
+
Stop = async () => {
|
|
49
|
+
this.logger.info(`${process.pid} STSClusterWorkerManagerPlugin: Stop() Stopping ...`);
|
|
50
|
+
this.clusterWorkerManager?.KillWorkers("SIGTERM", false);
|
|
51
|
+
this.logger.info(`${process.pid} STSClusterWorkerManagerPlugin: Stop() Stopped`);
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=stsclusterworkermanagerplugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stsclusterworkermanagerplugin.js","sourceRoot":"","sources":["../../src/plugins/stsclusterworkermanagerplugin.ts"],"names":[],"mappings":"AAAA,wFAAwF,CAAC,UAAU;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAY,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EACH,oBAAoB,GAEvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,CAAC,MAAM,kCAAkC,GAC3C,IAAI,cAAc,CACd,mCAAmC,CACtC,CAAC;AAEN,aAAa;AACb,MAAM,OAAO,6BAA6B;IACrB,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACtC,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAE/C,oBAAoB,CAAwB;IAEpD,OAAO,GAAG,CACN,QAAkB,EAClB,OAAsC,EAClC,EAAE;QACN,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAE9D,QAAQ,CAAC,QAAQ,CAAC;YACd,OAAO,EAAE,kCAAkC;YAC3C,QAAQ,EAAE,IAAI,CAAC,oBAAoB;SACtC,CAAC,CAAC;IACP,CAAC,CAAC;IAEM,WAAW,GAAG,KAAK,IAAqB,EAAE;QAC9C,MAAM,SAAS,GAAG,EAAE,CAAC,oBAAoB,EAAE,CAAC;QAE5C,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;gBAC3B,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACJ,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1D,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,SAAS,CAAC;QACxB,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC,CAAC;IAEF,KAAK,GAAG,KAAK,IAAI,EAAE;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,OAAO,CAAC,GAAG,sDAAsD,CACvE,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,IAAI,CAAC,oBAAoB,EAAE,WAAW,EAAE,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,OAAO,CAAC,GAAG,iDAAiD,CAClE,CAAC;IACN,CAAC,CAAC;IAEF,IAAI,GAAG,KAAK,IAAI,EAAE;QACd,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,OAAO,CAAC,GAAG,qDAAqD,CACtE,CAAC;QAEF,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAEzD,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,OAAO,CAAC,GAAG,gDAAgD,CACjE,CAAC;IACN,CAAC,CAAC;CACL"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
|
+
import { InjectionToken } from "@nsshunt/stsutils";
|
|
3
|
+
import { goptions } from "@nsshunt/stsconfig";
|
|
4
|
+
export const STSConfigPluginToken = new InjectionToken("__STSPlugin__Config");
|
|
5
|
+
// STSOptions
|
|
6
|
+
export class STSConfigPlugin {
|
|
7
|
+
install = (injector, options) => {
|
|
8
|
+
injector.register({
|
|
9
|
+
provide: STSConfigPluginToken,
|
|
10
|
+
useValue: goptions,
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
Start = async () => { };
|
|
14
|
+
Stop = async () => { };
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=stsconfigplugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stsconfigplugin.js","sourceRoot":"","sources":["../../src/plugins/stsconfigplugin.ts"],"names":[],"mappings":"AAAA,wFAAwF,CAAC,UAAU;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,OAAO,EAAc,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,cAAc,CAClD,qBAAqB,CACxB,CAAC;AAEF,aAAa;AACb,MAAM,OAAO,eAAe;IACxB,OAAO,GAAG,CAAC,QAAkB,EAAE,OAA6B,EAAQ,EAAE;QAClE,QAAQ,CAAC,QAAQ,CAAC;YACd,OAAO,EAAE,oBAAoB;YAC7B,QAAQ,EAAE,QAAQ;SACrB,CAAC,CAAC;IACP,CAAC,CAAC;IACF,KAAK,GAAG,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;IACvB,IAAI,GAAG,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;CACzB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
|
+
/* eslint @typescript-eslint/no-empty-object-type: 0 */
|
|
3
|
+
import { InjectionToken } from "@nsshunt/stsutils";
|
|
4
|
+
import { inject } from "@nsshunt/stsutils";
|
|
5
|
+
import { STSLoggerPluginToken } from "./stsloggerplugin.js";
|
|
6
|
+
import { STSServerPluginToken } from "./stsserverplugin.js";
|
|
7
|
+
import express from "express";
|
|
8
|
+
export const STSExpressControllerPluginToken = new InjectionToken("__STSPlugin__ExpressController");
|
|
9
|
+
// STSOptions
|
|
10
|
+
export class STSExpressControllerPlugin {
|
|
11
|
+
logger = inject(STSLoggerPluginToken);
|
|
12
|
+
server = inject(STSServerPluginToken);
|
|
13
|
+
expressController = {};
|
|
14
|
+
#RunInInjectionContext = (injector, handler) => {
|
|
15
|
+
return (req, res, next) => {
|
|
16
|
+
return injector.runInContext(() => handler(req, res, next));
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
install = (injector, options) => {
|
|
20
|
+
if (!options) {
|
|
21
|
+
throw new Error("STSExpressControllerPlugin requires options");
|
|
22
|
+
}
|
|
23
|
+
if (!(this.server.GetServerType() === "EXPRESS" ||
|
|
24
|
+
this.server.GetServerType() === "EXPRESS_TLS")) {
|
|
25
|
+
throw new Error(`STSExpressControllerPlugin: Server type: [${this.server.GetServerType()}] must be an express server`);
|
|
26
|
+
}
|
|
27
|
+
const router = express.Router();
|
|
28
|
+
for (const route of options.routes) {
|
|
29
|
+
const handlers = route.handlers.map((handler) => this.#RunInInjectionContext(injector, handler));
|
|
30
|
+
router[route.method](route.mountPath, ...handlers);
|
|
31
|
+
}
|
|
32
|
+
this.server.Use(router);
|
|
33
|
+
injector.register({
|
|
34
|
+
provide: STSExpressControllerPluginToken,
|
|
35
|
+
useValue: this.expressController,
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
Start = async () => {
|
|
39
|
+
this.logger.info(`${process.pid} STSExpressControllerPlugin: Start() Starting ...`);
|
|
40
|
+
this.logger.info(`${process.pid} STSExpressControllerPlugin: Start() Started`);
|
|
41
|
+
};
|
|
42
|
+
Stop = async () => {
|
|
43
|
+
this.logger.info(`${process.pid} STSServerPlugin: Stop() Stopping ...`);
|
|
44
|
+
this.logger.info(`${process.pid} STSServerPlugin: Stop() Stopped`);
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=stsexpresscontrollerplugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stsexpresscontrollerplugin.js","sourceRoot":"","sources":["../../src/plugins/stsexpresscontrollerplugin.ts"],"names":[],"mappings":"AAAA,wFAAwF,CAAC,UAAU;AACnG,uDAAuD;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAY,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,OAA2B,MAAM,SAAS,CAAC;AAElD,MAAM,CAAC,MAAM,+BAA+B,GACxC,IAAI,cAAc,CAAwB,gCAAgC,CAAC,CAAC;AAYhF,aAAa;AACb,MAAM,OAAO,0BAA0B;IAClB,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACtC,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAEtC,iBAAiB,GAA0B,EAAE,CAAC;IAE/D,sBAAsB,GAAG,CACrB,QAAkB,EAClB,OAAuB,EACT,EAAE;QAChB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACtB,OAAO,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,OAAO,GAAG,CACN,QAAkB,EAClB,OAA4C,EACxC,EAAE;QACN,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACnE,CAAC;QAED,IACI,CAAC,CACG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,SAAS;YACzC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,aAAa,CAChD,EACH,CAAC;YACC,MAAM,IAAI,KAAK,CACX,6CAA6C,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,6BAA6B,CACxG,CAAC;QACN,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAEhC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5C,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,CACjD,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,CAAC;QACvD,CAAC;QACA,IAAI,CAAC,MAA2B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE9C,QAAQ,CAAC,QAAQ,CAAC;YACd,OAAO,EAAE,+BAA+B;YACxC,QAAQ,EAAE,IAAI,CAAC,iBAAiB;SACnC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,KAAK,GAAG,KAAK,IAAI,EAAE;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,OAAO,CAAC,GAAG,mDAAmD,CACpE,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,OAAO,CAAC,GAAG,8CAA8C,CAC/D,CAAC;IACN,CAAC,CAAC;IAEF,IAAI,GAAG,KAAK,IAAI,EAAE;QACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,uCAAuC,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,kCAAkC,CAAC,CAAC;IACvE,CAAC,CAAC;CACL"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { InjectionToken } from "@nsshunt/stsutils";
|
|
2
|
+
import { createAgentManager, inject } from "@nsshunt/stsutils";
|
|
3
|
+
import http from "node:http";
|
|
4
|
+
import https from "node:https";
|
|
5
|
+
import { STSConfigPluginToken } from "./stsconfigplugin.js";
|
|
6
|
+
import { PublishInstrumentController, TransportType, } from "@nsshunt/stsinstrumentmanagerclient";
|
|
7
|
+
import { STSLoggerPluginToken } from "./stsloggerplugin.js";
|
|
8
|
+
export const STSInstrumentControllerPluginToken = new InjectionToken("__STSPlugin__InstrumentController");
|
|
9
|
+
export class STSInstrumentControllerPlugin {
|
|
10
|
+
config = inject(STSConfigPluginToken);
|
|
11
|
+
logger = inject(STSLoggerPluginToken);
|
|
12
|
+
options;
|
|
13
|
+
publishInstrumentController;
|
|
14
|
+
agentManager;
|
|
15
|
+
// defaults
|
|
16
|
+
_INSTRUMENTATION_OBSERVATION_INTERVAL = 1000;
|
|
17
|
+
_INSTRUMENTATION_TIME_WINDOW = 600;
|
|
18
|
+
_PUBLISH_POST_FAIL_INTERVAL = 5000;
|
|
19
|
+
_PUBLISH_INTERVAL = 1000;
|
|
20
|
+
_AUTO_START = true;
|
|
21
|
+
install = (injector, options) => {
|
|
22
|
+
if (!options) {
|
|
23
|
+
throw new Error("STSLoggerPlugin requires options");
|
|
24
|
+
}
|
|
25
|
+
this.options = options;
|
|
26
|
+
this.agentManager = this.#CreateAgentManager();
|
|
27
|
+
this.publishInstrumentController =
|
|
28
|
+
this.#CreatePublishInstrumentController();
|
|
29
|
+
injector.register({
|
|
30
|
+
provide: STSInstrumentControllerPluginToken,
|
|
31
|
+
useValue: this.publishInstrumentController,
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
Start = async () => {
|
|
35
|
+
console.log(`${process.pid} STSMetricsPlugin: Start()`);
|
|
36
|
+
};
|
|
37
|
+
Stop = async () => {
|
|
38
|
+
this.logger.info(`${process.pid} STSMetricsPlugin: Stop() Stopping ...`);
|
|
39
|
+
//@@ may not be required
|
|
40
|
+
this.publishInstrumentController?.StopInstruments();
|
|
41
|
+
await this.publishInstrumentController?.EndPublish();
|
|
42
|
+
//@@ this close() should NOT be here - needs to handle better ...
|
|
43
|
+
//@@(this.options!.logger as winston.Logger).close();
|
|
44
|
+
this.agentManager.Terminate();
|
|
45
|
+
this.logger.info(`${process.pid} STSMetricsPlugin: Stop() Stopped`);
|
|
46
|
+
};
|
|
47
|
+
#CreateAgentManager = () => {
|
|
48
|
+
return createAgentManager({
|
|
49
|
+
agentOptions: {
|
|
50
|
+
keepAlive: false, // Use basic defaults. This agent will not use keep-alive.
|
|
51
|
+
maxFreeSockets: this.config.maxFreeSockets,
|
|
52
|
+
maxSockets: this.config.maxSockets,
|
|
53
|
+
maxTotalSockets: this.config.maxTotalSockets,
|
|
54
|
+
timeout: this.config.timeout,
|
|
55
|
+
rejectUnauthorized: this.config.isProduction, // Allows self-signed certificates if non-production
|
|
56
|
+
},
|
|
57
|
+
httpAgentFactory(options) {
|
|
58
|
+
return new http.Agent(options);
|
|
59
|
+
},
|
|
60
|
+
httpsAgentFactory(options) {
|
|
61
|
+
return new https.Agent(options);
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
#CreatePublishInstrumentController = () => {
|
|
66
|
+
if (!this.options.serviceProcessContext) {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
let publishTransportOptions = null;
|
|
70
|
+
if (this.config.observabilityPublishMode.localeCompare("PROXY") === 0) {
|
|
71
|
+
publishTransportOptions = {
|
|
72
|
+
transportType: TransportType.RESTAPI,
|
|
73
|
+
url: `${this.config.imendpoint}:${this.config.import}${this.config.imapiroot}/publishmessage`,
|
|
74
|
+
agentManager: this.agentManager,
|
|
75
|
+
// Use this for sockets: socketPath: '/var/run/sts/stsrest01.sock'
|
|
76
|
+
logger: this.options.logger, // logger, // publisherLogger,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// Currently, now other types are supported
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const httpServer = this.config.STSServerType.localeCompare("EXPRESS") === 0 ||
|
|
84
|
+
this.config.STSServerType.localeCompare("EXPRESS_TLS") === 0;
|
|
85
|
+
const instrumentControllerOptions = {
|
|
86
|
+
processContext: this.options.serviceProcessContext,
|
|
87
|
+
consoleLogging: this.options.consoleLogging,
|
|
88
|
+
instrumentLogging: this.options.instrumentLogging,
|
|
89
|
+
httpServer,
|
|
90
|
+
instrumentationObservationInterval: this._INSTRUMENTATION_OBSERVATION_INTERVAL,
|
|
91
|
+
instrumentationTimeWindow: this._INSTRUMENTATION_TIME_WINDOW,
|
|
92
|
+
logger: this.options.logger, // logger, //publisherLogger,
|
|
93
|
+
publishInterval: this._PUBLISH_INTERVAL,
|
|
94
|
+
publishPostFailInterval: this._PUBLISH_POST_FAIL_INTERVAL,
|
|
95
|
+
instrumentDefinitions: this.options.instrumentDefinitions, // GetInstruments("service"),
|
|
96
|
+
publishTransportBaseOptions: publishTransportOptions,
|
|
97
|
+
autoStart: this._AUTO_START,
|
|
98
|
+
};
|
|
99
|
+
return new PublishInstrumentController(instrumentControllerOptions);
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=stsinstrumentmanagerplugin.js.map
|