@nsshunt/stsappframework 3.2.1 → 3.2.3

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.
Files changed (97) hide show
  1. package/dist/commonTypes.js +69 -0
  2. package/dist/commonTypes.js.map +1 -0
  3. package/dist/controller/stscontrollerbase.js +14 -0
  4. package/dist/controller/stscontrollerbase.js.map +1 -0
  5. package/dist/controller/stslatencycontroller.js +28 -0
  6. package/dist/controller/stslatencycontroller.js.map +1 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/logger/stsTransportLoggerWinston.js +22 -0
  9. package/dist/logger/stsTransportLoggerWinston.js.map +1 -0
  10. package/dist/logger/stsTransportWinston.js +43 -0
  11. package/dist/logger/stsTransportWinston.js.map +1 -0
  12. package/{src/middleware/serverNetworkMiddleware.ts → dist/middleware/serverNetworkMiddleware.js} +80 -124
  13. package/dist/middleware/serverNetworkMiddleware.js.map +1 -0
  14. package/dist/network.js +38 -0
  15. package/dist/network.js.map +1 -0
  16. package/dist/process/masterprocessbase.js +558 -0
  17. package/dist/process/masterprocessbase.js.map +1 -0
  18. package/{src/process/processbase.ts → dist/process/processbase.js} +150 -222
  19. package/dist/process/processbase.js.map +1 -0
  20. package/{src/process/serverprocessbase.ts → dist/process/serverprocessbase.js} +158 -212
  21. package/dist/process/serverprocessbase.js.map +1 -0
  22. package/dist/process/singleprocessbase.js +55 -0
  23. package/dist/process/singleprocessbase.js.map +1 -0
  24. package/{src/process/workerprocessbase.ts → dist/process/workerprocessbase.js} +93 -107
  25. package/dist/process/workerprocessbase.js.map +1 -0
  26. package/{src/publishertransports/publishTransportUtils.ts → dist/publishertransports/publishTransportUtils.js} +18 -24
  27. package/dist/publishertransports/publishTransportUtils.js.map +1 -0
  28. package/dist/route/stslatencyroute.js +15 -0
  29. package/dist/route/stslatencyroute.js.map +1 -0
  30. package/dist/route/stsrouterbase.js +21 -0
  31. package/dist/route/stsrouterbase.js.map +1 -0
  32. package/dist/stsexpressserver.js +115 -0
  33. package/dist/stsexpressserver.js.map +1 -0
  34. package/dist/validation/errors.js +10 -0
  35. package/dist/validation/errors.js.map +1 -0
  36. package/dist/vitesttesting/appConfig.js +93 -0
  37. package/dist/vitesttesting/appConfig.js.map +1 -0
  38. package/dist/vitesttesting/appSingleWSS.js +122 -0
  39. package/dist/vitesttesting/appSingleWSS.js.map +1 -0
  40. package/dist/vitesttesting/server.js +15 -0
  41. package/dist/vitesttesting/server.js.map +1 -0
  42. package/dist/vitesttesting/singleservertest.test.js +286 -0
  43. package/dist/vitesttesting/singleservertest.test.js.map +1 -0
  44. package/dist/vitesttesting/wsevents.js +3 -0
  45. package/dist/vitesttesting/wsevents.js.map +1 -0
  46. package/package.json +8 -3
  47. package/.github/dependabot.yml +0 -13
  48. package/.github/workflows/npm-publish.yml +0 -47
  49. package/.gitignore copy +0 -108
  50. package/build.sh +0 -37
  51. package/esbuild.config.js +0 -81
  52. package/eslint.config.mjs +0 -55
  53. package/jest/setEnvVars.js +0 -19
  54. package/keys/server.cert +0 -21
  55. package/keys/server.key +0 -28
  56. package/local-redis-stack.conf +0 -2
  57. package/run-grpc-client.sh +0 -2
  58. package/run-grpc-server.sh +0 -2
  59. package/run1.sh +0 -20
  60. package/run2.sh +0 -20
  61. package/run3.sh +0 -20
  62. package/runc1.sh +0 -19
  63. package/runc2.sh +0 -19
  64. package/runkafka.sh +0 -19
  65. package/runkafkaconsume01.sh +0 -21
  66. package/runkafkaconsume02.sh +0 -21
  67. package/runpromise.sh +0 -5
  68. package/runredis.sh +0 -5
  69. package/runredis1.sh +0 -4
  70. package/runredis2.sh +0 -24
  71. package/runredis3.sh +0 -4
  72. package/runtest1.sh +0 -19
  73. package/runtest2.sh +0 -19
  74. package/runtest_ipc_legacy.sh +0 -19
  75. package/runtest_ipcex.sh +0 -19
  76. package/runtest_redis.sh +0 -19
  77. package/runtest_ww.sh +0 -19
  78. package/src/commonTypes.ts +0 -374
  79. package/src/controller/stscontrollerbase.ts +0 -14
  80. package/src/controller/stslatencycontroller.ts +0 -26
  81. package/src/index.ts +0 -13
  82. package/src/logger/stsTransportLoggerWinston.ts +0 -24
  83. package/src/logger/stsTransportWinston.ts +0 -48
  84. package/src/network.ts +0 -36
  85. package/src/process/masterprocessbase.ts +0 -674
  86. package/src/process/singleprocessbase.ts +0 -63
  87. package/src/route/stslatencyroute.ts +0 -15
  88. package/src/route/stsrouterbase.ts +0 -21
  89. package/src/stsexpressserver.ts +0 -137
  90. package/src/validation/errors.ts +0 -6
  91. package/src/vitesttesting/appConfig.ts +0 -111
  92. package/src/vitesttesting/appSingleWSS.ts +0 -142
  93. package/src/vitesttesting/server.ts +0 -17
  94. package/src/vitesttesting/singleservertest.test.ts +0 -352
  95. package/src/vitesttesting/wsevents.ts +0 -44
  96. package/tsconfig.json +0 -42
  97. package/vite.config.ts +0 -19
