@nsshunt/stsappframework 3.3.186 → 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.
Files changed (189) hide show
  1. package/dist/commonTypes.js +1 -12
  2. package/dist/commonTypes.js.map +1 -1
  3. package/dist/exampleapp/app.js +238 -0
  4. package/dist/exampleapp/app.js.map +1 -0
  5. package/dist/index.js +11 -7
  6. package/dist/index.js.map +1 -1
  7. package/dist/logger/stsTransportLoggerSocket.js +0 -1
  8. package/dist/logger/stsTransportLoggerSocket.js.map +1 -1
  9. package/dist/{process → plugins}/clusterworkermanager.js +37 -36
  10. package/dist/plugins/clusterworkermanager.js.map +1 -0
  11. package/dist/plugins/pgpoolmanager.js +186 -0
  12. package/dist/plugins/pgpoolmanager.js.map +1 -0
  13. package/dist/{process → plugins}/servertypes/serverUtils.js.map +1 -1
  14. package/dist/{process → plugins}/servertypes/stsexpressserver.js +44 -19
  15. package/dist/plugins/servertypes/stsexpressserver.js.map +1 -0
  16. package/dist/{process → plugins}/servertypes/stsjsonrpcserver.js +2 -3
  17. package/dist/plugins/servertypes/stsjsonrpcserver.js.map +1 -0
  18. package/dist/{process → plugins}/servertypes/stsserverfactory.js +2 -2
  19. package/dist/plugins/servertypes/stsserverfactory.js.map +1 -0
  20. package/dist/{process → plugins}/servertypes/ststcprawserver.js +2 -2
  21. package/dist/plugins/servertypes/ststcprawserver.js.map +1 -0
  22. package/dist/plugins/stsclusterworkermanagerplugin.js +54 -0
  23. package/dist/plugins/stsclusterworkermanagerplugin.js.map +1 -0
  24. package/dist/{process/plugins → plugins}/stsconfigplugin.js +2 -2
  25. package/dist/plugins/stsconfigplugin.js.map +1 -0
  26. package/dist/plugins/stsexpresscontrollerplugin.js +47 -0
  27. package/dist/plugins/stsexpresscontrollerplugin.js.map +1 -0
  28. package/dist/{process/plugins/stsmetricsplugin.js → plugins/stsinstrumentmanagerplugin.js} +36 -23
  29. package/dist/plugins/stsinstrumentmanagerplugin.js.map +1 -0
  30. package/dist/plugins/stslatencymanager.js +122 -0
  31. package/dist/plugins/stslatencymanager.js.map +1 -0
  32. package/dist/plugins/stslatencyplugin.js +29 -0
  33. package/dist/plugins/stslatencyplugin.js.map +1 -0
  34. package/dist/plugins/stslifecycleplugin.js +48 -0
  35. package/dist/plugins/stslifecycleplugin.js.map +1 -0
  36. package/dist/plugins/stsloggerplugin.js +60 -0
  37. package/dist/plugins/stsloggerplugin.js.map +1 -0
  38. package/dist/{process/metrics.js → plugins/stsmetricsplugin.js} +33 -9
  39. package/dist/plugins/stsmetricsplugin.js.map +1 -0
  40. package/dist/plugins/stspgpoolmanagerplugin.js +67 -0
  41. package/dist/plugins/stspgpoolmanagerplugin.js.map +1 -0
  42. package/dist/plugins/stsserverplugin.js +89 -0
  43. package/dist/plugins/stsserverplugin.js.map +1 -0
  44. package/dist/route/stsrootroute.js +10 -0
  45. package/dist/route/stsrootroute.js.map +1 -0
  46. package/dist/stsapp.js +190 -0
  47. package/dist/stsapp.js.map +1 -0
  48. package/package.json +15 -22
  49. package/types/commonTypes.d.ts +28 -203
  50. package/types/commonTypes.d.ts.map +1 -1
  51. package/types/exampleapp/app.d.ts +2 -0
  52. package/types/exampleapp/app.d.ts.map +1 -0
  53. package/types/index.d.ts +11 -7
  54. package/types/index.d.ts.map +1 -1
  55. package/types/logger/stsTransportLoggerSocket.d.ts.map +1 -1
  56. package/types/{process → plugins}/clusterworkermanager.d.ts +5 -1
  57. package/types/plugins/clusterworkermanager.d.ts.map +1 -0
  58. package/types/plugins/pgpoolmanager.d.ts +34 -0
  59. package/types/plugins/pgpoolmanager.d.ts.map +1 -0
  60. package/types/{process → plugins}/servertypes/serverUtils.d.ts.map +1 -1
  61. package/types/plugins/servertypes/stsexpressserver.d.ts +22 -0
  62. package/types/plugins/servertypes/stsexpressserver.d.ts.map +1 -0
  63. package/types/{process → plugins}/servertypes/stsjsonrpcserver.d.ts +1 -9
  64. package/types/plugins/servertypes/stsjsonrpcserver.d.ts.map +1 -0
  65. package/types/{process → plugins}/servertypes/stsserverfactory.d.ts +2 -4
  66. package/types/plugins/servertypes/stsserverfactory.d.ts.map +1 -0
  67. package/types/{process → plugins}/servertypes/ststcprawserver.d.ts +1 -9
  68. package/types/plugins/servertypes/ststcprawserver.d.ts.map +1 -0
  69. package/types/plugins/stsclusterworkermanagerplugin.d.ts +16 -0
  70. package/types/plugins/stsclusterworkermanagerplugin.d.ts.map +1 -0
  71. package/types/{process/plugins → plugins}/stsconfigplugin.d.ts +1 -1
  72. package/types/plugins/stsconfigplugin.d.ts.map +1 -0
  73. package/types/plugins/stsexpresscontrollerplugin.d.ts +25 -0
  74. package/types/plugins/stsexpresscontrollerplugin.d.ts.map +1 -0
  75. package/types/plugins/stsinstrumentmanagerplugin.d.ts +31 -0
  76. package/types/plugins/stsinstrumentmanagerplugin.d.ts.map +1 -0
  77. package/types/plugins/stslatencymanager.d.ts +24 -0
  78. package/types/plugins/stslatencymanager.d.ts.map +1 -0
  79. package/types/plugins/stslatencyplugin.d.ts +12 -0
  80. package/types/plugins/stslatencyplugin.d.ts.map +1 -0
  81. package/types/plugins/stslifecycleplugin.d.ts +25 -0
  82. package/types/plugins/stslifecycleplugin.d.ts.map +1 -0
  83. package/types/plugins/stsloggerplugin.d.ts +19 -0
  84. package/types/plugins/stsloggerplugin.d.ts.map +1 -0
  85. package/types/{process/metrics.d.ts → plugins/stsmetricsplugin.d.ts} +12 -5
  86. package/types/plugins/stsmetricsplugin.d.ts.map +1 -0
  87. package/types/plugins/stspgpoolmanagerplugin.d.ts +14 -0
  88. package/types/plugins/stspgpoolmanagerplugin.d.ts.map +1 -0
  89. package/types/plugins/stsserverplugin.d.ts +16 -0
  90. package/types/plugins/stsserverplugin.d.ts.map +1 -0
  91. package/types/route/stsrootroute.d.ts +5 -0
  92. package/types/route/stsrootroute.d.ts.map +1 -0
  93. package/types/{process/stsapp.d.ts → stsapp.d.ts} +6 -2
  94. package/types/stsapp.d.ts.map +1 -0
  95. package/dist/grpc/grpcServer.js +0 -415
  96. package/dist/grpc/grpcServer.js.map +0 -1
  97. package/dist/process/appConfig.js +0 -103
  98. package/dist/process/appConfig.js.map +0 -1
  99. package/dist/process/clusterworkermanager.js.map +0 -1
  100. package/dist/process/datamanager.js +0 -78
  101. package/dist/process/datamanager.js.map +0 -1
  102. package/dist/process/latencyManager.js +0 -56
  103. package/dist/process/latencyManager.js.map +0 -1
  104. package/dist/process/logManager.js +0 -36
  105. package/dist/process/logManager.js.map +0 -1
  106. package/dist/process/masterprocessbase.js +0 -154
  107. package/dist/process/masterprocessbase.js.map +0 -1
  108. package/dist/process/metrics.js.map +0 -1
  109. package/dist/process/plugins/plugintypes.js +0 -2
  110. package/dist/process/plugins/plugintypes.js.map +0 -1
  111. package/dist/process/plugins/stsconfigplugin.js.map +0 -1
  112. package/dist/process/plugins/stsloggerplugin.js +0 -26
  113. package/dist/process/plugins/stsloggerplugin.js.map +0 -1
  114. package/dist/process/plugins/stsmetricsplugin.js.map +0 -1
  115. package/dist/process/plugins/ststestplugin.js +0 -26
  116. package/dist/process/plugins/ststestplugin.js.map +0 -1
  117. package/dist/process/processbase.js +0 -203
  118. package/dist/process/processbase.js.map +0 -1
  119. package/dist/process/prometheusmanager.js +0 -112
  120. package/dist/process/prometheusmanager.js.map +0 -1
  121. package/dist/process/server.js +0 -4
  122. package/dist/process/server.js.map +0 -1
  123. package/dist/process/serverprocessbase.js +0 -204
  124. package/dist/process/serverprocessbase.js.map +0 -1
  125. package/dist/process/servertypes/stsexpressserver.js.map +0 -1
  126. package/dist/process/servertypes/stsjsonrpcserver.js.map +0 -1
  127. package/dist/process/servertypes/stsserverfactory.js.map +0 -1
  128. package/dist/process/servertypes/ststcprawserver.js.map +0 -1
  129. package/dist/process/singleprocessbase.js +0 -48
  130. package/dist/process/singleprocessbase.js.map +0 -1
  131. package/dist/process/stsapp.js +0 -48
  132. package/dist/process/stsapp.js.map +0 -1
  133. package/dist/process/sysinfo.js +0 -56
  134. package/dist/process/sysinfo.js.map +0 -1
  135. package/dist/process/workerprocessbase.js +0 -35
  136. package/dist/process/workerprocessbase.js.map +0 -1
  137. package/dist/publishertransports/publishTransportUtils.js +0 -43
  138. package/dist/publishertransports/publishTransportUtils.js.map +0 -1
  139. package/dist/sysinfo/network.js +0 -31
  140. package/dist/sysinfo/network.js.map +0 -1
  141. package/types/grpc/grpcServer.d.ts +0 -31
  142. package/types/grpc/grpcServer.d.ts.map +0 -1
  143. package/types/process/appConfig.d.ts +0 -3
  144. package/types/process/appConfig.d.ts.map +0 -1
  145. package/types/process/clusterworkermanager.d.ts.map +0 -1
  146. package/types/process/datamanager.d.ts +0 -15
  147. package/types/process/datamanager.d.ts.map +0 -1
  148. package/types/process/latencyManager.d.ts +0 -10
  149. package/types/process/latencyManager.d.ts.map +0 -1
  150. package/types/process/logManager.d.ts +0 -9
  151. package/types/process/logManager.d.ts.map +0 -1
  152. package/types/process/masterprocessbase.d.ts +0 -13
  153. package/types/process/masterprocessbase.d.ts.map +0 -1
  154. package/types/process/metrics.d.ts.map +0 -1
  155. package/types/process/plugins/plugintypes.d.ts +0 -7
  156. package/types/process/plugins/plugintypes.d.ts.map +0 -1
  157. package/types/process/plugins/stsconfigplugin.d.ts.map +0 -1
  158. package/types/process/plugins/stsloggerplugin.d.ts +0 -14
  159. package/types/process/plugins/stsloggerplugin.d.ts.map +0 -1
  160. package/types/process/plugins/stsmetricsplugin.d.ts +0 -19
  161. package/types/process/plugins/stsmetricsplugin.d.ts.map +0 -1
  162. package/types/process/plugins/ststestplugin.d.ts +0 -10
  163. package/types/process/plugins/ststestplugin.d.ts.map +0 -1
  164. package/types/process/processbase.d.ts +0 -19
  165. package/types/process/processbase.d.ts.map +0 -1
  166. package/types/process/prometheusmanager.d.ts +0 -10
  167. package/types/process/prometheusmanager.d.ts.map +0 -1
  168. package/types/process/server.d.ts +0 -5
  169. package/types/process/server.d.ts.map +0 -1
  170. package/types/process/serverprocessbase.d.ts +0 -18
  171. package/types/process/serverprocessbase.d.ts.map +0 -1
  172. package/types/process/servertypes/stsexpressserver.d.ts +0 -34
  173. package/types/process/servertypes/stsexpressserver.d.ts.map +0 -1
  174. package/types/process/servertypes/stsjsonrpcserver.d.ts.map +0 -1
  175. package/types/process/servertypes/stsserverfactory.d.ts.map +0 -1
  176. package/types/process/servertypes/ststcprawserver.d.ts.map +0 -1
  177. package/types/process/singleprocessbase.d.ts +0 -14
  178. package/types/process/singleprocessbase.d.ts.map +0 -1
  179. package/types/process/stsapp.d.ts.map +0 -1
  180. package/types/process/sysinfo.d.ts +0 -8
  181. package/types/process/sysinfo.d.ts.map +0 -1
  182. package/types/process/workerprocessbase.d.ts +0 -8
  183. package/types/process/workerprocessbase.d.ts.map +0 -1
  184. package/types/publishertransports/publishTransportUtils.d.ts +0 -5
  185. package/types/publishertransports/publishTransportUtils.d.ts.map +0 -1
  186. package/types/sysinfo/network.d.ts +0 -4
  187. package/types/sysinfo/network.d.ts.map +0 -1
  188. /package/dist/{process → plugins}/servertypes/serverUtils.js +0 -0
  189. /package/types/{process → plugins}/servertypes/serverUtils.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stsinstrumentmanagerplugin.js","sourceRoot":"","sources":["../../src/plugins/stsinstrumentmanagerplugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
