@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.
Files changed (167) hide show
  1. package/README.md +300 -319
  2. package/dist/commonTypes.js +1 -12
  3. package/dist/commonTypes.js.map +1 -1
  4. package/dist/exampleapp/app.js +238 -0
  5. package/dist/exampleapp/app.js.map +1 -0
  6. package/dist/index.js +11 -7
  7. package/dist/index.js.map +1 -1
  8. package/dist/logger/stsTransportLoggerSocket.js +5 -0
  9. package/dist/logger/stsTransportLoggerSocket.js.map +1 -1
  10. package/dist/{process → plugins}/clusterworkermanager.js +37 -36
  11. package/dist/plugins/clusterworkermanager.js.map +1 -0
  12. package/dist/plugins/pgpoolmanager.js +186 -0
  13. package/dist/plugins/pgpoolmanager.js.map +1 -0
  14. package/dist/{process → plugins}/servertypes/serverUtils.js.map +1 -1
  15. package/dist/{process → plugins}/servertypes/stsexpressserver.js +44 -19
  16. package/dist/plugins/servertypes/stsexpressserver.js.map +1 -0
  17. package/dist/{process → plugins}/servertypes/stsjsonrpcserver.js +2 -3
  18. package/dist/plugins/servertypes/stsjsonrpcserver.js.map +1 -0
  19. package/dist/{process → plugins}/servertypes/stsserverfactory.js +2 -2
  20. package/dist/plugins/servertypes/stsserverfactory.js.map +1 -0
  21. package/dist/{process → plugins}/servertypes/ststcprawserver.js +2 -2
  22. package/dist/plugins/servertypes/ststcprawserver.js.map +1 -0
  23. package/dist/plugins/stsclusterworkermanagerplugin.js +54 -0
  24. package/dist/plugins/stsclusterworkermanagerplugin.js.map +1 -0
  25. package/dist/plugins/stsconfigplugin.js +16 -0
  26. package/dist/plugins/stsconfigplugin.js.map +1 -0
  27. package/dist/plugins/stsexpresscontrollerplugin.js +47 -0
  28. package/dist/plugins/stsexpresscontrollerplugin.js.map +1 -0
  29. package/dist/plugins/stsinstrumentmanagerplugin.js +102 -0
  30. package/dist/plugins/stsinstrumentmanagerplugin.js.map +1 -0
  31. package/dist/plugins/stslatencymanager.js +122 -0
  32. package/dist/plugins/stslatencymanager.js.map +1 -0
  33. package/dist/plugins/stslatencyplugin.js +29 -0
  34. package/dist/plugins/stslatencyplugin.js.map +1 -0
  35. package/dist/plugins/stslifecycleplugin.js +48 -0
  36. package/dist/plugins/stslifecycleplugin.js.map +1 -0
  37. package/dist/plugins/stsloggerplugin.js +60 -0
  38. package/dist/plugins/stsloggerplugin.js.map +1 -0
  39. package/dist/{process/metrics.js → plugins/stsmetricsplugin.js} +33 -9
  40. package/dist/plugins/stsmetricsplugin.js.map +1 -0
  41. package/dist/plugins/stspgpoolmanagerplugin.js +67 -0
  42. package/dist/plugins/stspgpoolmanagerplugin.js.map +1 -0
  43. package/dist/plugins/stsserverplugin.js +89 -0
  44. package/dist/plugins/stsserverplugin.js.map +1 -0
  45. package/dist/route/stsrootroute.js +10 -0
  46. package/dist/route/stsrootroute.js.map +1 -0
  47. package/dist/stsapp.js +190 -0
  48. package/dist/stsapp.js.map +1 -0
  49. package/package.json +16 -23
  50. package/types/commonTypes.d.ts +28 -203
  51. package/types/commonTypes.d.ts.map +1 -1
  52. package/types/exampleapp/app.d.ts +2 -0
  53. package/types/exampleapp/app.d.ts.map +1 -0
  54. package/types/index.d.ts +11 -7
  55. package/types/index.d.ts.map +1 -1
  56. package/types/logger/stsTransportLoggerSocket.d.ts +1 -0
  57. package/types/logger/stsTransportLoggerSocket.d.ts.map +1 -1
  58. package/types/{process → plugins}/clusterworkermanager.d.ts +5 -1
  59. package/types/plugins/clusterworkermanager.d.ts.map +1 -0
  60. package/types/plugins/pgpoolmanager.d.ts +34 -0
  61. package/types/plugins/pgpoolmanager.d.ts.map +1 -0
  62. package/types/{process → plugins}/servertypes/serverUtils.d.ts.map +1 -1
  63. package/types/plugins/servertypes/stsexpressserver.d.ts +22 -0
  64. package/types/plugins/servertypes/stsexpressserver.d.ts.map +1 -0
  65. package/types/{process → plugins}/servertypes/stsjsonrpcserver.d.ts +1 -9
  66. package/types/plugins/servertypes/stsjsonrpcserver.d.ts.map +1 -0
  67. package/types/{process → plugins}/servertypes/stsserverfactory.d.ts +2 -4
  68. package/types/plugins/servertypes/stsserverfactory.d.ts.map +1 -0
  69. package/types/{process → plugins}/servertypes/ststcprawserver.d.ts +1 -9
  70. package/types/plugins/servertypes/ststcprawserver.d.ts.map +1 -0
  71. package/types/plugins/stsclusterworkermanagerplugin.d.ts +16 -0
  72. package/types/plugins/stsclusterworkermanagerplugin.d.ts.map +1 -0
  73. package/types/plugins/stsconfigplugin.d.ts +10 -0
  74. package/types/plugins/stsconfigplugin.d.ts.map +1 -0
  75. package/types/plugins/stsexpresscontrollerplugin.d.ts +25 -0
  76. package/types/plugins/stsexpresscontrollerplugin.d.ts.map +1 -0
  77. package/types/plugins/stsinstrumentmanagerplugin.d.ts +31 -0
  78. package/types/plugins/stsinstrumentmanagerplugin.d.ts.map +1 -0
  79. package/types/plugins/stslatencymanager.d.ts +24 -0
  80. package/types/plugins/stslatencymanager.d.ts.map +1 -0
  81. package/types/plugins/stslatencyplugin.d.ts +12 -0
  82. package/types/plugins/stslatencyplugin.d.ts.map +1 -0
  83. package/types/plugins/stslifecycleplugin.d.ts +25 -0
  84. package/types/plugins/stslifecycleplugin.d.ts.map +1 -0
  85. package/types/plugins/stsloggerplugin.d.ts +19 -0
  86. package/types/plugins/stsloggerplugin.d.ts.map +1 -0
  87. package/types/{process/metrics.d.ts → plugins/stsmetricsplugin.d.ts} +12 -5
  88. package/types/plugins/stsmetricsplugin.d.ts.map +1 -0
  89. package/types/plugins/stspgpoolmanagerplugin.d.ts +14 -0
  90. package/types/plugins/stspgpoolmanagerplugin.d.ts.map +1 -0
  91. package/types/plugins/stsserverplugin.d.ts +16 -0
  92. package/types/plugins/stsserverplugin.d.ts.map +1 -0
  93. package/types/route/stsrootroute.d.ts +5 -0
  94. package/types/route/stsrootroute.d.ts.map +1 -0
  95. package/types/stsapp.d.ts +16 -0
  96. package/types/stsapp.d.ts.map +1 -0
  97. package/dist/grpc/grpcServer.js +0 -415
  98. package/dist/grpc/grpcServer.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/processbase.js +0 -203
  110. package/dist/process/processbase.js.map +0 -1
  111. package/dist/process/prometheusmanager.js +0 -112
  112. package/dist/process/prometheusmanager.js.map +0 -1
  113. package/dist/process/serverprocessbase.js +0 -204
  114. package/dist/process/serverprocessbase.js.map +0 -1
  115. package/dist/process/servertypes/stsexpressserver.js.map +0 -1
  116. package/dist/process/servertypes/stsjsonrpcserver.js.map +0 -1
  117. package/dist/process/servertypes/stsserverfactory.js.map +0 -1
  118. package/dist/process/servertypes/ststcprawserver.js.map +0 -1
  119. package/dist/process/singleprocessbase.js +0 -48
  120. package/dist/process/singleprocessbase.js.map +0 -1
  121. package/dist/process/sysinfo.js +0 -56
  122. package/dist/process/sysinfo.js.map +0 -1
  123. package/dist/process/workerprocessbase.js +0 -35
  124. package/dist/process/workerprocessbase.js.map +0 -1
  125. package/dist/publishertransports/publishTransportUtils.js +0 -43
  126. package/dist/publishertransports/publishTransportUtils.js.map +0 -1
  127. package/dist/sysinfo/network.js +0 -31
  128. package/dist/sysinfo/network.js.map +0 -1
  129. package/dist/validation/errors.js +0 -7
  130. package/dist/validation/errors.js.map +0 -1
  131. package/types/grpc/grpcServer.d.ts +0 -31
  132. package/types/grpc/grpcServer.d.ts.map +0 -1
  133. package/types/process/clusterworkermanager.d.ts.map +0 -1
  134. package/types/process/datamanager.d.ts +0 -15
  135. package/types/process/datamanager.d.ts.map +0 -1
  136. package/types/process/latencyManager.d.ts +0 -10
  137. package/types/process/latencyManager.d.ts.map +0 -1
  138. package/types/process/logManager.d.ts +0 -9
  139. package/types/process/logManager.d.ts.map +0 -1
  140. package/types/process/masterprocessbase.d.ts +0 -13
  141. package/types/process/masterprocessbase.d.ts.map +0 -1
  142. package/types/process/metrics.d.ts.map +0 -1
  143. package/types/process/processbase.d.ts +0 -19
  144. package/types/process/processbase.d.ts.map +0 -1
  145. package/types/process/prometheusmanager.d.ts +0 -10
  146. package/types/process/prometheusmanager.d.ts.map +0 -1
  147. package/types/process/serverprocessbase.d.ts +0 -18
  148. package/types/process/serverprocessbase.d.ts.map +0 -1
  149. package/types/process/servertypes/stsexpressserver.d.ts +0 -34
  150. package/types/process/servertypes/stsexpressserver.d.ts.map +0 -1
  151. package/types/process/servertypes/stsjsonrpcserver.d.ts.map +0 -1
  152. package/types/process/servertypes/stsserverfactory.d.ts.map +0 -1
  153. package/types/process/servertypes/ststcprawserver.d.ts.map +0 -1
  154. package/types/process/singleprocessbase.d.ts +0 -14
  155. package/types/process/singleprocessbase.d.ts.map +0 -1
  156. package/types/process/sysinfo.d.ts +0 -8
  157. package/types/process/sysinfo.d.ts.map +0 -1
  158. package/types/process/workerprocessbase.d.ts +0 -8
  159. package/types/process/workerprocessbase.d.ts.map +0 -1
  160. package/types/publishertransports/publishTransportUtils.d.ts +0 -5
  161. package/types/publishertransports/publishTransportUtils.d.ts.map +0 -1
  162. package/types/sysinfo/network.d.ts +0 -4
  163. package/types/sysinfo/network.d.ts.map +0 -1
  164. package/types/validation/errors.d.ts +0 -7
  165. package/types/validation/errors.d.ts.map +0 -1
  166. /package/dist/{process → plugins}/servertypes/serverUtils.js +0 -0
  167. /package/types/{process → plugins}/servertypes/serverUtils.d.ts +0 -0