@@ -1,123 +1,98 @@
1
- /* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
2
- import pidusage from 'pidusage'
3
- import { memoryUsage } from 'process'
4
- import cluster from 'node:cluster'
5
- import si from 'systeminformation' // https://systeminformation.io/
6
- import { GetFirstNetworkInterface } from './../network'
7
-
8
- import chalk from 'chalk';
9
-
10
- import { Gauge, InstrumentBaseTelemetry, InstrumentGaugeTelemetry, InstrumentObjectTelemetry, InstrumentLogTelemetry } from '@nsshunt/stsobservability'
11
-
12
- import { IDBAccessLayer, accessLayerType, DBAccessLayerManager, IDBAccessLayerEvents } from '@nsshunt/stsdatamanagement'
13
-
14
- import { goptions } from '@nsshunt/stsconfig'
15
-
16
- import { JSONObject } from '@nsshunt/stsutils'
17
- import { StatusCodes } from 'http-status-codes'
18
-
19
- import { PublishInstrumentController, IPublishInstrumentControllerOptions, InstrumentDefinitions,
20
- TransportType, IPublishTransportRESTServerOptions, GetInstruments } from '@nsshunt/stsobservability'
21
-
22
- import { STSDefaultClientToServerEvents, STSDefaultServerToClientEvents } from '@nsshunt/stssocketioutils'
23
- import os from 'os';
24
-
25
- import { IProcessBase, CreateServiceProcessContext, ProcessOptions, IProcessBaseEvents } from './../commonTypes'
26
-
27
- import { TinyEmitter } from 'tiny-emitter';
28
-
29
- import { ISocketIoServerHelper } from '@nsshunt/stssocketioutils'
30
-
31
- export abstract class ProcessBase extends TinyEmitter implements IProcessBase
32
- {
33
- #options: ProcessOptions;
34
- #instrumentController: PublishInstrumentController | null = null;
35
- #systemInformationInterval: NodeJS.Timeout | null = null;
36
- #socketIoServerHelper: ISocketIoServerHelper<STSDefaultClientToServerEvents, STSDefaultServerToClientEvents> | null = null;
37
- #accessLayer: IDBAccessLayer | null = null;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ProcessBase = void 0;
7
+ /* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
8
+ const pidusage_1 = __importDefault(require("pidusage"));
9
+ const process_1 = require("process");
10
+ const node_cluster_1 = __importDefault(require("node:cluster"));
11
+ const systeminformation_1 = __importDefault(require("systeminformation")); // https://systeminformation.io/
12
+ const network_1 = require("./../network");
13
+ const chalk_1 = __importDefault(require("chalk"));
14
+ const stsobservability_1 = require("@nsshunt/stsobservability");
15
+ const stsdatamanagement_1 = require("@nsshunt/stsdatamanagement");
16
+ const stsconfig_1 = require("@nsshunt/stsconfig");
17
+ const http_status_codes_1 = require("http-status-codes");
18
+ const stsobservability_2 = require("@nsshunt/stsobservability");
19
+ const os_1 = __importDefault(require("os"));
20
+ const commonTypes_1 = require("./../commonTypes");
21
+ const tiny_emitter_1 = require("tiny-emitter");
22
+ class ProcessBase extends tiny_emitter_1.TinyEmitter {
23
+ #options;
24
+ #instrumentController = null;
25
+ #systemInformationInterval = null;
26
+ #socketIoServerHelper = null;
27
+ #accessLayer = null;
38
28
  //#redisMessageHandler: RedisMessageHandler | null = null;
39
-
40
- constructor(options: ProcessOptions) {
29
+ constructor(options) {
41
30
  super();
42
31
  this.#options = options;
43
-
44
32
  if (options.serviceName) {
45
- this.options.serviceProcessContext = CreateServiceProcessContext(options.serviceName, options.serviceVersion, options.serviceInstanceId,
46
- os.hostname(), process.pid, options.isMaster ? process.pid : process.ppid)
33
+ this.options.serviceProcessContext = (0, commonTypes_1.CreateServiceProcessContext)(options.serviceName, options.serviceVersion, options.serviceInstanceId, os_1.default.hostname(), process.pid, options.isMaster ? process.pid : process.ppid);
47
34
  }
48
35
  }
49
-
50
- #GetFormattedLogMessage(message: string): string {
36
+ #GetFormattedLogMessage(message) {
51
37
  let prefix = '';
52
38
  let col = null;
53
39
  const appName = this.options.serviceName;
54
-
55
- if (cluster.isPrimary) {
40
+ if (node_cluster_1.default.isPrimary) {
56
41
  prefix = 'M';
57
- col = chalk.bold.cyan;
58
- } else {
42
+ col = chalk_1.default.bold.cyan;
43
+ }
44
+ else {
59
45
  prefix = 'W';
60
- col = chalk.green;
46
+ col = chalk_1.default.green;
61
47
  }
62
48
  return col(`${prefix}(${process.pid}) [${appName}]: ${message}`);
63
49
  }
64
-
65
- LogErrorMessage(message: any) {
50
+ LogErrorMessage(message) {
66
51
  this.options.logger.error(this.#GetFormattedLogMessage(message));
67
52
  }
68
-
69
- LogInfoMessage(message: any) {
53
+ LogInfoMessage(message) {
70
54
  this.options.logger.info(this.#GetFormattedLogMessage(message));
71
55
  }
72
-
73
- LogMessageToLoggerInstrument(message: any) {
74
- this.UpdateInstrument(Gauge.LOGGER, {
56
+ LogMessageToLoggerInstrument(message) {
57
+ this.UpdateInstrument(stsobservability_1.Gauge.LOGGER, {
75
58
  LogMessage: this.#GetFormattedLogMessage(message)
76
- } as InstrumentLogTelemetry);
59
+ });
77
60
  }
78
-
79
- get options(): ProcessOptions {
80
- return this.#options as ProcessOptions;
61
+ get options() {
62
+ return this.#options;
81
63
  }
82
-
83
- get shuttingDown(): boolean {
64
+ get shuttingDown() {
84
65
  return false;
85
66
  }
86
-
87
- SetupInstrumentation()
88
- {
67
+ SetupInstrumentation() {
89
68
  if (!this.options.serviceProcessContext) {
90
69
  return;
91
70
  }
92
-
93
- let publishTransportOptions: IPublishTransportRESTServerOptions | null = null;
94
- if (goptions.observabilityPublishMode.localeCompare('PROXY') === 0) {
71
+ let publishTransportOptions = null;
72
+ if (stsconfig_1.goptions.observabilityPublishMode.localeCompare('PROXY') === 0) {
95
73
  publishTransportOptions = {
96
- transportType: TransportType.RESTAPI,
97
- url: `${goptions.imendpoint}:${goptions.import}${goptions.imapiroot}/publishmessage`,
74
+ transportType: stsobservability_2.TransportType.RESTAPI,
75
+ url: `${stsconfig_1.goptions.imendpoint}:${stsconfig_1.goptions.import}${stsconfig_1.goptions.imapiroot}/publishmessage`,
98
76
  // socketPath: '/var/run/sts/stsrest01.sock'
99
77
  agentOptions: {
100
- keepAlive: goptions.keepAlive,
101
- maxSockets: goptions.maxSockets,
102
- maxTotalSockets: goptions.maxTotalSockets,
103
- maxFreeSockets: goptions.maxFreeSockets,
104
- timeout: goptions.timeout,
105
- rejectUnauthorized: goptions.isProduction // Allows self signed certs in non production mode(s)
78
+ keepAlive: stsconfig_1.goptions.keepAlive,
79
+ maxSockets: stsconfig_1.goptions.maxSockets,
80
+ maxTotalSockets: stsconfig_1.goptions.maxTotalSockets,
81
+ maxFreeSockets: stsconfig_1.goptions.maxFreeSockets,
82
+ timeout: stsconfig_1.goptions.timeout,
83
+ rejectUnauthorized: stsconfig_1.goptions.isProduction // Allows self signed certs in non production mode(s)
106
84
  },
107
85
  logger: this.options.publisherLogger
108
86
  };
109
- } else {
87
+ }
88
+ else {
110
89
  // Currently, now other types are supported
111
90
  return;
112
91
  }
113
-
114
- const httpServer: boolean = (goptions.STSServerType.localeCompare('EXPRESS') === 0) || (goptions.STSServerType.localeCompare('EXPRESS_TLS') === 0);
115
-
92
+ const httpServer = (stsconfig_1.goptions.STSServerType.localeCompare('EXPRESS') === 0) || (stsconfig_1.goptions.STSServerType.localeCompare('EXPRESS_TLS') === 0);
116
93
  //const fileName = './dist/publishInstrumentsWebWorker.js';
117
94
  //const worker = new Worker(fileName);
118
-
119
- const instrumentControllerOptions: IPublishInstrumentControllerOptions = {
120
-
95
+ const instrumentControllerOptions = {
121
96
  processContext: this.options.serviceProcessContext,
122
97
  //payloadType: InstrumentPayloadType.service,
123
98
  consoleLogging: this.options.consoleLogging,
@@ -128,7 +103,7 @@ export abstract class ProcessBase extends TinyEmitter implements IProcessBase
128
103
  logger: this.options.publisherLogger,
129
104
  publishInterval: this.options.publishInterval,
130
105
  publishPostFailInterval: 5000, //@@
131
- instrumentDefinitions: GetInstruments('service'),
106
+ instrumentDefinitions: (0, stsobservability_2.GetInstruments)('service'),
132
107
  publishTransportBaseOptions: publishTransportOptions,
133
108
  autoStart: true
134
109
  /*
@@ -137,11 +112,9 @@ export abstract class ProcessBase extends TinyEmitter implements IProcessBase
137
112
  ...this.GetAdditionalInstruments()
138
113
  ]
139
114
  */