2
+ import { inject } from "@nsshunt/stsutils";
3
+ import { createAgentManager } from "@nsshunt/stsutils";
4
+ import { STSConfigPluginToken } from "./stsconfigplugin.js";
5
+ import { STSLoggerPluginToken } from "./stsloggerplugin.js";
6
+ import axios from "axios";
7
+ import chalk from "chalk";
8
+ import { Gauge, } from "@nsshunt/stsobservability";
9
+ import http from "node:http";
10
+ import https from "node:https";
11
+ import { STSAxiosConfig } from "@nsshunt/stsutils";
12
+ import { STSMetricsPluginToken } from "./stsmetricsplugin.js";
13
+ import { STSLifeCyclePluginToken } from "./stslifecycleplugin.js";
14
+ export class STSLatencyManager {
15
+ logger = inject(STSLoggerPluginToken);
16
+ config = inject(STSConfigPluginToken);
17
+ metrics = inject(STSMetricsPluginToken);
18
+ lifeCycle = inject(STSLifeCyclePluginToken);
19
+ latency;
20
+ agentManager;
21
+ options;
22
+ LATENCY_CHECK_TIME = 1000;
23
+ constructor(latencyManagerOptions) {
24
+ this.options = latencyManagerOptions;
25
+ }
26
+ Start = async () => {
27
+ this.logger.info(`${process.pid} STSLatencyPlugin: Start() Starting ...`);
28
+ this.agentManager = this._CreateAgentManager();
29
+ this._CheckLatency();
30
+ this.logger.info(`${process.pid} STSLatencyPlugin: Start() Started`);
31
+ };
32
+ Stop = async () => {
33
+ this.logger.info(`${process.pid} STSLatencyPlugin: Stop() Stopping ...`);
34
+ if (this.latency) {
35
+ clearTimeout(this.latency);
36
+ this.latency = undefined;
37
+ }
38
+ if (this.agentManager) {
39
+ this.agentManager?.Terminate();
40
+ this.agentManager = undefined;
41
+ }
42
+ this.logger.info(`${process.pid} STSLatencyPlugin: Stop() Stopped`);
43
+ };
44
+ _NotRunning = () => {
45
+ this.logger.debug(chalk.rgb(250, 100, 200)(`STSLatencyPlugin:_CheckLatency(): app no longer running. Will no longer check latency.`));
46
+ };
47
+ _CheckLatency = async () => {
48
+ this.latency = setTimeout(async () => {
49
+ if (this.lifeCycle.running()) {
50
+ const start = process.hrtime();
51
+ await this._GetLatency();
52
+ if (this.lifeCycle.running()) {
53
+ this._LatencyRequestCompleted(start);
54
+ this._CheckLatency();
55
+ return;
56
+ }
57
+ }
58
+ this._NotRunning();
59
+ }, this.LATENCY_CHECK_TIME).unref();
60
+ };
61
+ _GetLatency = async () => {
62
+ if (!this.agentManager) {
63
+ return;
64
+ }
65
+ if (!this.options) {
66
+ throw new Error("STSLatencyPlugin requires options");
67
+ }
68
+ const { endpoint, port, apiRoot } = this.options;
69
+ let retVal = null;
70
+ // We use port rather than hostport becuase this test going outside the service and comes back in as a regular client
71
+ const url = `${endpoint}:${port}${apiRoot}/latency`;
72
+ try {
73
+ retVal = await axios(new STSAxiosConfig(url, "get")
74
+ .withDefaultHeaders()
75
+ .withAgentManager(this.agentManager).config);
76
+ if (retVal.status !== 200) {
77
+ this.logger.debug(chalk.magenta(`Error (MasterProcessBase:#GetLatency): Invalid response from server: [${retVal.status}]`));
78
+ return null;
79
+ }
80
+ return retVal.data.detail;
81
+ }
82
+ catch (error) {
83
+ this.logger.debug(chalk.red(`Error (MasterProcessBase:#GetLatency:catch): [${error}]`));
84
+ this.logger.debug(chalk.red(` url: [${url}]`));
85
+ if (error.response && error.response.data) {
86
+ this.logger.debug(chalk.red(` Details: [${JSON.stringify(error.response.data)}]`));
87
+ }
88
+ }
89
+ };
90
+ _LatencyRequestCompleted = (start) => {
91
+ // Update request duration histo data
92
+ let timeInMs = 0;
93
+ const end = process.hrtime(start);
94
+ timeInMs = (end[0] * 1000000000 + end[1]) / 1000000;
95
+ timeInMs = parseFloat(timeInMs.toFixed(4));
96
+ this.metrics.UpdateInstrument(Gauge.LATENCY_HISTOGRAM_GAUGE, {
97
+ val: timeInMs,
98
+ });
99
+ this.metrics.UpdateInstrument(Gauge.LATENCY_GAUGE, {
100
+ val: timeInMs,
101
+ });
102
+ };
103
+ _CreateAgentManager = () => {
104
+ return createAgentManager({
105
+ agentOptions: {
106
+ keepAlive: false, // Use basic defaults. This agent will not use keep-alive.
107
+ maxFreeSockets: this.config.maxFreeSockets,
108
+ maxSockets: this.config.maxSockets,
109
+ maxTotalSockets: this.config.maxTotalSockets,
110
+ timeout: this.config.timeout,
111
+ rejectUnauthorized: this.config.isProduction, // Allows self-signed certificates if non-production
112
+ },
113
+ httpAgentFactory(options) {
114
+ return new http.Agent(options);
115
+ },
116
+ httpsAgentFactory(options) {
117
+ return new https.Agent(options);
118
+ },
119
+ });
120
+ };
121
+ }
122
+ //# sourceMappingURL=stslatencymanager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stslatencymanager.js","sourceRoot":"","sources":["../../src/plugins/stslatencymanager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { inject, InjectionToken } from "@nsshunt/stsutils";
2
+ import { STSLoggerPluginToken } from "./stsloggerplugin.js";
3
+ import { STSLatencyManager, } from "./stslatencymanager.js";
4
+ export const STSLatencyPluginToken = new InjectionToken("__STSPlugin__Latency");
5
+ export class STSLatencyPlugin {
6
+ logger = inject(STSLoggerPluginToken);
7
+ latencyManager;
8
+ install = (injector, options) => {
9
+ if (!options) {
10
+ throw new Error("STSLatencyPlugin requires options");
11
+ }
12
+ this.latencyManager = new STSLatencyManager(options);
13
+ injector.register({
14
+ provide: STSLatencyPluginToken,
15
+ useValue: this.latencyManager,
16
+ });
17
+ };
18
+ Start = async () => {
19
+ this.logger.info(`${process.pid} STSLatencyPlugin: Start() Starting ...`);
20
+ await this.latencyManager?.Start();
21
+ this.logger.info(`${process.pid} STSLatencyPlugin: Start() Started`);
22
+ };
23
+ Stop = async () => {
24
+ this.logger.info(`${process.pid} STSLatencyPlugin: Stop() Stopping ...`);
25
+ await this.latencyManager?.Stop();
26
+ this.logger.info(`${process.pid} STSLatencyPlugin: Stop() Stopped`);
27
+ };
28
+ }
29
+ //# sourceMappingURL=stslatencyplugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stslatencyplugin.js","sourceRoot":"","sources":["../../src/plugins/stslatencyplugin.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAY,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EACH,iBAAiB,GAEpB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,cAAc,CACnD,sBAAsB,CACzB,CAAC;AAEF,MAAM,OAAO,gBAAgB;IACR,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAE/C,cAAc,CAAqB;IAE3C,OAAO,GAAG,CACN,QAAkB,EAClB,OAAkC,EAC9B,EAAE;QACN,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAErD,QAAQ,CAAC,QAAQ,CAAC;YACd,OAAO,EAAE,qBAAqB;YAC9B,QAAQ,EAAE,IAAI,CAAC,cAAc;SAChC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,KAAK,GAAG,KAAK,IAAI,EAAE;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,OAAO,CAAC,GAAG,yCAAyC,CAC1D,CAAC;QAEF,MAAM,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC;QAEnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,oCAAoC,CAAC,CAAC;IACzE,CAAC,CAAC;IAEF,IAAI,GAAG,KAAK,IAAI,EAAE;QACd,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,OAAO,CAAC,GAAG,wCAAwC,CACzD,CAAC;QAEF,MAAM,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;QAElC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,mCAAmC,CAAC,CAAC;IACxE,CAAC,CAAC;CACL"}
@@ -0,0 +1,48 @@
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
+ export const STSLifeCyclePluginToken = new InjectionToken("__STSPlugin__LifeCycle");
6
+ export var ISTSLifeCycleState;
7
+ (function (ISTSLifeCycleState) {
8
+ ISTSLifeCycleState[ISTSLifeCycleState["initial"] = 0] = "initial";
9
+ ISTSLifeCycleState[ISTSLifeCycleState["starting"] = 1] = "starting";
10
+ ISTSLifeCycleState[ISTSLifeCycleState["started"] = 2] = "started";
11
+ ISTSLifeCycleState[ISTSLifeCycleState["stopping"] = 3] = "stopping";
12
+ ISTSLifeCycleState[ISTSLifeCycleState["stopped"] = 4] = "stopped";
13
+ })(ISTSLifeCycleState || (ISTSLifeCycleState = {}));
14
+ export class STSLifeCycleManager {
15
+ _state = ISTSLifeCycleState.initial;
16
+ get state() {
17
+ return this._state;
18
+ }
19
+ set state(state) {
20
+ this._state = state;
21
+ }
22
+ running = () => {
23
+ if (this._state === ISTSLifeCycleState.started) {
24
+ return true;
25
+ }
26
+ return false;
27
+ };
28
+ }
29
+ // STSOptions
30
+ export class STSLifeCyclePlugin {
31
+ logger = inject(STSLoggerPluginToken);
32
+ lifeCycle = new STSLifeCycleManager();
33
+ install = (injector) => {
34
+ injector.register({
35
+ provide: STSLifeCyclePluginToken,
36
+ useValue: this.lifeCycle,
37
+ });
38
+ };
39
+ Start = async () => {
40
+ this.logger.info(`${process.pid} STSLifeCyclePlugin: Start() Starting ...`);
41
+ this.logger.info(`${process.pid} STSLifeCyclePlugin: Start() Started`);
42
+ };
43
+ Stop = async () => {
44
+ this.logger.info(`${process.pid} STSLifeCyclePlugin: Stop() Stopping ...`);
45
+ this.logger.info(`${process.pid} STSLifeCyclePlugin: Stop() Stopped`);
46
+ };
47
+ }
48
+ //# sourceMappingURL=stslifecycleplugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stslifecycleplugin.js","sourceRoot":"","sources":["../../src/plugins/stslifecycleplugin.ts"],"names":[],"mappings":"AAAA,wFAAwF,CAAC,UAAU;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAY,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,cAAc,CACrD,wBAAwB,CAC3B,CAAC;AAEF,MAAM,CAAN,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC1B,iEAAS,CAAA;IACT,mEAAU,CAAA;IACV,iEAAS,CAAA;IACT,mEAAU,CAAA;IACV,iEAAS,CAAA;AACb,CAAC,EANW,kBAAkB,KAAlB,kBAAkB,QAM7B;AAED,MAAM,OAAO,mBAAmB;IACpB,MAAM,GAAuB,kBAAkB,CAAC,OAAO,CAAC;IAEhE,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,CAAC,KAAyB;QAC/B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,OAAO,GAAG,GAAY,EAAE;QACpB,IAAI,IAAI,CAAC,MAAM,KAAK,kBAAkB,CAAC,OAAO,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC;CACL;AAED,aAAa;AACb,MAAM,OAAO,kBAAkB;IACV,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACtC,SAAS,GAAwB,IAAI,mBAAmB,EAAE,CAAC;IAE5E,OAAO,GAAG,CAAC,QAAkB,EAAQ,EAAE;QACnC,QAAQ,CAAC,QAAQ,CAAC;YACd,OAAO,EAAE,uBAAuB;YAChC,QAAQ,EAAE,IAAI,CAAC,SAAS;SAC3B,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,KAAK,GAAG,KAAK,IAAI,EAAE;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,OAAO,CAAC,GAAG,2CAA2C,CAC5D,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,sCAAsC,CAAC,CAAC;IAC3E,CAAC,CAAC;IAEF,IAAI,GAAG,KAAK,IAAI,EAAE;QACd,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,OAAO,CAAC,GAAG,0CAA0C,CAC3D,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,qCAAqC,CAAC,CAAC;IAC1E,CAAC,CAAC;CACL"}
@@ -0,0 +1,60 @@
1
+ import { Sleep, InjectionToken } from "@nsshunt/stsutils";
2
+ import winston from "winston";
3
+ import { defaultLogger } from "@nsshunt/stsutils";
4
+ import { STSTransportLoggerSocket } from "./../logger/stsTransportLoggerSocket.js";
5
+ export const STSLoggerPluginToken = new InjectionToken("__STSPlugin__Logger");
6
+ export class STSLoggerPlugin {
7
+ options;
8
+ logger;
9
+ _GetLoggerRooms = (serviceInstanceId) => {
10
+ const room_service = `logs_${this.options.serviceName}_${this.options.serviceVersion}`;
11
+ const room_service_instance = `${room_service}_${serviceInstanceId}`;
12
+ return [room_service_instance, room_service];
13
+ };
14
+ install = (injector, options) => {
15
+ if (!options) {
16
+ throw new Error("STSLoggerPlugin requires options");
17
+ }
18
+ this.options = options;
19
+ this.logger = winston.createLogger({
20
+ level: "debug",
21
+ format: winston.format.combine(winston.format.colorize(), winston.format.simple()),
22
+ transports: [
23
+ new winston.transports.Console(),
24
+ new STSTransportLoggerSocket({
25
+ logger: defaultLogger,
26
+ rooms: this._GetLoggerRooms(this.options.serviceInstanceId),
27
+ }),
28
+ ],
29
+ });
30
+ injector.register({
31
+ provide: STSLoggerPluginToken,
32
+ useValue: this.logger,
33
+ });
34
+ };
35
+ Start = async () => {
36
+ console.log(`${process.pid} STSLoggerPlugin: Start(): [${this.options.name}] Starting ...`);
37
+ await Sleep(1000);
38
+ console.log(`${process.pid} STSLoggerPlugin: Start(): [${this.options.name}] Started`);
39
+ };
40
+ Stop = async () => {
41
+ console.log(`${process.pid} STSLoggerPlugin: Stop(): [${this.options.name}] Stopping ...`);
42
+ try {
43
+ if (this.logger) {
44
+ console.log(`${process.pid} STSLoggerPlugin: Stop(): close() winston`);
45
+ await Sleep(500);
46
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
47
+ this.logger.close();
48
+ console.log(`${process.pid} STSLoggerPlugin: Stop(): Adding console logger for final log output`);
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ this.logger.add(new winston.transports.Console());
51
+ }
52
+ }
53
+ catch (error) {
54
+ console.error(error);
55
+ }
56
+ await Sleep(100);
57
+ console.log(`${process.pid} STSLoggerPlugin: Stop(): [${this.options.name}] Stopped`);
58
+ };
59
+ }
60
+ //# sourceMappingURL=stsloggerplugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stsloggerplugin.js","sourceRoot":"","sources":["../../src/plugins/stsloggerplugin.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- // metrics.ts
1
+ import { InjectionToken } from "@nsshunt/stsutils";
2
2
  import pidusage from "pidusage";