@@ -1,4 +1,4 @@
1
- import { ModelDelimeter, CheckValidChar, InjectionToken, } from "@nsshunt/stsutils";
1
+ import { ModelDelimeter, CheckValidChar, } from "@nsshunt/stsutils";
2
2
  export function CreateServiceProcessContext(serviceName, serviceVersion, serviceInstanceId, hostName, processId, parentProcessId) {
3
3
  const checkParams = [
4
4
  ["servicename", serviceName],
@@ -23,15 +23,4 @@ ${processId.toString()}${ModelDelimeter.COMPONENT_SEPERATOR}${parentProcessId.to
23
23
  parentProcessId: parentProcessId.toString(),
24
24
  };
25
25
  }
26
- export const AgentManagerToken = new InjectionToken("__STS__AgentManager");
27
- export const PublishInstrumentControllerToken = new InjectionToken("__STS__PublishInstrumentController");
28
- export const ProcessOptionsToken = new InjectionToken("__STS__ProcessOptions");
29
- export const DataManagerToken = new InjectionToken("__STS__DataManager");
30
- export const STSLoggerToken = new InjectionToken("__STS__STSLogger");
31
- export const LogManagerToken = new InjectionToken("__STS__LogManager");
32
- export const STSServerToken = new InjectionToken("__STS__STSServer");
33
- export const ProcessBaseToken = new InjectionToken("__STS__ProcessBase");
34
- export const ProcessMetricsToken = new InjectionToken("__STS__ProcessMetrics");
35
- export const STSTransportLoggerWinstonToken = new InjectionToken("__STS__STSTransportLoggerWinston");
36
- export const LatencyManagerToken = new InjectionToken("__STS__LatencyManager");
37
26
  //# sourceMappingURL=commonTypes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commonTypes.js","sourceRoot":"","sources":["../src/commonTypes.ts"],"names":[],"mappings":"AAQA,OAAO,EAEH,cAAc,EACd,cAAc,EAEd,cAAc,GACjB,MAAM,mBAAmB,CAAC;AA2C3B,MAAM,UAAU,2BAA2B,CACvC,WAAmB,EACnB,cAAsB,EACtB,iBAAyB,EACzB,QAAgB,EAChB,SAAiB,EACjB,eAAuB;IAEvB,MAAM,WAAW,GAAG;QAChB,CAAC,aAAa,EAAE,WAAW,CAAC;QAC5B,CAAC,gBAAgB,EAAE,cAAc,CAAC;QAClC,CAAC,UAAU,EAAE,QAAQ,CAAC;QACtB,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;KAC3C,CAAC;IAEF,4BAA4B;IAC5B,cAAc,CAAC,WAAW,CAAC,CAAC;IAE5B,OAAO;QACH,GAAG,EAAE;EACX,WAAW,GAAG,cAAc,CAAC,mBAAmB,GAAG,cAAc;EACjE,cAAc,CAAC,SAAS;EACxB,iBAAiB,GAAG,cAAc,CAAC,mBAAmB,GAAG,QAAQ;EACjE,cAAc,CAAC,aAAa;EAC5B,SAAS,CAAC,QAAQ,EAAE,GAAG,cAAc,CAAC,mBAAmB,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE;QAClF,WAAW;QACX,cAAc;QACd,iBAAiB;QACjB,QAAQ;QACR,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE;QAC/B,eAAe,EAAE,eAAe,CAAC,QAAQ,EAAE;KAC9C,CAAC;AACN,CAAC;AAuUD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAC/C,qBAAqB,CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,IAAI,cAAc,CAEhE,oCAAoC,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,cAAc,CACjD,uBAAuB,CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAC9C,oBAAoB,CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,CAC5C,kBAAkB,CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,cAAc,CAC7C,mBAAmB,CACtB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,CAC5C,kBAAkB,CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAC9C,oBAAoB,CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,cAAc,CACjD,uBAAuB,CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,cAAc,CAC5D,kCAAkC,CACrC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,cAAc,CACjD,uBAAuB,CAC1B,CAAC"}
1
+ {"version":3,"file":"commonTypes.js","sourceRoot":"","sources":["../src/commonTypes.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,cAAc,EACd,cAAc,GAGjB,MAAM,mBAAmB,CAAC;AAkC3B,MAAM,UAAU,2BAA2B,CACvC,WAAmB,EACnB,cAAsB,EACtB,iBAAyB,EACzB,QAAgB,EAChB,SAAiB,EACjB,eAAuB;IAEvB,MAAM,WAAW,GAAG;QAChB,CAAC,aAAa,EAAE,WAAW,CAAC;QAC5B,CAAC,gBAAgB,EAAE,cAAc,CAAC;QAClC,CAAC,UAAU,EAAE,QAAQ,CAAC;QACtB,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;KAC3C,CAAC;IAEF,4BAA4B;IAC5B,cAAc,CAAC,WAAW,CAAC,CAAC;IAE5B,OAAO;QACH,GAAG,EAAE;EACX,WAAW,GAAG,cAAc,CAAC,mBAAmB,GAAG,cAAc;EACjE,cAAc,CAAC,SAAS;EACxB,iBAAiB,GAAG,cAAc,CAAC,mBAAmB,GAAG,QAAQ;EACjE,cAAc,CAAC,aAAa;EAC5B,SAAS,CAAC,QAAQ,EAAE,GAAG,cAAc,CAAC,mBAAmB,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE;QAClF,WAAW;QACX,cAAc;QACd,iBAAiB;QACjB,QAAQ;QACR,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE;QAC/B,eAAe,EAAE,eAAe,CAAC,QAAQ,EAAE;KAC9C,CAAC;AACN,CAAC"}
@@ -0,0 +1,238 @@
1
+ // processbase.ts
2
+ /* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
3
+ import os from "node:os";
4
+ import { randomUUID } from "node:crypto";
5
+ import cluster from "node:cluster";
6
+ import chalk from "chalk";
7
+ import { StatusCodes } from "http-status-codes";
8
+ import { inject, emptyLogger, SetInjectionContextStore, } from "@nsshunt/stsutils";
9
+ import { NodeInjectionContextStore } from "@nsshunt/stsutils/node";
10
+ import { GetInstruments } from "@nsshunt/stsinstrumentmanagerclient";
11
+ import { goptions } from "@nsshunt/stsconfig";
12
+ import { STSConfigPlugin, STSLoggerPlugin, STSMetricsPlugin, STSServerPlugin, STSLatencyPlugin, STSInstrumentControllerPlugin, STSLoggerPluginToken, CreateServiceProcessContext, STSClusterWorkerManagerPlugin, STSExpressControllerPlugin, STSPGPoolManagerPlugin, STSLifeCyclePlugin, STSApp, } from "./../index.js";
13
+ // curl -k https://192.168.0.80:3003/stsrest01/v1
14
+ // curl -k https://192.168.0.80:3003/stsrest01/v1/latency
15
+ let pickedCol = undefined;
16
+ const randomColour = () => {
17
+ if (!pickedCol) {
18
+ const r = Math.floor(Math.random() * 256);
19
+ const g = Math.floor(Math.random() * 256);
20
+ const b = Math.floor(Math.random() * 256);
21
+ pickedCol = chalk.rgb(r, g, b);
22
+ }
23
+ return pickedCol;
24
+ };
25
+ let randomFreq = Math.floor(Math.random() * 900) + 100;
26
+ const outputLogs = (app) => {
27
+ let intv = undefined;
28
+ let indent = 0;
29
+ let direction = 1;
30
+ intv = setInterval(() => {
31
+ app.run(() => {
32
+ const logger = inject(STSLoggerPluginToken);
33
+ logger.info(randomColour()(`[${process.pid}] ${" ".repeat(indent)}[${indent.toString().padStart(2, " ")}] W: ==> Hello World 2`));
34
+ indent += direction;
35
+ if (indent === 10) {
36
+ direction = -1;
37
+ }
38
+ if (indent === 0) {
39
+ direction = 1;
40
+ }
41
+ });
42
+ }, randomFreq).unref();
43
+ app.on("Terminate", () => {
44
+ clearInterval(intv);
45
+ });
46
+ };
47
+ // IMPORTANT
48
+ // We are in nodejs, so use the async local storage version of the injector. This ensure that we
49
+ // can use inject in async code before or after any awaits
50
+ SetInjectionContextStore(new NodeInjectionContextStore());
51
+ if (cluster.isPrimary) {
52
+ const serviceProcessContext = CreateServiceProcessContext(goptions.rest01servicename, goptions.rest01serviceversion, randomUUID(), os.hostname(), process.pid, process.pid);
53
+ const app = new STSApp();
54
+ app.use(app.createPlugin(STSConfigPlugin));
55
+ app.use(app.createPlugin(STSLoggerPlugin), {
56
+ serviceInstanceId: serviceProcessContext.serviceInstanceId,
57
+ serviceName: serviceProcessContext.serviceName,
58
+ serviceVersion: serviceProcessContext.serviceVersion,
59
+ name: `${process.pid}[P]Logger`,
60
+ });
61
+ app.use(app.createPlugin(STSLifeCyclePlugin));
62
+ const instrumentControllerPluginOptions = {
63
+ consoleLogging: true,
64
+ instrumentDefinitions: GetInstruments("service"),
65
+ instrumentLogging: true,
66
+ serviceProcessContext: serviceProcessContext,
67
+ logger: emptyLogger,
68
+ };
69
+ app.use(app.createPlugin(STSInstrumentControllerPlugin), instrumentControllerPluginOptions);
70
+ app.use(app.createPlugin(STSMetricsPlugin), {
71
+ serviceName: goptions.rest01servicename,
72
+ });
73
+ // Use for single thread server
74
+ //@@app.use(app.createPlugin(STSServerPlugin), expressServerOptions);
75
+ app.use(app.createPlugin(STSLatencyPlugin), {
76
+ apiRoot: goptions.rest01apiroot,
77
+ endpoint: goptions.rest01endpoint,
78
+ port: parseInt(goptions.rest01hostport),
79
+ });
80
+ app.use(app.createPlugin(STSClusterWorkerManagerPlugin), {
81
+ workerEnvironmentVars: {
82
+ serviceInstanceId: serviceProcessContext.serviceInstanceId,
83
+ },
84
+ });
85
+ outputLogs(app);
86
+ await app.Start();
87
+ }
88
+ else {
89
+ const workerEnvironmentVars = JSON.parse(process.env["STS_GSD_SII"]);
90
+ const _serviceInstanceId = workerEnvironmentVars.serviceInstanceId;
91
+ const serviceProcessContext = CreateServiceProcessContext(goptions.rest01servicename, goptions.rest01serviceversion, _serviceInstanceId, os.hostname(), process.pid, process.ppid);
92
+ const expressServerOptions = {
93
+ httpsServerKeyPath: goptions.httpsserverkeypath,
94
+ httpsServerCertificatePath: goptions.httpsservercertpath,
95
+ listenPort: parseInt(goptions.rest01hostport),
96
+ endpoint: goptions.rest01endpoint,
97
+ apiRoot: goptions.rest01apiroot,
98
+ logger: emptyLogger,
99
+ serviceName: goptions.rest01servicename,
100
+ useTls: false,
101
+ prometheusSupport: false,
102
+ wssServer: false,
103
+ wssCustomPath: "",
104
+ useSocketIoRedisAdaptor: false,
105
+ socketIoRedisAdaptorUrl: goptions.socketIoRedisAdaptorUrl,
106
+ clusterMode: true,
107
+ };
108
+ const instrumentControllerPluginOptions = {
109
+ consoleLogging: true,
110
+ instrumentDefinitions: GetInstruments("service"),
111
+ instrumentLogging: true,
112
+ serviceProcessContext: serviceProcessContext,
113
+ logger: emptyLogger,
114
+ };
115
+ const app = new STSApp();
116
+ app.use(app.createPlugin(STSConfigPlugin));
117
+ app.use(app.createPlugin(STSLoggerPlugin), {
118
+ serviceInstanceId: serviceProcessContext.serviceInstanceId,
119
+ serviceName: serviceProcessContext.serviceName,
120
+ serviceVersion: serviceProcessContext.serviceVersion,
121
+ name: `${process.pid}[W]Logger`,
122
+ });
123
+ app.use(app.createPlugin(STSLifeCyclePlugin));
124
+ app.use(app.createPlugin(STSInstrumentControllerPlugin), instrumentControllerPluginOptions);
125
+ app.use(app.createPlugin(STSMetricsPlugin), {
126
+ serviceName: serviceProcessContext.serviceName,
127
+ });
128
+ const GetPoolConnectionString = (useDefaultDatabase) => {
129
+ if (goptions.dbhost) {
130
+ const hosts = goptions.dbhost.split(",");
131
+ if (useDefaultDatabase) {
132
+ return hosts
133
+ .map((host) => {
134
+ return `postgresql://${goptions.dbuser}:${goptions.dbpassword}@${host}/postgres`;
135
+ })
136
+ .join(",");
137
+ }
138
+ else {
139
+ return hosts
140
+ .map((host) => {
141
+ return `postgresql://${goptions.dbuser}:${goptions.dbpassword}@${host}/${goptions.database}`;
142
+ })
143
+ .join(",");
144
+ }
145
+ }
146
+ };
147
+ app.use(app.createPlugin(STSPGPoolManagerPlugin), {
148
+ ssl: false,
149
+ poolSize: 1,
150
+ poolConnectionString: GetPoolConnectionString(false),
151
+ });
152
+ app.use(app.createPlugin(STSServerPlugin), expressServerOptions);
153
+ // Use below for debugging only ...
154
+ /*
155
+ const stslatencyMiddlewareController: RequestHandler = async (
156
+ req,
157
+ res,
158
+ next
159
+ ) => {
160
+ try {
161
+ // IMPORTANT
162
+ // For the nodejs injector, use the below so we can safely use inject after async await code
163
+ // SetInjectionContextStore(new NodeInjectionContextStore());
164
+
165
+ // If we do not do the SetInjectionContextStore at startup time, the injector will be the browser/synchronous version
166
+ // In that case, we need to use inject before any awaits to ensure that the current injection context is always set correctly
167
+ //const logger = inject(STSLoggerPluginToken);
168
+ //const server = inject(STSServerPluginToken);
169
+
170
+ console.log(process.pid, "MIDDLEWARE ENTER", req.originalUrl);
171
+
172
+ await Sleep(500);
173
+
174
+ // This is only safe here in the nodejs injector becuase we are using the async local storage version
175
+ // and becuase of that, during startup (before new App() we need to do this;
176
+ // SetInjectionContextStore(new NodeInjectionContextStore());
177
+ const logger = inject(STSLoggerPluginToken);
178
+ const server = inject(STSServerPluginToken);
179
+
180
+ if ((server as STSExpressServer).IsDraining()) {
181
+ res.status(503).send({
182
+ error: "Service shutting down",
183
+ });
184
+ return;
185
+ }
186
+
187
+ console.log(process.pid, "MIDDLEWARE RESUMED", req.originalUrl);
188
+
189
+ if (logger) {
190
+ logger.debug(
191
+ `${req.method} ${req.url} ${req.baseUrl} ${req.originalUrl}`
192
+ );
193
+ }
194
+
195
+ console.log(process.pid, "MIDDLEWARE NEXT");
196
+
197
+ next();
198
+ } catch (error) {
199
+ console.error(error);
200
+ next(error);
201
+ }
202
+ };
203
+ */
204
+ const stslatencyController = async (_req, res, next) => {
205
+ try {
206
+ const retVal = {
207
+ data: `Ping Completed At: ${Date.now()}`,
208
+ pid: process.pid,
209
+ ppid: process.ppid,
210
+ };
211
+ return res.status(StatusCodes.OK).send(retVal);
212
+ }
213
+ catch (error) {
214
+ next(error);
215
+ }
216
+ };
217
+ app.use(app.createPlugin(STSExpressControllerPlugin), {
218
+ routes: [
219
+ {
220
+ method: "get",
221
+ mountPath: `${goptions.rest01apiroot}/`,
222
+ handlers: [stslatencyController],
223
+ },
224
+ {
225
+ method: "get",
226
+ mountPath: `${goptions.rest01apiroot}/latency`,
227
+ handlers: [
228
+ // Use below for debugging only ...
229
+ //stslatencyMiddlewareController,
230
+ stslatencyController,
231
+ ],
232
+ },
233
+ ],
234
+ });
235
+ outputLogs(app);
236
+ app.Start();
237
+ }
238
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/exampleapp/app.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,15 +1,19 @@
1
1
  export * from "./commonTypes.js";
2
- export * from "./process/masterprocessbase.js";
3
- export * from "./process/processbase.js";
4
- export * from "./process/serverprocessbase.js";
5
- export * from "./process/singleprocessbase.js";
6
- export * from "./process/workerprocessbase.js";
7
- export * from "./process/datamanager.js";
8
2
  export * from "./controller/stslatencycontroller.js";
9
3
  export * from "./route/stslatencyroute.js";
10
- export * from "./publishertransports/publishTransportUtils.js";
11
4
  export * from "./logger/stsTransportLoggerWinston.js";
12
5
  export * from "./logger/stsTransportWinston.js";
13
6
  export * from "./logger/stsTransportLoggerSocket.js";
14
7
  export * from "./logger/socketClientLogPublisher.js";
8
+ export * from "./plugins/stsclusterworkermanagerplugin.js";
9
+ export * from "./plugins/stsconfigplugin.js";
10
+ export * from "./plugins/stsexpresscontrollerplugin.js";
11
+ export * from "./plugins/stsinstrumentmanagerplugin.js";
12
+ export * from "./plugins/stslatencyplugin.js";
13
+ export * from "./plugins/stslifecycleplugin.js";
14
+ export * from "./plugins/stsloggerplugin.js";
15
+ export * from "./plugins/stsmetricsplugin.js";
16
+ export * from "./plugins/stspgpoolmanagerplugin.js";
17
+ export * from "./plugins/stsserverplugin.js";
18
+ export * from "./stsapp.js";
15
19
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gDAAgD,CAAC;AAC/D,cAAc,uCAAuC,CAAC;AACtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uCAAuC,CAAC;AACtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AAErD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAE7C,cAAc,aAAa,CAAC"}
@@ -25,5 +25,10 @@ export class STSTransportLoggerSocket extends Transport {
25
25
  this.emit("logged", info);
26
26
  callback();
27
27
  }
28
+ close() {
29
+ if (this.#socketIoClient) {
30
+ this.#socketIoClient.Disconnect();
31
+ }
32
+ }
28
33
  }