140
- }
141
-
142
- this.#instrumentController = new PublishInstrumentController(instrumentControllerOptions);
115
+ };
116
+ this.#instrumentController = new stsobservability_2.PublishInstrumentController(instrumentControllerOptions);
143
117
  }
144
-
145
118
  /*
146
119
  #GetDefaultServiceInstruments(httpServer: boolean): InstrumentDefinitions {
147
120
  const standardInstruments: InstrumentDefinitions = [
@@ -152,7 +125,7 @@ export abstract class ProcessBase extends TinyEmitter implements IProcessBase
152
125
  [ Gauge.NETWORK_RX_GAUGE , GaugeTypes.INSTRUMENT_VELOCITY ],
153
126
  [ Gauge.NETWORK_TX_GAUGE, GaugeTypes.INSTRUMENT_VELOCITY ],
154
127
  [ Gauge.CPU_LOAD_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, {
155
- interval: this.options.instrumentationObservationInterval,
128
+ interval: this.options.instrumentationObservationInterval,
156
129
  sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],
157
130
  [ Gauge.OBJECT_GAUGE, GaugeTypes.INSTRUMENT_OBJECT, {
158
131
  label:'InstrumentObjectMaster' } as InstrumentObjectOptions]
@@ -167,14 +140,14 @@ export abstract class ProcessBase extends TinyEmitter implements IProcessBase
167
140
  [ Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Total number of new token requests retries
168
141
 
169
142
  [ Gauge.ACTIVE_REQUEST_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, {
170
- interval: this.options.instrumentationObservationInterval,
143
+ interval: this.options.instrumentationObservationInterval,
171
144
  sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],
172
145
  [ Gauge.DURATION_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, {
173
146
  interval: this.options.instrumentationObservationInterval,
174
147
  sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],
175
148
  [ Gauge.DURATION_HISTOGRAM_GAUGE, GaugeTypes.INSTRUMENT_HISTOGRAM ],
176
- [ Gauge.CONNECTION_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, {
177
- interval: this.options.instrumentationObservationInterval,
149
+ [ Gauge.CONNECTION_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, {
150
+ interval: this.options.instrumentationObservationInterval,
178
151
  sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],
179
152
 
180
153
  [ Gauge.CONNECTION_POOL_TOTAL_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ],
@@ -196,34 +169,28 @@ export abstract class ProcessBase extends TinyEmitter implements IProcessBase
196
169
  ]
197
170
  }
198
171
  */