3
3
  import { memoryUsage } from "process";
4
4
  import cluster from "node:cluster";
@@ -6,17 +6,30 @@ import chalk from "chalk";
6
6
  import { Gauge, } from "@nsshunt/stsobservability";
7
7
  import { goptions } from "@nsshunt/stsconfig";
8
8
  import { inject } from "@nsshunt/stsutils";
9
- import { ProcessOptionsToken, PublishInstrumentControllerToken, STSLoggerToken, } from "./../commonTypes.js";
10
- export class Metrics {
9
+ import { STSInstrumentControllerPluginToken } from "./stsinstrumentmanagerplugin.js";
10
+ import { STSLoggerPluginToken } from "./stsloggerplugin.js";
11
+ import { STSTransportLoggerWinston } from "./../logger/stsTransportLoggerWinston.js";
12
+ export const STSMetricsPluginToken = new InjectionToken("__STSPlugin__Metrics");
13
+ export class STSMetricsPlugin {
11
14
  systemInformationInterval = null;
12
- publishInstrumentController = inject(PublishInstrumentControllerToken);
13
- logger = inject(STSLoggerToken);
14
- options = inject(ProcessOptionsToken);
15
+ publishInstrumentController = inject(STSInstrumentControllerPluginToken);
16
+ logger = inject(STSLoggerPluginToken);
15
17
  metricsProvider = [];
18
+ options;
16
19
  constructor() {
17
20
  this.metricsProvider.push(this.#CalcCPULoad);
18
21
  this.metricsProvider.push(this.#CalcMemoryUsage);
19
22
  }
23
+ install = (injector, options) => {
24
+ if (!options) {
25
+ throw new Error("STSMetricsPlugin requires options");
26
+ }
27
+ this.options = options;
28
+ injector.register({
29
+ provide: STSMetricsPluginToken,
30
+ useValue: this,
31
+ });
32
+ };
20
33
  #GetFormattedLogMessage(message) {
21
34
  let prefix = "";
22
35
  let col = null;
@@ -35,10 +48,21 @@ export class Metrics {
35
48
  #LogWarnMessage(message) {
36
49
  this.logger?.warn(this.#GetFormattedLogMessage(message));
37
50
  }
38
- Start = () => {
51
+ Start = async () => {
52
+ try {
53
+ // If we have a logger, add a winston logger transport to that logger we are using from these metrics
54
+ if (this.logger) {
55
+ const transport = new STSTransportLoggerWinston(this);
56
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
+ this.logger.add(transport);
58
+ }
59
+ }
60
+ catch (error) {
61
+ console.error(error);
62
+ }
39
63
  this.#MainLoop();
40
64
  };
41
- Stop = () => {
65
+ Stop = async () => {
42
66
  if (this.systemInformationInterval) {
43
67
  clearTimeout(this.systemInformationInterval);
44
68
  }
@@ -97,4 +121,4 @@ export class Metrics {
97
121
  });
98
122
  };
99
123
  }
100
- //# sourceMappingURL=metrics.js.map
124
+ //# sourceMappingURL=stsmetricsplugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stsmetricsplugin.js","sourceRoot":"","sources":["../../src/plugins/stsmetricsplugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
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 { PGPoolManager, } from "./pgpoolmanager.js";
6
+ export const STSPGPoolManagerPluginToken = new InjectionToken("__STSPlugin__PGPoolManager");
7
+ export class STSPGPoolManagerPlugin {
8
+ logger = inject(STSLoggerPluginToken);
9
+ PGPoolManager;
10
+ install = (injector, options) => {
11
+ if (!options) {
12
+ throw new Error("STSPGPoolManagerPlugin requires options");
13
+ }
14
+ this.PGPoolManager = new PGPoolManager(options);
15
+ injector.register({
16
+ provide: STSPGPoolManagerPluginToken,
17
+ useValue: this.PGPoolManager,
18
+ });
19
+ };
20
+ async GetResourceCount(resources) {
21
+ try {
22
+ let query = "";
23
+ if (resources) {
24
+ query = `select count(*) from stsresource`;
25
+ }
26
+ else {
27
+ query = `select count(*) from stsentity e join stsresource r on e.resourceoid = r.oid`;
28
+ }
29
+ const client = await this.PGPoolManager.GetReadOnlyPoolClient();
30
+ try {
31
+ const { rows } = await client.query(query);
32
+ const dbResponse = rows[0];
33
+ return {
34
+ detail: parseInt(dbResponse.count), //@@ needs to be number
35
+ };
36
+ }
37
+ catch (error) {
38
+ console.error(error);
39
+ }
40
+ finally {
41
+ client.release();
42
+ }
43
+ }
44
+ catch (error) {
45
+ console.error(error);
46
+ }
47
+ }
48
+ Start = async () => {
49
+ this.logger.info(`${process.pid} STSPGPoolManagerPlugin: Start(): Starting ...`);
50
+ try {
51
+ this.PGPoolManager?.Start();
52
+ }
53
+ catch (error) {
54
+ this.logger.error(`${process.pid} STSServerPlugin: Start() Error: [${error}]`);
55
+ }
56
+ const resourceCount = await this.GetResourceCount(true);
57
+ const entityCount = await this.GetResourceCount(false);
58
+ this.logger.info(`resourceCount: [${JSON.stringify(resourceCount)}] entityCount: [${JSON.stringify(entityCount)}]`);
59
+ this.logger.info(`${process.pid} STSPGPoolManagerPlugin: Start(): Started`);
60
+ };
61
+ Stop = async () => {
62
+ this.logger.info(`${process.pid} STSPGPoolManagerPlugin: Stop() Stopping ...`);
63
+ await this.PGPoolManager?.Stop();
64
+ this.logger.info(`${process.pid} STSPGPoolManagerPlugin: Stop() Stopped`);
65
+ };
66
+ }
67
+ //# sourceMappingURL=stspgpoolmanagerplugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stspgpoolmanagerplugin.js","sourceRoot":"","sources":["../../src/plugins/stspgpoolmanagerplugin.ts"],"names":[],"mappings":"AAAA,wFAAwF,CAAC,UAAU;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,OAAO,EAAY,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EACH,aAAa,GAGhB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,cAAc,CACzD,4BAA4B,CAC/B,CAAC;AAEF,MAAM,OAAO,sBAAsB;IACd,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC/C,aAAa,CAAkB;IAEvC,OAAO,GAAG,CAAC,QAAkB,EAAE,OAA8B,EAAQ,EAAE;QACnE,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;QAEhD,QAAQ,CAAC,QAAQ,CAAC;YACd,OAAO,EAAE,2BAA2B;YACpC,QAAQ,EAAE,IAAI,CAAC,aAAa;SAC/B,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,KAAK,CAAC,gBAAgB,CAAC,SAAkB;QACrC,IAAI,CAAC;YACD,IAAI,KAAK,GAAW,EAAE,CAAC;YACvB,IAAI,SAAS,EAAE,CAAC;gBACZ,KAAK,GAAG,kCAAkC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACJ,KAAK,GAAG,8EAA8E,CAAC;YAC3F,CAAC;YAED,MAAM,MAAM,GACR,MAAM,IAAI,CAAC,aAAc,CAAC,qBAAqB,EAAE,CAAC;YACtD,IAAI,CAAC;gBACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3B,OAAO;oBACH,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,uBAAuB;iBAC9D,CAAC;YACN,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;oBAAS,CAAC;gBACP,MAAM,CAAC,OAAO,EAAE,CAAC;YACrB,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;IAED,KAAK,GAAG,KAAK,IAAI,EAAE;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,OAAO,CAAC,GAAG,gDAAgD,CACjE,CAAC;QACF,IAAI,CAAC;YACD,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,GAAG,OAAO,CAAC,GAAG,qCAAqC,KAAK,GAAG,CAC9D,CAAC;QACN,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEvD,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,mBAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CACvG,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,OAAO,CAAC,GAAG,2CAA2C,CAC5D,CAAC;IACN,CAAC,CAAC;IAEF,IAAI,GAAG,KAAK,IAAI,EAAE;QACd,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,OAAO,CAAC,GAAG,8CAA8C,CAC/D,CAAC;QAEF,MAAM,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;QAEjC,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,OAAO,CAAC,GAAG,yCAAyC,CAC1D,CAAC;IACN,CAAC,CAAC;CACL"}
@@ -0,0 +1,89 @@
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
+ import { inject } from "@nsshunt/stsutils";
5
+ import { CreateSTSServer } from "./servertypes/stsserverfactory.js";
6
+ import { Gauge } from "@nsshunt/stsobservability";
7
+ import { STSMetricsPluginToken } from "./stsmetricsplugin.js";
8
+ import { STSLoggerPluginToken } from "./stsloggerplugin.js";
9
+ export const STSServerPluginToken = new InjectionToken("__STSPlugin__Server");
10
+ // STSOptions
11
+ export class STSServerPlugin {
12
+ metrics = inject(STSMetricsPluginToken);
13
+ logger = inject(STSLoggerPluginToken);
14
+ options;
15
+ #CORE_DOMAIN = "stscore.stsmda.org";
16
+ server;
17
+ install = (injector, options) => {
18
+ if (!options) {
19
+ throw new Error("STSServerPlugin requires options");
20
+ }
21
+ this.options = options;
22
+ this.server = this.#SetupSTSServer();
23
+ /*
24
+ //@@ Need a better way of doing this
25
+ const transport = new STSTransportLoggerWinston(
26
+ this.metrics as IMetrics
27
+ );
28
+ (this.options.logger as any).add(transport);
29
+ */
30
+ injector.register({
31
+ provide: STSServerPluginToken,
32
+ useValue: this.server,
33
+ });
34
+ };
35
+ //@@ may not be working ...
36
+ Start = async () => {
37
+ this.logger.info(`${process.pid} STSServerPlugin: Start() Starting ...`);
38
+ try {
39
+ this.server
40
+ ?.GetHttpServer()
41
+ ?.getConnections((error, count) => {
42
+ this.metrics?.UpdateInstrument(Gauge.CONNECTION_COUNT_GAUGE, {
43
+ val: count,
44
+ });
45
+ });
46
+ }
47
+ catch (error) {
48
+ this.logger.error(`${process.pid} STSServerPlugin: Start() Error: [${error}]`);
49
+ }
50
+ this.logger.info(`${process.pid} STSServerPlugin: Start() Started ...`);
51
+ };
52
+ Stop = async () => {
53
+ this.logger.info(`${process.pid} STSServerPlugin: Stop() Stopping ...`);
54
+ console.log(process.pid, "SERVER CLOSE START");
55
+ await this.server?.Stop();
56
+ console.log(process.pid, "SERVER CLOSE COMPLETE");
57
+ this.logger.info(`${process.pid} STSServerPlugin: Stop() Stopped`);
58
+ };
59
+ #SetupSTSServer = () => {
60
+ switch (goptions.STSServerType) {
61
+ case "EXPRESS":
62
+ this.options.useTls = false;
63
+ return CreateSTSServer({
64
+ serverType: "EXPRESS",
65
+ options: this.options,
66
+ });
67
+ case "EXPRESS_TLS":
68
+ this.options.useTls = true;
69
+ return CreateSTSServer({
70
+ serverType: "EXPRESS_TLS",
71
+ options: this.options,
72
+ });
73
+ case "TCPRAW_TLS":
74
+ return CreateSTSServer({
75
+ serverType: "TCPRAW_TLS",
76
+ options: this.options,
77
+ });
78
+ case "JSONRPC2_TLS":
79
+ return CreateSTSServer({
80
+ serverType: "JSONRPC2_TLS",
81
+ options: this.options,
82
+ });
83
+ case "NONE":
84
+ return undefined;
85
+ }
86
+ throw new Error(`SetupSTSServer(): Unknown server type: [${goptions.STSServerType}]`);
87
+ };
88
+ }
89
+ //# sourceMappingURL=stsserverplugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stsserverplugin.js","sourceRoot":"","sources":["../../src/plugins/stsserverplugin.ts"],"names":[],"mappings":"AAAA,wFAAwF,CAAC,UAAU;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAOnD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAY,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAQrD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEpE,OAAO,EAAE,KAAK,EAA4B,MAAM,2BAA2B,CAAC;AAE5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,cAAc,CAClD,qBAAqB,CACxB,CAAC;AAEF,aAAa;AACb,MAAM,OAAO,eAAe;IACP,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACxC,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAE/C,OAAO,CAAyB;IACxC,YAAY,GAAG,oBAAoB,CAAC;IAC5B,MAAM,CAAc;IAE5B,OAAO,GAAG,CAAC,QAAkB,EAAE,OAA+B,EAAQ,EAAE;QACpE,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAErC;;;;;;UAME;QAEF,QAAQ,CAAC,QAAQ,CAAC;YACd,OAAO,EAAE,oBAAoB;YAC7B,QAAQ,EAAE,IAAI,CAAC,MAAM;SACxB,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,2BAA2B;IAC3B,KAAK,GAAG,KAAK,IAAI,EAAE;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,OAAO,CAAC,GAAG,wCAAwC,CACzD,CAAC;QACF,IAAI,CAAC;YACD,IAAI,CAAC,MAAM;gBACP,EAAE,aAAa,EAAE;gBACjB,EAAE,cAAc,CAAC,CAAC,KAAU,EAAE,KAAU,EAAE,EAAE;gBACxC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAC1B,KAAK,CAAC,sBAAsB,EAC5B;oBACI,GAAG,EAAE,KAAK;iBACe,CAChC,CAAC;YACN,CAAC,CAAC,CAAC;QACX,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,GAAG,OAAO,CAAC,GAAG,qCAAqC,KAAK,GAAG,CAC9D,CAAC;QACN,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,uCAAuC,CAAC,CAAC;IAC5E,CAAC,CAAC;IAEF,IAAI,GAAG,KAAK,IAAI,EAAE;QACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,uCAAuC,CAAC,CAAC;QAExE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;QAE/C,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QAE1B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;QAElD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,kCAAkC,CAAC,CAAC;IACvE,CAAC,CAAC;IAEF,eAAe,GAAG,GAA2B,EAAE;QAC3C,QAAQ,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC7B,KAAK,SAAS;gBACT,IAAI,CAAC,OAAoC,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC1D,OAAO,eAAe,CAAC;oBACnB,UAAU,EAAE,SAAS;oBACrB,OAAO,EAAE,IAAI,CAAC,OAAmC;iBACpD,CAAC,CAAC;YACP,KAAK,aAAa;gBACb,IAAI,CAAC,OAAoC,CAAC,MAAM,GAAG,IAAI,CAAC;gBACzD,OAAO,eAAe,CAAC;oBACnB,UAAU,EAAE,aAAa;oBACzB,OAAO,EAAE,IAAI,CAAC,OAAmC;iBACpD,CAAC,CAAC;YACP,KAAK,YAAY;gBACb,OAAO,eAAe,CAAC;oBACnB,UAAU,EAAE,YAAY;oBACxB,OAAO,EAAE,IAAI,CAAC,OAAkC;iBACnD,CAAC,CAAC;YACP,KAAK,cAAc;gBACf,OAAO,eAAe,CAAC;oBACnB,UAAU,EAAE,cAAc;oBAC1B,OAAO,EAAE,IAAI,CAAC,OAAmC;iBACpD,CAAC,CAAC;YACP,KAAK,MAAM;gBACP,OAAO,SAAS,CAAC;QACzB,CAAC;QACD,MAAM,IAAI,KAAK,CACX,2CAA2C,QAAQ,CAAC,aAAa,GAAG,CACvE,CAAC;IACN,CAAC,CAAC;CACL"}
@@ -0,0 +1,10 @@
1
+ import { STSLatencyController } from "./../controller/stslatencycontroller.js";
2
+ import { Router } from "express";
3
+ export class STSRootRoute {
4
+ router = Router();
5
+ constructor() {
6
+ const latencyController = new STSLatencyController();
7
+ this.router.get("/", latencyController.stslatency);
8
+ }
9
+ }
10
+ //# sourceMappingURL=stsrootroute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stsrootroute.js","sourceRoot":"","sources":["../../src/route/stsrootroute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,OAAO,YAAY;IACZ,MAAM,GAAG,MAAM,EAAE,CAAC;IAE3B;QACI,MAAM,iBAAiB,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAErD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC;CACJ"}