29
34
  //# sourceMappingURL=stsTransportLoggerSocket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stsTransportLoggerSocket.js","sourceRoot":"","sources":["../../src/logger/stsTransportLoggerSocket.ts"],"names":[],"mappings":"AAAA,kDAAkD,CAAC,UAAU;AAC7D,OAAO,SAAqC,MAAM,mBAAmB,CAAC;AAQtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAQzE,MAAM,OAAO,wBAAyB,SAAQ,SAAS;IACnD,QAAQ,CAAmC;IAC3C,eAAe,CAGb;IAEF,YAAY,IAAsC;QAC9C,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,wBAAwB,CAAC;YAChD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SACzB,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED,GAAG,CAAC,IAAS,EAAE,QAAa;QACxB,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAC7B,iBAAiB,EACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,EACnB;YACI,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;aACvB;SACJ,CACJ,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1B,QAAQ,EAAE,CAAC;IACf,CAAC;CACJ"}
1
+ {"version":3,"file":"stsTransportLoggerSocket.js","sourceRoot":"","sources":["../../src/logger/stsTransportLoggerSocket.ts"],"names":[],"mappings":"AAAA,kDAAkD,CAAC,UAAU;AAC7D,OAAO,SAAqC,MAAM,mBAAmB,CAAC;AAQtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAQzE,MAAM,OAAO,wBAAyB,SAAQ,SAAS;IACnD,QAAQ,CAAmC;IAC3C,eAAe,CAGb;IAEF,YAAY,IAAsC;QAC9C,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,wBAAwB,CAAC;YAChD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SACzB,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED,GAAG,CAAC,IAAS,EAAE,QAAa;QACxB,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAC7B,iBAAiB,EACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,EACnB;YACI,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;aACvB;SACJ,CACJ,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1B,QAAQ,EAAE,CAAC;IACf,CAAC;IAEM,KAAK;QACR,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;QACtC,CAAC;IACL,CAAC;CACJ"}
@@ -4,18 +4,19 @@ import cluster from "node:cluster";
4
4
  import { goptions } from "@nsshunt/stsconfig";