199
-
200
- GetAdditionalInstruments(): InstrumentDefinitions {
201
- return [ ];
172
+ GetAdditionalInstruments() {
173
+ return [];
202
174
  }
203
-
204
- CollectAdditionalTelemetry(): void { // eslint-disable @typescript-eslint/no-empty-function
205
-
175
+ CollectAdditionalTelemetry() {
206
176
  }
207
-
208
177
  ProcessStartup = () => {
209
178
  // use this as well
210
179
  // performance.eventLoopUtilization([utilization1[, utilization2]])
211
180
  // https://nodejs.org/api/perf_hooks.html#perf_hooksmonitoreventloopdelayoptions
212
-
213
181
  const ExecuteGetStats = async () => {
214
182
  const startTime = performance.now();
215
-
216
183
  if (this.#instrumentController) {
217
- const stats = await pidusage(process.pid);
184
+ const stats = await (0, pidusage_1.default)(process.pid);
218
185
  let useStatsCpu = stats.cpu;
219
186
  if (useStatsCpu < 0.01) {
220
187
  useStatsCpu = 0.01; //@@ Endure we record something about 0. 0's are filtered from monitoring tools.
221
188
  }
222
- this.#instrumentController.UpdateInstrument(Gauge.CPU_LOAD_GAUGE, {
189
+ this.#instrumentController.UpdateInstrument(stsobservability_1.Gauge.CPU_LOAD_GAUGE, {
223
190
  val: useStatsCpu
224
- } as InstrumentGaugeTelemetry);
225
- };
226
-
191
+ });
192
+ }
193
+ ;
227
194
  /*
228
195
  pidusage(process.pid, (err, stats) => {
229
196
  if (this.#instrumentController) {
@@ -237,56 +204,46 @@ export abstract class ProcessBase extends TinyEmitter implements IProcessBase
237
204
  }
238
205
  });
239
206
  */
