@nsshunt/stsappframework 3.1.96 → 3.1.98

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.
@@ -16,7 +16,7 @@ jobs:
16
16
  - uses: actions/checkout@v4
17
17
  - uses: actions/setup-node@v4
18
18
  with:
19
- node-version: 20
19
+ node-version: 21
20
20
  - run: npm ci
21
21
  - run: npm run lint
22
22
  - run: npm run build
@@ -29,7 +29,7 @@ jobs:
29
29
  - uses: actions/checkout@v4
30
30
  - uses: actions/setup-node@v4
31
31
  with:
32
- node-version: 20
32
+ node-version: 21
33
33
  registry-url: https://registry.npmjs.org/
34
34
  - run: npm ci
35
35
  - run: npm run build
@@ -0,0 +1,100 @@
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.IPCMessageManager = void 0;
7
+ /* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const uuid_1 = require("uuid");
10
+ /**
11
+ * todo
12
+ * @typedef {Object} options - todo
13
+ * @property {boolean} [wssServer=false] - Create a web socket server on this worker instance
14
+ */
15
+ class IPCMessageManager {
16
+ #options;
17
+ #inflightMessages = {};
18
+ #messageHeader;
19
+ constructor(options) {
20
+ this.#options = options;
21
+ this.#messageHeader = `__STS__${this.#options.namespace}__${(0, uuid_1.v4)()}`;
22
+ }
23
+ #LogDebugMessage(message) {
24
+ this.#options.logger.debug(message);
25
+ }
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
27
+ ReceivedMessageFromMaster(msg) {
28
+ // Override in subclass if required
29
+ }
30
+ SendMessage = (payload) => {
31
+ return new Promise((resolve, reject) => {
32
+ this.#SendMessage(payload, (payload) => {
33
+ resolve(payload.responsePayload);
34
+ }, (payload) => {
35
+ reject(payload.requestPayload);
36
+ });
37
+ });
38
+ };
39
+ #SendMessage = (payload, callBack, errorCallBack) => {
40
+ const messageId = (0, uuid_1.v4)();
41
+ const requestPayload = {
42
+ header: this.#messageHeader,
43
+ messageId,
44
+ requestPayload: payload,
45
+ responsePayload: {},
46
+ pid: process.pid.toString(),
47
+ messageType: 'REQUEST'
48
+ };
49
+ const messageRecord = {
50
+ messageId,
51
+ requestPayload,
52
+ responses: {}, // record
53
+ startTime: performance.now(),
54
+ endTime: 0,
55
+ timeout: setTimeout(() => {
56
+ this.#LogDebugMessage(chalk_1.default.red(`Timeout has occurred after: [${this.#options.requestResponseMessageTimeout}]ms with message id: [${messageRecord.messageId}]. Details: [${JSON.stringify(this.#inflightMessages[messageRecord.messageId].requestPayload)}]`));
57
+ setTimeout(() => {
58
+ delete this.#inflightMessages[messageRecord.messageId];
59
+ }, 0).unref();
60
+ errorCallBack(requestPayload);
61
+ }, this.#options.requestResponseMessageTimeout).unref(), // max message timeout allowed
62
+ callBack,
63
+ errorCallBack
64
+ };
65
+ this.#inflightMessages[messageRecord.messageId] = messageRecord;
66
+ //this.#LogDebugMessage(chalk.cyan(`sending: [${JSON.stringify(requestPayload)}]`));
67
+ this.#options.messageSender(requestPayload);
68
+ };
69
+ ProcessMessage = (msg) => {
70
+ if (msg.header && msg.header.localeCompare(this.#messageHeader) === 0) {
71
+ const message = msg;
72
+ if (this.#inflightMessages[message.messageId]) {
73
+ const inFlightMessageRecord = this.#inflightMessages[message.messageId];
74
+ inFlightMessageRecord.responses[message.pid] = { ...message };
75
+ inFlightMessageRecord.endTime = performance.now();
76
+ clearTimeout(inFlightMessageRecord.timeout);
77
+ //this.#LogDebugMessage(chalk.green(`received: [${JSON.stringify(message)}]`));
78
+ inFlightMessageRecord.callBack(message);
79
+ delete this.#inflightMessages[message.messageId];
80
+ }
81
+ else {
82
+ throw new Error(`Could not find Request/Response message with id: [${message.messageId}]`);
83
+ }
84
+ }
85
+ };
86
+ Start = () => {
87
+ this.#messageHeader = `__STS__${this.#options.namespace}__${(0, uuid_1.v4)()}`;
88
+ };
89
+ Stop = () => {
90
+ // Kill in-flight messages
91
+ for (const [, iPCMessageProcessorWorkerRecord] of Object.entries(this.#inflightMessages)) {
92
+ if (iPCMessageProcessorWorkerRecord.timeout) {
93
+ clearTimeout(iPCMessageProcessorWorkerRecord.timeout);
94
+ }
95
+ }
96
+ this.#inflightMessages = {};
97
+ };
98
+ }
99
+ exports.IPCMessageManager = IPCMessageManager;
100
+ //# sourceMappingURL=ipcMessageManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipcMessageManager.js","sourceRoot":"","sources":["../src/ipcMessageManager.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.IPCMessageProcessorPrimary = void 0;
7
- const chalk_1 = __importDefault(require("chalk"));
4
+ /* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
5
+ const stsutils_1 = require("@nsshunt/stsutils");
6
+ const ipcMessageManager_1 = require("./ipcMessageManager");
8
7
  /**
9
8
  * todo
10
9
  * @typedef {Object} options - todo
@@ -12,28 +11,49 @@ const chalk_1 = __importDefault(require("chalk"));
12
11
  */
13
12
  class IPCMessageProcessorPrimary {
14
13
  #options;
14
+ #ipcMessageManager;
15
15
  constructor(options) {
16
16
  this.#options = options;
17
+ const ipcMessageManagerOptions = {
18
+ logger: stsutils_1.defaultLogger,
19
+ requestResponseMessageTimeout: 2000,
20
+ namespace: options.namespace,
21
+ messageSender: (payload) => {
22
+ options.worker.send(payload);
23
+ }
24
+ };
25
+ this.#ipcMessageManager = new ipcMessageManager_1.IPCMessageManager(ipcMessageManagerOptions);
17
26
  }
18
- #LogDebugMessage(message) {
19
- this.#options.logger.debug(message);
20
- }
27
+ // Process a message recieved from a worker
21
28
  #processMessage = async (worker, msg) => {
22
29
  if (msg.header) {
23
30
  const checkName = `__STS__${this.#options.namespace}__`;
24
31
  if (msg.header.includes(checkName)) {
25
32
  const message = msg;
26
- message.responsePayload = await this.#options.processCommand(message);
27
- this.#LogDebugMessage(chalk_1.default.magenta(`sending: [${JSON.stringify(message)}]`));
28
- worker.send(message);
33
+ if (msg.messageType.localeCompare('REQUEST') === 0) {
34
+ message.responsePayload = await this.#options.processCommand(message);
35
+ message.messageType = 'RESPONSE';
36
+ //this.#LogDebugMessage(chalk.magenta(`sending: [${JSON.stringify(message)}]`))
37
+ worker.send(message);
38
+ }
39
+ else {
40
+ // Received a response (to my request)
41
+ this.#ipcMessageManager.ProcessMessage(msg);
42
+ }
29
43
  }
30
44
  }
31
45
  };