5
5
  import chalk from "chalk";
6
6
  import { Gauge } from "@nsshunt/stsobservability";
7
- import { ProcessMetricsToken, LogManagerToken, } from "./../commonTypes.js";
8
- import { ProcessOptionsToken } from "./../commonTypes.js";
9
7
  import { inject } from "@nsshunt/stsutils";
10
8
  import { TinyEmitter } from "tiny-emitter";
9
+ import { STSLoggerPluginToken } from "./stsloggerplugin.js";
10
+ import { STSMetricsPluginToken } from "./stsmetricsplugin.js";
11
11
  export class ClusterWorkerManager extends TinyEmitter {
12
12
  #killWorkers = {};
13
13
  #workers = 1; // Start at 1 becuase of main thread
14
- metrics = inject(ProcessMetricsToken);
15
- options = inject(ProcessOptionsToken);
16
- loggerManager = inject(LogManagerToken);
17
- constructor() {
14
+ metrics = inject(STSMetricsPluginToken);
15
+ options;
16
+ loggerManager = inject(STSLoggerPluginToken);
17
+ constructor(options) {
18
18
  super();
19
+ this.options = options;
19
20
  cluster.setupPrimary({
20
21
  serialization: "advanced",
21
22
  });
@@ -24,33 +25,33 @@ export class ClusterWorkerManager extends TinyEmitter {
24
25
  #SetupClusterEvents = () => {
25
26
  cluster.on("listening", (worker, address) => {
26
27
  this.emit("clusterListening", worker, address);
27
- this.loggerManager.LogInfoMessage(`Worker process ${worker.process.pid} is listening at address: ${JSON.stringify(address)}`);
28
+ this.loggerManager.info(`Worker process ${worker.process.pid} is listening at address: ${JSON.stringify(address)}`);
28
29
  });
29
30
  //Setting up lifecycle event listeners for worker processes
30
31
  cluster.on("online", (worker) => {
31
32
  this.emit("clusterOnline", worker);
32
- this.loggerManager.LogInfoMessage(`Worker process ${worker.process.pid} is online`);
33
+ this.loggerManager.info(`Worker process ${worker.process.pid} is online`);
33
34
  });
34
35
  cluster.on("exit", (worker, code, signal) => {
35
36
  this.emit("clusterExit", worker, code, signal);
36
37
  if ((code !== null && code === 0) || signal === "SIGINT") {
37
- this.loggerManager.LogInfoMessage(chalk.green(`Process ${worker.process.pid} terminated gracefully with code: ${code}, signal: ${signal}`));
38
+ this.loggerManager.info(chalk.green(`${process.pid} Process ${worker.process.pid} terminated gracefully with code: ${code}, signal: ${signal}`));
38
39
  this.DecWorkers();
39
40
  }
40
41
  else if ((code !== null && code === 15) || signal === "SIGTERM") {
41
42
  this.DecWorkers();
42
- this.loggerManager.LogInfoMessage(chalk.red(`Process ${worker.process.pid} terminated with code: ${code}, signal: ${signal}`));
43
+ this.loggerManager.info(chalk.red(`${process.pid} Process ${worker.process.pid} terminated with code: ${code}, signal: ${signal}`));
43
44
  }
44
45
  else {
45
46
  this.DecWorkers();
46
- this.loggerManager.LogInfoMessage(chalk.red(`worker ${worker.process.pid} died`));
47
- this.loggerManager.LogInfoMessage(chalk.red(`code: ${code}`));
48
- this.loggerManager.LogInfoMessage(chalk.red(`signal: ${signal}`));
49
- this.loggerManager.LogInfoMessage(chalk.red("process terminated in an error state"));
47
+ this.loggerManager.info(chalk.red(`${process.pid} worker ${worker.process.pid} died`));
48
+ this.loggerManager.info(chalk.red(`code: ${code}`));
49
+ this.loggerManager.info(chalk.red(`signal: ${signal}`));
50
+ this.loggerManager.info(chalk.red(`${process.pid} process terminated in an error state`));
50
51
  //if (goptions.respawnOnFail === true && !this.shuttingDown) {
51
52
  //@@ check shutdown
52
53
  if (goptions.respawnOnFail === true) {
53
- this.loggerManager.LogInfoMessage(chalk.magenta(`Attemping to respawn worker`));
54
+ this.loggerManager.info(chalk.magenta(`${process.pid} Attemping to respawn worker`));
54
55
  return this.SpawnWorker();
55
56
  }
56
57
  }
@@ -61,7 +62,7 @@ export class ClusterWorkerManager extends TinyEmitter {
61
62
  if (cluster.workers && cluster.workers[id]) {
62
63
  const worker = cluster.workers[id];
63
64
  if (worker.process) {
64
- this.loggerManager.LogInfoMessage(chalk.grey(`Sending terminate message `) +
65
+ this.loggerManager.info(chalk.grey(`Sending terminate message `) +
65
66
  chalk.yellow(`(initiated by ${signal})`) +
66
67
  chalk.grey(` for worker PID: ${worker.process.pid}`));
67
68
  const command = killProcess
@@ -72,23 +73,23 @@ export class ClusterWorkerManager extends TinyEmitter {
72
73
  //worker.process.send( { command } );
73
74
  }
74
75
  catch (error) {
75
- this.loggerManager.LogInfoMessage(chalk.red(`MasterProcessBase:#_KillWorker() (1): id: [${id}], signal: [${signal}], killProcess: [${killProcess}], error: [${error}]`));
76
+ this.loggerManager.info(chalk.red(`${process.pid} MasterProcessBase:#_KillWorker() (1): id: [${id}], signal: [${signal}], killProcess: [${killProcess}], error: [${error}]`));
76
77
  return false;
77
78
  }
78
79
  return true;
79
80
  }
80
81
  else {
81
- this.loggerManager.LogInfoMessage(chalk.red(`MasterProcessBase:#_KillWorker(): Could not kill worker with id: [${id}]. The process does not exists`));
82
+ this.loggerManager.info(chalk.red(`${process.pid} MasterProcessBase:#_KillWorker(): Could not kill worker with id: [${id}]. The process does not exists`));
82
83
  return false;
83
84
  }
84
85
  }
85
86
  else {
86
- this.loggerManager.LogInfoMessage(chalk.red(`MasterProcessBase:#_KillWorker(): Could not kill worker with id: [${id}]. Worker does not exist within workers collection`));
87
+ this.loggerManager.info(chalk.red(`${process.pid} MasterProcessBase:#_KillWorker(): Could not kill worker with id: [${id}]. Worker does not exist within workers collection`));
87
88
  return false;
88
89
  }
89
90
  }
90
91
  catch (error) {
91
- this.loggerManager.LogInfoMessage(chalk.red(`MasterProcessBase:#_KillWorker() (2): id: [${id}], signal: [${signal}], killProcess: [${killProcess}], error: [${error}]`));
92
+ this.loggerManager.info(chalk.red(`${process.pid} MasterProcessBase:#_KillWorker() (2): id: [${id}], signal: [${signal}], killProcess: [${killProcess}], error: [${error}]`));
92
93
  return false;
93
94
  }
94
95
  };
@@ -117,19 +118,19 @@ export class ClusterWorkerManager extends TinyEmitter {
117
118
  }
118
119
  }
119
120
  else {
120
- this.loggerManager.LogInfoMessage(chalk.yellow(`MasterProcessBase:KillWorker(): Not allowed to kill the last worker process.`));
121
+ this.loggerManager.info(chalk.yellow(`${process.pid} MasterProcessBase:KillWorker(): Not allowed to kill the last worker process.`));
121
122
  return false;
122
123
  }
123
124
  }
124
125
  catch (error) {
125
- this.loggerManager.LogInfoMessage(chalk.red(`MasterProcessBase:KillWorker(): id: [${id}], signal: [${signal}], killProcess: [${killProcess}], error: [${error}]`));
126
+ this.loggerManager.info(chalk.red(`${process.pid} MasterProcessBase:KillWorker(): id: [${id}], signal: [${signal}], killProcess: [${killProcess}], error: [${error}]`));
126
127
  return false;
127
128
  }
128
129
  };
129
130
  KillWorkers = (signal, keepOne) => {
130
- const logPrefix = `MasterProcessBase:KillWorkers():${process.pid}:`;
131
+ const logPrefix = `${process.pid} MasterProcessBase:KillWorkers():`;
131
132
  try {
132
- this.loggerManager.LogInfoMessage(`${logPrefix} Killing Workers.`);
133
+ this.loggerManager.info(`${logPrefix} Killing Workers.`);
133
134
  const keepOneAlive = keepOne ? keepOne : false;
134
135
  let skippedFirst = false;
135
136
  const sortedIdList = [];
@@ -146,7 +147,7 @@ export class ClusterWorkerManager extends TinyEmitter {
146
147
  });
147
148
  }
148
149
  catch (error) {
149
- this.loggerManager.LogInfoMessage(chalk.red(`${logPrefix} signal: [${signal}], keepOne: [${keepOne}], error: [${error}]`));
150
+ this.loggerManager.info(chalk.red(`${logPrefix} signal: [${signal}], keepOne: [${keepOne}], error: [${error}]`));
150
151
  }
151
152
  };
152
153
  #UpdateWorkersInstrument = () => {
@@ -158,19 +159,19 @@ export class ClusterWorkerManager extends TinyEmitter {
158
159
  };
159
160
  IncWorkers = () => {
160
161
  this.#workers++;
161
- this.loggerManager.LogDebugMessage(` Inc Workers. Total thread count: [${this.#workers}]`);
162
+ this.loggerManager.info(` Inc Workers. Total thread count: [${this.#workers}]`);
162
163
  this.#UpdateWorkersInstrument();
163
164
  };
164
165
  DecWorkers = () => {
165
166
  this.#workers--;
166
- this.loggerManager.LogDebugMessage(` Dec Workers. Total thread count: [${this.#workers}]`);
167
+ this.loggerManager.info(`${process.pid} Dec Workers. Total thread count: [${this.#workers}]`);
167
168
  this.#UpdateWorkersInstrument();
168
169
  };
169
170
  AddWorker = (options) => {
170
171
  const workerId = this.SpawnWorker(options);
171
- this.loggerManager.LogDebugMessage(chalk.yellow(` Spawned worker with id: [${workerId}]`));
172
+ this.loggerManager.info(chalk.yellow(`${process.pid} Spawned worker with id: [${workerId}]`));
172
173
  if (options) {
173
- this.loggerManager.LogDebugMessage(chalk.yellow(` Options: [${JSON.stringify(options)}]`));
174
+ this.loggerManager.info(chalk.yellow(`${process.pid} Options: [${JSON.stringify(options)}]`));
174
175
  }
175
176
  return workerId;
176
177
  };
@@ -180,7 +181,7 @@ export class ClusterWorkerManager extends TinyEmitter {
180
181
  // Remove the assigned loggers (this will need to be re-created in the worker thread)
181
182
  delete tempOptions.logger;
182
183
  delete tempOptions.publisherLogger;
183
- workerEnv["STS_GSD_SII"] = JSON.stringify(tempOptions);
184
+ workerEnv["STS_GSD_SII"] = JSON.stringify(this.options.workerEnvironmentVars);
184
185
  if (spawnWorkerOptions) {
185
186
  workerEnv["STS_GSD_OPTIONS"] = JSON.stringify(spawnWorkerOptions);
186
187
  }
@@ -189,19 +190,19 @@ export class ClusterWorkerManager extends TinyEmitter {
189
190
  worker.on("exit", (code, signal) => {
190
191
  this.emit("workerExit", code, signal);
191
192
  if (signal) {
192
- this.loggerManager.LogInfoMessage(`Worker: ${worker.process.pid} was killed by signal: ${signal}`);
193
+ this.loggerManager.info(`${process.pid} Worker: ${worker.process.pid} was killed by signal: ${signal}`);
193
194
  }
194
195
  else if (code !== 0) {
195
- this.loggerManager.LogInfoMessage(`Worker: ${worker.process.pid} exited with error code: ${code}`);
196
+ this.loggerManager.info(`${process.pid} Worker: ${worker.process.pid} exited with error code: ${code}`);
196
197
  }
197
198
  else {
198
- this.loggerManager.LogInfoMessage(`Worker: ${worker.process.pid} exited successfully, code: ${code}, signal: ${signal}`);
199
+ this.loggerManager.info(`${process.pid} Worker: ${worker.process.pid} exited successfully, code: ${code}, signal: ${signal}`);
199
200
  }
200
201
  });
201
202
  worker.on("error", (error) => {
202
203
  this.emit("workerError", error);
203
- const message = chalk.red(`#SpawnWorker():worker.on('error'): Error: [${error}]`);
204
- this.loggerManager.LogErrorMessage(message);
204
+ const message = chalk.red(`${process.pid} #SpawnWorker():worker.on('error'): Error: [${error}]`);
205
+ this.loggerManager.info(message);
205
206
  });
206
207
  this.emit("workerAdded", worker.id);
207
208
  return worker.id;
@@ -215,7 +216,7 @@ export class ClusterWorkerManager extends TinyEmitter {
215
216
  worker.send({ command, data });
216
217
  }
217
218
  catch (error) {
218
- this.loggerManager.LogErrorMessage(`ClusterWorkerManager:BroadcastDataToWorkers(): Unable to send message to worker ${worker.id}: ${error}`);
219
+ this.loggerManager.info(`${process.pid} ClusterWorkerManager:BroadcastDataToWorkers(): Unable to send message to worker ${worker.id}: ${error}`);
219
220
  }
220
221
  }
221
222
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clusterworkermanager.js","sourceRoot":"","sources":["../../src/plugins/clusterworkermanager.ts"],"names":[],"mappings":"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"}