240
-
241
207
  // https://nodejs.org/api/process.html#processmemoryusage
242
- const usage = memoryUsage();
243
- const telemetry: JSONObject = {
208
+ const usage = (0, process_1.memoryUsage)();
209
+ const telemetry = {
244
210
  r: usage.rss,
245
211
  t: usage.heapTotal,
246
212
  u: usage.heapUsed,
247
213
  x: usage.external,
248
214
  a: usage.arrayBuffers,
249
- }
250
-
251
- this.UpdateInstrument(Gauge.OBJECT_GAUGE, {
215
+ };
216
+ this.UpdateInstrument(stsobservability_1.Gauge.OBJECT_GAUGE, {
252
217
  val: telemetry
253
- } as InstrumentObjectTelemetry);
254
-
218
+ });
255
219
  this.CollectAdditionalTelemetry();
256
-
257
220
  const totalTime = performance.now() - startTime;
258
- const nextLoopTime = goptions.systemInformationInterval - totalTime;
259
-
221
+ const nextLoopTime = stsconfig_1.goptions.systemInformationInterval - totalTime;
260
222
  this.#systemInformationInterval = setTimeout(ExecuteGetStats, nextLoopTime).unref();
261
- }
262
-
263
- this.#systemInformationInterval = setTimeout(ExecuteGetStats, goptions.systemInformationInterval).unref();
264
-
223
+ };
224
+ this.#systemInformationInterval = setTimeout(ExecuteGetStats, stsconfig_1.goptions.systemInformationInterval).unref();
265
225
  if (this.options.useDatabase) {
266
226
  // Get the accessLayer to force DB connection test
267
227
  const accessLayer = this.accessLayer;
268
228
  }