46
+ SendMessage = (payload) => {
47
+ return this.#ipcMessageManager.SendMessage(payload);
48
+ };
32
49
  Start = (worker) => {
50
+ this.#ipcMessageManager.Start();
51
+ // Receive a message to process from a worker
33
52
  worker.on('message', (payload) => this.#processMessage(worker, payload));
34
53
  };
35
54
  Stop = (worker) => {
36
55
  worker.off('message', (payload) => this.#processMessage(worker, payload));
56
+ this.#ipcMessageManager.Stop();
37
57
  };
38
58
  }
39
59
  exports.IPCMessageProcessorPrimary = IPCMessageProcessorPrimary;
@@ -1 +1 @@
1
- {"version":3,"file":"ipcMessageProcessorPrimary.js","sourceRoot":"","sources":["../src/ipcMessageProcessorPrimary.ts"],"names":[],"mappings":";;;;;;AAEA,kDAA0B;AAW1B;;;;GAIG;AACH,MAAa,0BAA0B;IAEnC,QAAQ,CAA8B;IAEtC,YAAY,OAAoC;QAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,gBAAgB,CAAC,OAAY;QACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,eAAe,GAAG,KAAK,EAAE,MAAc,EAAE,GAAQ,EAAE,EAAE;QACjD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,UAAU,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC;YACxD,IAAK,GAAG,CAAC,MAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAI,GAAsC,CAAC;gBACxD,OAAO,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBAEtE,IAAI,CAAC,gBAAgB,CAAC,eAAK,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC7E,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;IACL,CAAC,CAAA;IAED,KAAK,GAAG,CAAC,MAAc,EAAE,EAAE;QACvB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAA;IAED,IAAI,GAAG,CAAC,MAAc,EAAE,EAAE;QACtB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAA;CACJ;AAhCD,gEAgCC"}
1
+ {"version":3,"file":"ipcMessageProcessorPrimary.js","sourceRoot":"","sources":["../src/ipcMessageProcessorPrimary.ts"],"names":[],"mappings":";;;AAAA,kDAAkD,CAAE,UAAU;AAC9D,gDAAyE;AAMzE,2DAAiF;AAQjF;;;;GAIG;AACH,MAAa,0BAA0B;IAEnC,QAAQ,CAA8B;IACtC,kBAAkB,CAAoB;IAEtC,YAAY,OAAoC;QAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,MAAM,wBAAwB,GAA6B;YACvD,MAAM,EAAE,wBAAa;YACrB,6BAA6B,EAAE,IAAI;YACnC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,CAAC,OAAuC,EAAE,EAAE;gBACtD,OAAO,CAAC,MAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;SACJ,CAAA;QACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,qCAAiB,CAAC,wBAAwB,CAAC,CAAC;IAC9E,CAAC;IAED,2CAA2C;IAC3C,eAAe,GAAG,KAAK,EAAE,MAAc,EAAE,GAAQ,EAAE,EAAE;QACjD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,UAAU,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC;YACxD,IAAK,GAAG,CAAC,MAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAI,GAAsC,CAAC;gBACxD,IAAI,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjD,OAAO,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;oBACtE,OAAO,CAAC,WAAW,GAAG,UAAU,CAAA;oBAChC,+EAA+E;oBAC/E,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACJ,sCAAsC;oBACtC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAChD,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC,CAAA;IAED,WAAW,GAAG,CAAC,OAAmB,EAAuB,EAAE;QACvD,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC,CAAA;IAED,KAAK,GAAG,CAAC,MAAc,EAAE,EAAE;QACvB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAChC,6CAA6C;QAC7C,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAA;IAED,IAAI,GAAG,CAAC,MAAc,EAAE,EAAE;QACtB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC,CAAA;CACJ;AApDD,gEAoDC"}
@@ -1,99 +1,56 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.IPCMessageProcessorWorker = void 0;
7
4
  /* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
8
- const chalk_1 = __importDefault(require("chalk"));
9
- const uuid_1 = require("uuid");
10
- /**
11
- * todo
12
- * @typedef {Object} options - todo
13
- * @property {boolean} [wssServer=false] - Create a web socket server on this worker instance
14
- */
5
+ const stsutils_1 = require("@nsshunt/stsutils");
6
+ const ipcMessageManager_1 = require("./ipcMessageManager");
15
7
  class IPCMessageProcessorWorker {
16
8
  #options;
17
- #inflightMessages = {};
18
- #messageHeader;
9
+ #ipcMessageManager;
19
10
  constructor(options) {
20
11
  this.#options = options;
21
- this.#messageHeader = `__STS__${this.#options.namespace}__${(0, uuid_1.v4)()}`;
22
- }
23
- #LogDebugMessage(message) {
24
- this.#options.logger.debug(message);
25
- }
26
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
27
- ReceivedMessageFromMaster(msg) {
28
- // Override in subclass if required
29
- }
30
- SendMessage = (payload) => {
31
- return new Promise((resolve, reject) => {
32
- this.#SendMessageToParentProcess(payload, (payload) => {
33
- resolve(payload);
34
- }, (payload) => {
35
- reject(payload);
36
- });
37
- });
38
- };
39
- #SendMessageToParentProcess = (payload, callBack, errorCallBack) => {
40
- const messageId = (0, uuid_1.v4)();
41
- const requestPayload = {
42
- header: this.#messageHeader,
43
- messageId,
44
- requestPayload: payload,
45
- responsePayload: {},
46
- pid: process.pid.toString()
47
- };
48
- const messageRecord = {
49
- messageId,
50
- requestPayload,
51
- responses: {}, // record
52
- startTime: performance.now(),
53
- endTime: 0,
54
- timeout: setTimeout(() => {
55
- this.#LogDebugMessage(chalk_1.default.red(`Timeout has occurred after: [${this.#options.requestResponseMessageTimeout}]ms with message id: [${messageRecord.messageId}]. Details: [${JSON.stringify(this.#inflightMessages[messageRecord.messageId].requestPayload)}]`));
56
- setTimeout(() => {
57
- delete this.#inflightMessages[messageRecord.messageId];
58
- }, 0).unref();
59
- errorCallBack(requestPayload);
60
- }, this.#options.requestResponseMessageTimeout).unref(), // max message timeout allowed
61
- callBack,
62
- errorCallBack
63
- };
64
- this.#inflightMessages[messageRecord.messageId] = messageRecord;
65
- this.#LogDebugMessage(chalk_1.default.cyan(`sending: [${JSON.stringify(requestPayload)}]`));
66
- process.send(requestPayload);
67
- };
68
- #processMessage = (msg) => {
69
- if (msg.header && msg.header.localeCompare(this.#messageHeader) === 0) {
70
- const message = msg;
71
- if (this.#inflightMessages[message.messageId]) {
72
- const inFlightMessageRecord = this.#inflightMessages[message.messageId];
73
- inFlightMessageRecord.responses[message.pid] = { ...message };
74
- inFlightMessageRecord.endTime = performance.now();
75
- this.#LogDebugMessage(chalk_1.default.green(`received: [${JSON.stringify(message)}]`));
76
- inFlightMessageRecord.callBack(message);
12
+ const ipcMessageManagerOptions = {
13
+ logger: stsutils_1.defaultLogger,
14
+ requestResponseMessageTimeout: options.requestResponseMessageTimeout,
15
+ namespace: options.namespace,
16
+ messageSender: (payload) => {
17
+ process.send(payload);
77
18
  }
78
- else {
79
- throw new Error(`Could not find Request/Response message with id: [${message.messageId}]`);
19
+ };
20
+ this.#ipcMessageManager = new ipcMessageManager_1.IPCMessageManager(ipcMessageManagerOptions);
21
+ }
22
+ // Process a message recieved from the primary thread
23
+ #processMessage = async (msg) => {
24
+ if (msg.header) {
25
+ const checkName = `__STS__${this.#options.namespace}__`;
26
+ if (msg.header.includes(checkName)) {
27
+ const message = msg;
28
+ if (msg.messageType.localeCompare('REQUEST') === 0) {
29
+ message.responsePayload = await this.#options.processCommand(message);
30
+ message.messageType = 'RESPONSE';
31
+ //this.#LogDebugMessage(chalk.magenta(`sending: [${JSON.stringify(message)}]`))
32
+ process.send(message);
33
+ }
34
+ else {
35
+ // Received a response (to my request)
36
+ this.#ipcMessageManager.ProcessMessage(msg);
37
+ }
80
38
  }
81
39
  }
82
40
  };
41
+ SendMessage = (payload) => {
42
+ return this.#ipcMessageManager.SendMessage(payload);
43
+ };
83
44
  Start = () => {
84
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
- this.#messageHeader = `__STS__${this.#options.namespace}__${(0, uuid_1.v4)()}`;
45
+ this.#ipcMessageManager.Start();
46
+ // Receive a message response back from the primary thread
47
+ //process.on('message', this.#ipcMessageManager.ProcessMessage);
86
48
  process.on('message', this.#processMessage);
87
49
  };
88
50
  Stop = () => {
51
+ //process.off('message', this.#ipcMessageManager.ProcessMessage);
89
52
  process.off('message', this.#processMessage);
90
- // Kill in-flight messages
91
- for (const [, iPCMessageProcessorWorkerRecord] of Object.entries(this.#inflightMessages)) {
92
- if (iPCMessageProcessorWorkerRecord.timeout) {
93
- clearTimeout(iPCMessageProcessorWorkerRecord.timeout);
94
- }
95
- }
96
- this.#inflightMessages = {};
53
+ this.#ipcMessageManager.Stop();
97
54
  };
98
55
  }
99
56
  exports.IPCMessageProcessorWorker = IPCMessageProcessorWorker;
@@ -1 +1 @@
1
- {"version":3,"file":"ipcMessageProcessorWorker.js","sourceRoot":"","sources":["../src/ipcMessageProcessorWorker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ipcMessageProcessorWorker.js","sourceRoot":"","sources":["../src/ipcMessageProcessorWorker.ts"],"names":[],"mappings":";;;AAAA,kDAAkD,CAAE,UAAU;AAC9D,gDAAyE;AAIzE,2DAAiF;AASjF,MAAa,yBAAyB;IAClC,QAAQ,CAA4B;IACpC,kBAAkB,CAAoB;IAEtC,YAAY,OAAmC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,MAAM,wBAAwB,GAA6B;YACvD,MAAM,EAAE,wBAAa;YACrB,6BAA6B,EAAE,OAAO,CAAC,6BAA6B;YACpE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,CAAC,OAAuC,EAAE,EAAE;gBACtD,OAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;SACJ,CAAA;QACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,qCAAiB,CAAC,wBAAwB,CAAC,CAAC;IAC9E,CAAC;IAED,qDAAqD;IACrD,eAAe,GAAG,KAAK,EAAE,GAAQ,EAAE,EAAE;QACjC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,UAAU,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC;YACxD,IAAK,GAAG,CAAC,MAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAI,GAAsC,CAAC;gBACxD,IAAI,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjD,OAAO,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;oBACtE,OAAO,CAAC,WAAW,GAAG,UAAU,CAAC;oBACjC,+EAA+E;oBAC9E,OAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACJ,sCAAsC;oBACtC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAChD,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC,CAAA;IAED,WAAW,GAAG,CAAC,OAAmB,EAAuB,EAAE;QACvD,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC,CAAA;IAED,KAAK,GAAG,GAAG,EAAE;QACT,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAEhC,0DAA0D;QAC1D,gEAAgE;QAChE,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAChD,CAAC,CAAA;IAED,IAAI,GAAG,GAAG,EAAE;QACR,iEAAiE;QACjE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7C,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC,CAAA;CACJ;AArDD,8DAqDC"}
@@ -8,81 +8,98 @@ const appConfig_1 = require("./appConfig");
8
8
  const __1 = require("./..");
9
9
  const appWorkerWSS_1 = require("./appWorkerWSS");
10
10
  const cluster_1 = __importDefault(require("cluster"));
11
- const node_fs_1 = __importDefault(require("node:fs"));
12
- //const pid = process.pid;
13
- const pid = 523552;
14
- const filePath = `/proc/${pid}/net/dev`;
15
- const LogInfoMessage = (message) => console.log(message);
16
- const LogErrorMessage = (message) => console.error(message);
17
- /*
18
- async function testError() {
19
- throw new Error('some error')
20
- }
21
-
22
- async function testtheerror() {
23
- try {
24
- await testError();
25
- } catch (error) {
26
- this.#LogErrorMessage(`Error2: [${error}]`);
27
- }
28
- }
29
-
30
- async function testtheerror2(cb: (error: any) => void) {
31
- try {
32
-
33
- cb('some error');
34
-
35
- } catch (error) {
36
- this.#LogErrorMessage(`Error2: [${error}]`);
37
- }
38
- }
39
-
40
- (async () => {
41
- await Sleep(1000);
42
- let z = await testtheerror2((error) => this.#LogInfoMessage(error));
43
- this.#LogInfoMessage(`done.....`);
44
-
45
- process.exit(0);
46
- })();
47
- */
48
- function getNetworkUsage() {
49
- try {
50
- // Read the contents of the /proc/[pid]/net/dev file
51
- const content = node_fs_1.default.readFileSync(filePath, 'utf8');
52
- // Process the content to extract relevant information
53
- const lines = content.trim().split('\n');
54
- const headers1 = lines[0].split('|').map(header => header.trim());
55
- const headers2 = lines[1].split('|').map(header => header.trim());
56
- const data = lines[2].split('|').map(value => value.trim());
57
- LogInfoMessage(data);
58
- // Find the index of the relevant network statistics (e.g., bytes received and transmitted)
59
- //const rxIndex = headers.indexOf('Receive');
60
- //const txIndex = headers.indexOf('Transmit');
61
- // Display network usage information
62
- /*
63
- this.#LogInfoMessage(`Network Usage for Process ${pid}:`);
64
- this.#LogInfoMessage(` Incoming: ${data[rxIndex]} bytes`);
65
- this.#LogInfoMessage(` Outgoing: ${data[txIndex]} bytes`);
66
- */
67
- }
68
- catch (error) {
69
- LogErrorMessage(`Error reading file: [${error}]`);
70
- }
71
- }
11
+ const ipcMessageProcessorWorker_1 = require("./../ipcMessageProcessorWorker");
12
+ const stsutils_1 = require("@nsshunt/stsutils");
13
+ const ipcMessageProcessorPrimary_1 = require("./../ipcMessageProcessorPrimary");
14
+ const chalk_1 = __importDefault(require("chalk"));
15
+ const sleepVal = 0;
16
+ const maxLoop = 20000;
72
17
  if (cluster_1.default.isPrimary) {
73
18
  new __1.MasterProcessBase((0, appConfig_1.ServiceConfigOptions)(true, cluster_1.default.isPrimary)).SetupServer();
74
- setInterval(function () {
75
- /*
76
- si.networkStats().then(data => {
77
- this.#LogInfoMessage(data);
78
- });
79
- */
80
- getNetworkUsage();
81
- //this.#LogInfoMessage(process.pid)
82
- //getNetworkUsage()
19
+ setTimeout(async () => {
20
+ for (const id in cluster_1.default.workers) {
21
+ const p1 = new ipcMessageProcessorPrimary_1.IPCMessageProcessorPrimary({
22
+ logger: stsutils_1.defaultLogger,
23
+ namespace: 'test1',
24
+ processCommand: async (payload) => {
25
+ return {
26
+ msg: `From PRIMARY: [${process.pid}]`,
27
+ yousent: payload.requestPayload,
28
+ hello1: `world1`,
29
+ pid: process.pid
30
+ };
31
+ },
32
+ worker: cluster_1.default.workers[id]
33
+ });
34
+ const p2 = new ipcMessageProcessorPrimary_1.IPCMessageProcessorPrimary({
35
+ logger: stsutils_1.defaultLogger,
36
+ namespace: 'test2',
37
+ processCommand: async (payload) => {
38
+ return {
39
+ msg: `From PRIMARY: [${process.pid}]`,
40
+ yousent: payload.requestPayload,
41
+ hello2: `world2`,
42
+ pid: process.pid
43
+ };
44
+ },
45
+ worker: cluster_1.default.workers[id]
46
+ });
47
+ p1.Start(cluster_1.default.workers[id]);
48
+ p2.Start(cluster_1.default.workers[id]);
49
+ setTimeout(async () => {
50
+ for (let i = 0; i < maxLoop; i++) {
51
+ const retVal1 = await p1.SendMessage({
52
+ from1: 'text from 1',
53
+ loop: i
54
+ });
55
+ const retVal2 = await p2.SendMessage({
56
+ from1: 'text from 2',
57
+ loop: i
58
+ });
59
+ console.log(`[${process.pid}] [${JSON.stringify(retVal1)}]`);
60
+ console.log(`[${process.pid}] [${JSON.stringify(retVal2)}]`);
61
+ await (0, stsutils_1.Sleep)(sleepVal);
62
+ }
63
+ }, 1000);
64
+ }
83
65
  }, 1000);
84
66
  }
85
67
  else {
86
68
  new appWorkerWSS_1.WorkerProcess((0, appConfig_1.ServiceConfigOptions)(true, cluster_1.default.isPrimary)).SetupServer();
69
+ const w1 = new ipcMessageProcessorWorker_1.IPCMessageProcessorWorker({
70
+ logger: stsutils_1.defaultLogger,
71
+ namespace: 'test1',
72
+ requestResponseMessageTimeout: 2000,
73
+ processCommand: async (payload) => {
74
+ return {
75
+ msg: `From WORKER: [${process.pid}]`,
76
+ yousent1: payload.requestPayload,
77
+ pid: process.pid
78
+ };
79
+ }
80
+ });
81
+ const w2 = new ipcMessageProcessorWorker_1.IPCMessageProcessorWorker({
82
+ logger: stsutils_1.defaultLogger,
83
+ namespace: 'test2',
84
+ requestResponseMessageTimeout: 2000,
85
+ processCommand: async (payload) => {
86
+ return {
87
+ msg: `From WORKER: [${process.pid}]`,
88
+ yousent2: payload.requestPayload,
89
+ pid: process.pid
90
+ };
91
+ }
92
+ });
93
+ w1.Start();
94
+ w2.Start();
95
+ setTimeout(async () => {
96
+ for (let i = 0; i < maxLoop; i++) {
97
+ const retVal1 = await w1.SendMessage({ hello: `from worker 1: ${i}` });
98
+ console.log(chalk_1.default.blue(` ==> [${process.pid}] [${JSON.stringify(retVal1)}]`));
99
+ const retVal2 = await w2.SendMessage({ hello: `from worker 2: ${i}` });
100
+ console.log(chalk_1.default.blue(` ==> [${process.pid}] [${JSON.stringify(retVal2)}]`));
101
+ await (0, stsutils_1.Sleep)(sleepVal);
102
+ }
103
+ }, 1000);
87
104
  }
88
105
  //# sourceMappingURL=app.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/testing/app.ts"],"names":[],"mappings":";;;;;AAAA,wFAAwF,CAAE,UAAU;AACpG,2CAAkD;AAClD,4BAAwC;AACxC,iDAA8C;AAE9C,sDAA8B;AAE9B,sDAAwB;AAExB,0BAA0B;AAC1B,MAAM,GAAG,GAAG,MAAM,CAAA;AAElB,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAExC,MAAM,cAAc,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAC7D,MAAM,eAAe,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAChE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BE;AAEF,SAAS,eAAe;IACpB,IAAI,CAAC;QACD,oDAAoD;QACpD,MAAM,OAAO,GAAG,iBAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAElD,sDAAsD;QACtD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAE5D,cAAc,CAAC,IAAI,CAAC,CAAC;QAErB,2FAA2F;QAC3F,6CAA6C;QAC7C,8CAA8C;QAE9C,oCAAoC;QACpC;;;;QAIA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,eAAe,CAAC,wBAAwB,KAAK,GAAG,CAAC,CAAC;IACtD,CAAC;AACL,CAAC;AAED,IAAI,iBAAO,CAAC,SAAS,EAAE,CAAC;IACpB,IAAI,qBAAiB,CAAC,IAAA,gCAAoB,EAAC,IAAI,EAAE,iBAAO,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAEnF,WAAW,CAAC;QACR;;;;UAIE;QAEF,eAAe,EAAE,CAAA;QAEjB,mCAAmC;QAEnC,mBAAmB;IAEvB,CAAC,EAAE,IAAI,CAAC,CAAA;AAEZ,CAAC;KAAM,CAAC;IACJ,IAAI,4BAAa,CAAC,IAAA,gCAAoB,EAAC,IAAI,EAAE,iBAAO,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACnF,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/testing/app.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ ${process.pid}${ModelDelimeter.COMPONENT_SEPERATOR}${(isMaster ? process.pid : p
30
30
  function ServiceConfigOptions(clusterMode, isMaster) {
31
31
  winston_1.default.format.combine(winston_1.default.format.colorize(), winston_1.default.format.simple());
32
32
  const logger = winston_1.default.createLogger({
33
- level: 'silly',
33
+ level: 'debug',
34
34
  format: winston_1.default.format.combine(winston_1.default.format.colorize(), winston_1.default.format.simple()),
35
35
  transports: [
36
36
  new winston_1.default.transports.Console()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nsshunt/stsappframework",
3
- "version": "3.1.96",
3
+ "version": "3.1.98",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "./types/index.d.ts",
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "homepage": "https://github.com/nsshunt/stsappframework#readme",
27
27
  "devDependencies": {
28
- "@babel/preset-env": "^7.24.3",
28
+ "@babel/preset-env": "^7.24.4",
29
29
  "@babel/preset-typescript": "^7.24.1",
30
30
  "@tsconfig/node20": "^20.1.4",
31
31
  "@types/cookie-parser": "^1.4.7",
@@ -37,18 +37,18 @@
37
37
  "@typescript-eslint/parser": "^7.5.0",
38
38
  "eslint": "^8.57.0",
39
39
  "jest": "^29.7.0",
40
- "typescript": "^5.4.3",
41
- "vite": "^5.2.7"
40
+ "typescript": "^5.4.4",
41
+ "vite": "^5.2.8"
42
42
  },
43
43
  "dependencies": {
44
- "@grpc/grpc-js": "^1.10.5",
44
+ "@grpc/grpc-js": "^1.10.6",
45
45
  "@grpc/proto-loader": "^0.7.12",
46
46
  "@influxdata/influxdb-client": "^1.33.2",
47
47
  "@influxdata/influxdb-client-apis": "^1.33.2",
48
- "@nsshunt/stsconfig": "^1.25.125",
49
- "@nsshunt/stsdatamanagement": "^1.17.176",
50
- "@nsshunt/stsobservability": "^1.0.21",
51
- "@nsshunt/stsutils": "^1.16.57",
48
+ "@nsshunt/stsconfig": "^1.25.126",
49
+ "@nsshunt/stsdatamanagement": "^1.17.177",
50
+ "@nsshunt/stsobservability": "^1.0.27",
51
+ "@nsshunt/stsutils": "^1.16.58",
52
52
  "@socket.io/cluster-adapter": "^0.2.2",
53
53
  "@socket.io/redis-streams-adapter": "^0.2.1",
54
54
  "@types/on-headers": "^1.0.3",
package/runtest2.sh CHANGED
@@ -5,8 +5,8 @@ export STS_PROJ_ROOT=./..; \
5
5
  STSENVFILE=$STS_PROJ_ROOT/stsglobalresources/.env \
6
6
  REST01_PORT=3003 \
7
7
  REST01_HOST_PORT=3003 \
8
- REST01_ENDPOINT="https://stsrest.stsmda.org" \
9
- MAX_CPU=1 \
8
+ REST01_ENDPOINT="https://stscore.stsmda.org" \
9
+ MAX_CPU=2 \
10
10
  AS_ENDPOINT=https://stscore.stsmda.org \
11
11
  AS_HOST_PORT=3002 \
12
12
  AS_PORT=3002 \
@@ -270,6 +270,7 @@ export interface IIPCMessageProcessorIPCPayload {
270
270
  requestPayload: JSONObject
271
271
  responsePayload: JSONObject
272
272
  pid: string
273
+ messageType: 'REQUEST' | 'RESPONSE'
273
274
  }
274
275
 
275
276
  export interface IIPCMessageProcessorWorkerRecord {