@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.
- package/.github/workflows/npm-publish.yml +2 -2
- package/dist/ipcMessageManager.js +100 -0
- package/dist/ipcMessageManager.js.map +1 -0
- package/dist/ipcMessageProcessorPrimary.js +30 -10
- package/dist/ipcMessageProcessorPrimary.js.map +1 -1
- package/dist/ipcMessageProcessorWorker.js +36 -79
- package/dist/ipcMessageProcessorWorker.js.map +1 -1
- package/dist/testing/app.js +87 -70
- package/dist/testing/app.js.map +1 -1
- package/dist/testing/appConfig.js +1 -1
- package/package.json +9 -9
- package/runtest2.sh +2 -2
- package/src/commonTypes.ts +1 -0
- package/src/ipcMessageManager.ts +117 -0
- package/src/ipcMessageProcessorPrimary.ts +32 -10
- package/src/ipcMessageProcessorWorker.ts +41 -87
- package/src/testing/app.ts +100 -77
- package/src/testing/appConfig.ts +1 -1
- package/types/authutilsnode.d.ts.map +1 -1
- package/types/commonTypes.d.ts +1 -0
- package/types/commonTypes.d.ts.map +1 -1
- package/types/ipcMessageManager.d.ts +23 -0
- package/types/ipcMessageManager.d.ts.map +1 -0
- package/types/ipcMessageProcessorPrimary.d.ts +4 -2
- package/types/ipcMessageProcessorPrimary.d.ts.map +1 -1
- package/types/ipcMessageProcessorWorker.d.ts +2 -6
- package/types/ipcMessageProcessorWorker.d.ts.map +1 -1
- package/types/kafka/IMKafkaManager.d.ts.map +1 -1
- package/types/kafka/kafkaconsumer.d.ts.map +1 -1
- package/types/kafka/kafkamanager.d.ts.map +1 -1
- package/types/kafka/kafkaproducer.d.ts.map +1 -1
- package/types/socketIoServerHelper.d.ts.map +1 -1
|
@@ -16,7 +16,7 @@ jobs:
|
|
|
16
16
|
- uses: actions/checkout@v4
|
|
17
17
|
- uses: actions/setup-node@v4
|
|
18
18
|
with:
|
|
19
|
-
node-version:
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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":"
|
|
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
|
|
9
|
-
const
|
|
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
|
-
#
|
|
18
|
-
#messageHeader;
|
|
9
|
+
#ipcMessageManager;
|
|
19
10
|
constructor(options) {
|
|
20
11
|
this.#options = options;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
79
|
-
|
|
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
|
-
|
|
85
|
-
|
|
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
|
-
|
|
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":"
|
|
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"}
|
package/dist/testing/app.js
CHANGED
|
@@ -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
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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
|
package/dist/testing/app.js.map
CHANGED
|
@@ -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,
|
|
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,8EAA0E;AAC1E,gDAAyD;AAEzD,gFAA4E;AAM5E,kDAA0B;AAE1B,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAM,OAAO,GAAG,KAAK,CAAC;AAEtB,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,UAAU,CAAC,KAAK,IAAI,EAAE;QAClB,KAAK,MAAM,EAAE,IAAI,iBAAO,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,IAAI,uDAA0B,CAAC;gBACtC,MAAM,EAAE,wBAAa;gBACrB,SAAS,EAAE,OAAO;gBAClB,cAAc,EAAE,KAAK,EAAE,OAAuC,EAAE,EAAE;oBAC9D,OAAO;wBACH,GAAG,EAAE,kBAAkB,OAAO,CAAC,GAAG,GAAG;wBACrC,OAAO,EAAE,OAAO,CAAC,cAAc;wBAC/B,MAAM,EAAE,QAAQ;wBAChB,GAAG,EAAE,OAAO,CAAC,GAAG;qBACnB,CAAC;gBACN,CAAC;gBACD,MAAM,EAAE,iBAAO,CAAC,OAAO,CAAC,EAAE,CAAW;aACxC,CAAC,CAAA;YAEF,MAAM,EAAE,GAAG,IAAI,uDAA0B,CAAC;gBACtC,MAAM,EAAE,wBAAa;gBACrB,SAAS,EAAE,OAAO;gBAClB,cAAc,EAAE,KAAK,EAAE,OAAuC,EAAE,EAAE;oBAC9D,OAAO;wBACH,GAAG,EAAE,kBAAkB,OAAO,CAAC,GAAG,GAAG;wBACrC,OAAO,EAAE,OAAO,CAAC,cAAc;wBAC/B,MAAM,EAAE,QAAQ;wBAChB,GAAG,EAAE,OAAO,CAAC,GAAG;qBACnB,CAAC;gBACN,CAAC;gBACD,MAAM,EAAE,iBAAO,CAAC,OAAO,CAAC,EAAE,CAAW;aACxC,CAAC,CAAA;YAEF,EAAE,CAAC,KAAK,CAAC,iBAAO,CAAC,OAAO,CAAC,EAAE,CAAW,CAAC,CAAC;YACxC,EAAE,CAAC,KAAK,CAAC,iBAAO,CAAC,OAAO,CAAC,EAAE,CAAW,CAAC,CAAC;YAExC,UAAU,CAAC,KAAK,IAAI,EAAE;gBAClB,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC;wBACjC,KAAK,EAAE,aAAa;wBACpB,IAAI,EAAE,CAAC;qBACV,CAAC,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC;wBACjC,KAAK,EAAE,aAAa;wBACpB,IAAI,EAAE,CAAC;qBACV,CAAC,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;oBAC5D,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;oBAE5D,MAAM,IAAA,gBAAK,EAAC,QAAQ,CAAC,CAAC;gBAC1B,CAAC;YACL,CAAC,EAAE,IAAI,CAAC,CAAC;QACb,CAAC;IACL,CAAC,EAAE,IAAI,CAAC,CAAC;AAEb,CAAC;KAAM,CAAC;IACJ,IAAI,4BAAa,CAAC,IAAA,gCAAoB,EAAC,IAAI,EAAE,iBAAO,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAE/E,MAAM,EAAE,GAAG,IAAI,qDAAyB,CAAC;QACrC,MAAM,EAAE,wBAAa;QACrB,SAAS,EAAE,OAAO;QAClB,6BAA6B,EAAE,IAAI;QACnC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC9B,OAAO;gBACH,GAAG,EAAE,iBAAiB,OAAO,CAAC,GAAG,GAAG;gBACpC,QAAQ,EAAE,OAAO,CAAC,cAAc;gBAChC,GAAG,EAAE,OAAO,CAAC,GAAG;aACnB,CAAA;QACL,CAAC;KACJ,CAAC,CAAA;IAEF,MAAM,EAAE,GAAG,IAAI,qDAAyB,CAAC;QACrC,MAAM,EAAE,wBAAa;QACrB,SAAS,EAAE,OAAO;QAClB,6BAA6B,EAAE,IAAI;QACnC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC9B,OAAO;gBACH,GAAG,EAAE,iBAAiB,OAAO,CAAC,GAAG,GAAG;gBACpC,QAAQ,EAAE,OAAO,CAAC,cAAc;gBAChC,GAAG,EAAE,OAAO,CAAC,GAAG;aACnB,CAAA;QACL,CAAC;KACJ,CAAC,CAAA;IAEF,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,UAAU,CAAC,KAAK,IAAI,EAAE;QAClB,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,EAAC,KAAK,EAAC,kBAAkB,CAAC,EAAE,EAAC,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAE9E,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,EAAC,KAAK,EAAC,kBAAkB,CAAC,EAAE,EAAC,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAE9E,MAAM,IAAA,gBAAK,EAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC,EAAE,IAAI,CAAC,CAAC;AACb,CAAC"}
|
|
@@ -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: '
|
|
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.
|
|
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.
|
|
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.
|
|
41
|
-
"vite": "^5.2.
|
|
40
|
+
"typescript": "^5.4.4",
|
|
41
|
+
"vite": "^5.2.8"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@grpc/grpc-js": "^1.10.
|
|
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.
|
|
49
|
-
"@nsshunt/stsdatamanagement": "^1.17.
|
|
50
|
-
"@nsshunt/stsobservability": "^1.0.
|
|
51
|
-
"@nsshunt/stsutils": "^1.16.
|
|
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://
|
|
9
|
-
MAX_CPU=
|
|
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 \
|
package/src/commonTypes.ts
CHANGED