269
-
270
229
  //@@this.LogInfoMessage(`RedisMessageHandler: redisUrl: [${goptions.imRedisMessageProcessorUrl}]`);
271
- }
272
-
273
- UpdateInstrument = (instrumentName: Gauge, telemetry: InstrumentBaseTelemetry) => {
230
+ };
231
+ UpdateInstrument = (instrumentName, telemetry) => {
274
232
  if (this.#instrumentController) {
275
233
  this.#instrumentController.UpdateInstrument(instrumentName, telemetry);
276
234
  }
277
- }
278
-
279
- ProcessExit = (processExitDelay: number) => {
235
+ };
236
+ ProcessExit = (processExitDelay) => {
280
237
  if (this.options.processExitOnTerminate && this.options.processExitOnTerminate === true) {
281
238
  setTimeout(() => {
282
239
  this.LogInfoMessage(`Performing process.exit(0).`);
283
240
  process.exit(0);
284
241
  }, processExitDelay); // Give the workers time to terminate gracefully
285
- } else {
242
+ }
243
+ else {
286
244
  this.LogInfoMessage(`Performing process.exit(0) - Immediate.`);
287
245
  }
288
- }
289
-
246
+ };
290
247
  TerminateInstrumentController = () => {
291
248
  if (this.InstrumentController) {
292
249
  this.LogInfoMessage(`ProcessBase:TerminateInstrumentController()`);
@@ -296,104 +253,85 @@ export abstract class ProcessBase extends TinyEmitter implements IProcessBase
296
253
  }
297
254
  }, 100);
298
255
  }
299
- }
300
-
301
- get InstrumentController(): PublishInstrumentController | null {
256
+ };
257
+ get InstrumentController() {
302
258
  return this.#instrumentController;
303
259
  }
304
-
305
- InstrumentExists(instrumentName: Gauge): boolean
306
- {
260
+ InstrumentExists(instrumentName) {
307
261
  if (this.#instrumentController) {
308
262
  return this.#instrumentController.InstrumentExists(instrumentName);
309
263
  }
310
264
  return false;
311
265
  }
312
-
313
266
  TerminateUIController = () => {
314
267
  if (this.GetUIController() !== null) {
315
268
  this.LogInfoMessage('ProcessBase:TerminateUIController(): Destroy the user interface controller.');
316
269
  this.GetUIController().DestroyUI();
317
270
  }
318
- }
319
-
320
- async ProcessTerminate(): Promise<void> {
271
+ };
272
+ async ProcessTerminate() {
321
273
  this.emit('ProcessTerminate');
322
-
323
274
  if (this.#systemInformationInterval) {
324
275
  clearTimeout(this.#systemInformationInterval);
325
276
  }
326
277
  this.#systemInformationInterval = null;
327
-
328
278
  //@@this.#redisMessageHandler?.Stop();
329
279
  }
330
-
331
280
  /**
332
- * UIController (instance of UIController) to manage a console based user interface associated for this node application.
333
- * @returns UIController instance to manage a console based user interface associated for this node application.
334
- */
335
- GetUIController(): any {
281
+ * UIController (instance of UIController) to manage a console based user interface associated for this node application.
282
+ * @returns UIController instance to manage a console based user interface associated for this node application.
283
+ */
284
+ GetUIController() {
336
285
  return null;
337
286
  }
338
-
339
- get socketIoServerHelper(): ISocketIoServerHelper<STSDefaultClientToServerEvents, STSDefaultServerToClientEvents> | null
340
- {
287
+ get socketIoServerHelper() {
341
288
  return this.#socketIoServerHelper;
342
289
  }
343
-
344
- set socketIoServerHelper(value: ISocketIoServerHelper<STSDefaultClientToServerEvents, STSDefaultServerToClientEvents> | null)
345
- {
290
+ set socketIoServerHelper(value) {
346
291
  this.#socketIoServerHelper = value;
347
292
  }
348
-
349
- #UpdatePGPoolManagerInstrument = (data: any) => {
350
- this.UpdateInstrument(Gauge.CONNECTION_POOL_TOTAL_GAUGE, {
293
+ #UpdatePGPoolManagerInstrument = (data) => {
294
+ this.UpdateInstrument(stsobservability_1.Gauge.CONNECTION_POOL_TOTAL_GAUGE, {
351
295
  val: data.totalCount
352
- } as InstrumentGaugeTelemetry);
353
-
354
- this.UpdateInstrument(Gauge.CONNECTION_POOL_IDLE_GAUGE, {
296
+ });
297
+ this.UpdateInstrument(stsobservability_1.Gauge.CONNECTION_POOL_IDLE_GAUGE, {
355
298
  val: data.idleCount
356
- } as InstrumentGaugeTelemetry);
357
-
358
- this.UpdateInstrument(Gauge.CONNECTION_POOL_WAITING_GAUGE, {
299
+ });
300
+ this.UpdateInstrument(stsobservability_1.Gauge.CONNECTION_POOL_WAITING_GAUGE, {
359
301
  val: data.waitingCount
360
- } as InstrumentGaugeTelemetry);
361
- }
362
-
363
- async TerminateDatabase(): Promise<void> {
302
+ });
303
+ };
304
+ async TerminateDatabase() {
364
305
  if (this.#accessLayer) {
365
306
  const logPrefix = `ProcessBase:TerminateDatabase():${process.pid}:`;
366
307
  this.LogInfoMessage(`${logPrefix} Ending database connections and pools.`);
367
- this.#accessLayer.off(IDBAccessLayerEvents.UpdateInstruments, this.#UpdatePGPoolManagerInstrument)
308
+ this.#accessLayer.off(stsdatamanagement_1.IDBAccessLayerEvents.UpdateInstruments, this.#UpdatePGPoolManagerInstrument);
368
309
  await this.#accessLayer.EndDatabase();
369
310
  }
370
311
  }
371
-
372
- get accessLayer(): IDBAccessLayer | null
373
- {
312
+ get accessLayer() {
374
313
  if (this.options.useDatabase) {
375
314
  if (this.#accessLayer === null) {
376
-
377
- this.#accessLayer = new DBAccessLayerManager().CreateAccessLayer({
378
- accessLayerType: accessLayerType.postgresql,
315
+ this.#accessLayer = new stsdatamanagement_1.DBAccessLayerManager().CreateAccessLayer({
316
+ accessLayerType: stsdatamanagement_1.accessLayerType.postgresql,
379
317
  accessLayerOptions: {
380
318
  logger: this.options.logger,
381
319
  usedefaultdb: false
382
320
  }
383
321
  });
384
-
385
- this.#accessLayer.on(IDBAccessLayerEvents.UpdateInstruments, this.#UpdatePGPoolManagerInstrument);
386
-
322
+ this.#accessLayer.on(stsdatamanagement_1.IDBAccessLayerEvents.UpdateInstruments, this.#UpdatePGPoolManagerInstrument);
387
323
  (async () => {
388
324
  try {
389
- const retVal = await (this.accessLayer as IDBAccessLayer).GetResourceCount();
390
- if (retVal.status !== StatusCodes.OK) {
391
- this.LogInfoMessage(chalk.red(`Unable to get resources from the database. Is the database running? [${JSON.stringify(retVal)}]`));
392
- } else {
393
- this.LogInfoMessage(chalk.green(`Database connection successful. Resources: [${retVal.detail}]`));
325
+ const retVal = await this.accessLayer.GetResourceCount();
326
+ if (retVal.status !== http_status_codes_1.StatusCodes.OK) {
327
+ this.LogInfoMessage(chalk_1.default.red(`Unable to get resources from the database. Is the database running? [${JSON.stringify(retVal)}]`));
394
328
  }
395
- } catch (error) {
396
- this.LogInfoMessage(chalk.red(`Unable to get resources from the database. Is the database running? Error: [${error}]`));
329
+ else {
330
+ this.LogInfoMessage(chalk_1.default.green(`Database connection successful. Resources: [${retVal.detail}]`));
331
+ }
332
+ }
333
+ catch (error) {
334
+ this.LogInfoMessage(chalk_1.default.red(`Unable to get resources from the database. Is the database running? Error: [${error}]`));
397
335
  }
398
336
  })();
399
337
  }
@@ -401,27 +339,26 @@ export abstract class ProcessBase extends TinyEmitter implements IProcessBase
401
339
  }
402
340
  return null;
403
341
  }
404
-
405
- GetNumCPUs = async (): Promise<number> => {
342
+ GetNumCPUs = async () => {
406
343
  // https://systeminformation.io/
407
344
  const valueObject = {
408
345
  cpu: '*'
409
- }
410
-
411
- const sysinfo = await si.get(valueObject);
346
+ };
347
+ const sysinfo = await systeminformation_1.default.get(valueObject);
412
348
  let numCPUs = 2;
413
- if (goptions.useCPUs > 0) {
414
- if (goptions.useCPUs >= 1) {
415
- numCPUs = goptions.useCPUs;
416
- } else {
417
- numCPUs = Math.round(sysinfo.cpu.cores * goptions.useCPUs);
349
+ if (stsconfig_1.goptions.useCPUs > 0) {
350
+ if (stsconfig_1.goptions.useCPUs >= 1) {
351
+ numCPUs = stsconfig_1.goptions.useCPUs;
418
352
  }
419
- } else {
353
+ else {
354
+ numCPUs = Math.round(sysinfo.cpu.cores * stsconfig_1.goptions.useCPUs);
355
+ }
356
+ }
357
+ else {
420
358
  numCPUs = sysinfo.cpu.physicalCores;
421
359
  }
422
360
  return numCPUs;
423
- }
424
-
361
+ };
425
362
  LogSystemTelemetry = async () => {
426
363
  // https://systeminformation.io/
427
364
  const valueObject = {
@@ -429,55 +366,46 @@ export abstract class ProcessBase extends TinyEmitter implements IProcessBase
429
366
  osInfo: '*',
430
367
  cpu: '*',
431
368
  mem: '*'
432
- }
433
-
434
- const sysinfo = await si.get(valueObject);
369
+ };
370
+ const sysinfo = await systeminformation_1.default.get(valueObject);
435
371
  const numCPUs = await this.GetNumCPUs();
436
372
  const hostname = sysinfo.osInfo.hostname;
437
-
438
- const hostaddr = GetFirstNetworkInterface();
373
+ const hostaddr = (0, network_1.GetFirstNetworkInterface)();
439
374
  if (hostaddr !== null) {
440
375
  this.LogInfoMessage(`Host Address: ${hostaddr}`);
441
- } else {
376
+ }
377
+ else {
442
378
  this.LogInfoMessage(`Unknown Host Address.`);
443
379
  }
444
380
  this.LogInfoMessage(`Server starting with ${numCPUs} Cores/Threads`);
445
-
446
381
  this.LogInfoMessage(`Hostname: ${hostname}`);
447
382
  this.LogInfoMessage(`System: ${JSON.stringify(sysinfo.system)}`);
448
383
  this.LogInfoMessage(`OS Info: ${JSON.stringify(sysinfo.osInfo)}`);
449
384
  this.LogInfoMessage(`CPU: ${JSON.stringify(sysinfo.cpu)}`);
450
385
  this.LogInfoMessage(`Memory: ${JSON.stringify(sysinfo.mem)}`);
451
- }
452
-
453
- GetSignalColour = (signal: any) => {
386
+ };
387
+ GetSignalColour = (signal) => {
454
388
  let msgcolor = null;
455
389
  if (signal === 'SIGINT') {
456
- msgcolor = chalk.yellow;
457
- } else {
458
- msgcolor = chalk.red;
390
+ msgcolor = chalk_1.default.yellow;
391
+ }
392
+ else {
393
+ msgcolor = chalk_1.default.red;
459
394
  }
460
395
  return msgcolor;
461
396
  };
462
-
463
- emit<K extends keyof IProcessBaseEvents>(event: K, ...arg: IProcessBaseEvents[K]): this {
397
+ emit(event, ...arg) {
464
398
  super.emit(event, arg);
465
399
  return this;
466
400
  }
467
-
468
- on<K extends keyof IProcessBaseEvents>(event: K, callback: (...arg: IProcessBaseEvents[K]) => void): this {
401
+ on(event, callback) {
469
402
  super.on(event, callback);
470
403
  return this;
471
404
  }
472
-
473
- off<K extends keyof IProcessBaseEvents>(event: K, callback: (...arg: IProcessBaseEvents[K]) => void): this {
405
+ off(event, callback) {
474
406
  super.off(event, callback);
475
407
  return this;
476
408
  }
477
-
478
- /*@@
479
- get redisMessageHandler(): RedisMessageHandler {
480
- return this.#redisMessageHandler as RedisMessageHandler;
481
- }
482
- */
483
409
  }
410
+ exports.ProcessBase = ProcessBase;
411
+ //# sourceMappingURL=processbase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processbase.js","sourceRoot":"","sources":["../../src/process/processbase.ts"],"names":[],"mappings":"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"}