@nsshunt/stsappframework 2.19.235 → 2.19.239
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/dist/serverprocessbase.js +7 -7
- package/dist/serverprocessbase.js.map +1 -1
- package/dist/singleprocessbase.js +3 -3
- package/dist/singleprocessbase.js.map +1 -1
- package/dist/stslatencycontroller.js +5 -1
- package/dist/stslatencycontroller.js.map +1 -1
- package/dist/tcpserver/app.js +3 -2
- package/dist/tcpserver/app.js.map +1 -1
- package/dist/tcpserver/appConfig.js +2 -1
- package/dist/tcpserver/appConfig.js.map +1 -1
- package/dist/testing/app.js +4 -3
- package/dist/testing/app.js.map +1 -1
- package/dist/testing/appConfig.js +7 -4
- package/dist/testing/appConfig.js.map +1 -1
- package/dist/testing/appWorkerWSS.js +137 -0
- package/dist/testing/appWorkerWSS.js.map +1 -0
- package/dist/testing/singleservertest.test.js +107 -3
- package/dist/testing/singleservertest.test.js.map +1 -1
- package/dist/workerprocessbase.js.map +1 -1
- package/package.json +2 -1
- package/src/kafkatesting/produce.js +0 -1
- package/src/processoptions.ts +5 -0
- package/src/serverprocessbase.ts +7 -7
- package/src/singleprocessbase.ts +3 -3
- package/src/stslatencycontroller.ts +5 -1
- package/src/tcpserver/app.ts +2 -2
- package/src/tcpserver/appConfig.ts +2 -1
- package/src/testing/app.ts +4 -3
- package/src/testing/appConfig.ts +9 -5
- package/src/testing/appWorkerWSS.ts +153 -0
- package/src/testing/docker-compose.yml +20 -0
- package/src/testing/singleservertest.test.ts +131 -4
- package/src/workerprocessbase.ts +0 -1
- package/types/processoptions.d.ts +4 -0
- package/types/processoptions.d.ts.map +1 -1
- package/types/serverprocessbase.d.ts +1 -1
- package/types/serverprocessbase.d.ts.map +1 -1
- package/types/stslatencycontroller.d.ts.map +1 -1
- package/types/tcpserver/appConfig.d.ts +1 -1
- package/types/tcpserver/appConfig.d.ts.map +1 -1
- package/types/testing/appConfig.d.ts +1 -1
- package/types/testing/appConfig.d.ts.map +1 -1
- package/types/testing/appWorkerWSS.d.ts +26 -0
- package/types/testing/appWorkerWSS.d.ts.map +1 -0
- package/types/workerprocessbase.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workerprocessbase.js","sourceRoot":"","sources":["../src/workerprocessbase.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA+B;AAC/B,MAAM,KAAK,GAAG,IAAA,eAAW,EAAC,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"workerprocessbase.js","sourceRoot":"","sources":["../src/workerprocessbase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nsshunt/stsappframework",
|
|
3
|
-
"version": "2.19.
|
|
3
|
+
"version": "2.19.239",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "./types/index.d.ts",
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
"@nsshunt/stsdatamanagement": "^1.17.99",
|
|
51
51
|
"@nsshunt/stsinstrumentation": "^6.11.87",
|
|
52
52
|
"@nsshunt/stspublisherserver": "^1.15.84",
|
|
53
|
+
"@nsshunt/stssocketio-client": "^0.0.9",
|
|
53
54
|
"@nsshunt/stsutils": "^1.16.6",
|
|
54
55
|
"@socket.io/cluster-adapter": "^0.2.2",
|
|
55
56
|
"@socket.io/redis-streams-adapter": "^0.1.0",
|
package/src/processoptions.ts
CHANGED
package/src/serverprocessbase.ts
CHANGED
|
@@ -155,7 +155,7 @@ export class ServerProcessBase extends ProcessBase
|
|
|
155
155
|
});
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
-
#SetupWSSServer = async (
|
|
158
|
+
#SetupWSSServer = async (): Promise<void> => {
|
|
159
159
|
// socket.io
|
|
160
160
|
// WebSocket
|
|
161
161
|
const options: Partial<ServerOptions> = {
|
|
@@ -168,7 +168,7 @@ export class ServerProcessBase extends ProcessBase
|
|
|
168
168
|
//this.#io = require("socket.io")(this.#httpServer, options);
|
|
169
169
|
this.#io = new Server(this.#httpServer, options);
|
|
170
170
|
|
|
171
|
-
if (clusterMode) {
|
|
171
|
+
if (this.options.clusterMode) {
|
|
172
172
|
if (this.options.useRedisAdaptor) {
|
|
173
173
|
this.LogEx(`Using Redis for socket.io cluster management (worker)`);
|
|
174
174
|
if (this.options.redisAdaptorUrl) {
|
|
@@ -220,7 +220,7 @@ export class ServerProcessBase extends ProcessBase
|
|
|
220
220
|
this.#SetupPrometheusEndPoints((this.#expressServer as STSExpressServer).App);
|
|
221
221
|
}
|
|
222
222
|
if (this.options.wssServer === true) {
|
|
223
|
-
await this.#SetupWSSServer(
|
|
223
|
+
await this.#SetupWSSServer();
|
|
224
224
|
}
|
|
225
225
|
// https://stackoverflow.com/questions/21342828/node-express-unix-domain-socket-permissions
|
|
226
226
|
//@@httpServer.listen('/tmp/stsrest01.sock').on('listening', () =>
|
|
@@ -271,7 +271,7 @@ export class ServerProcessBase extends ProcessBase
|
|
|
271
271
|
// instrument timers (gauge etc.)
|
|
272
272
|
// publisher
|
|
273
273
|
// terminate UI (if loaded)
|
|
274
|
-
Terminate = async (
|
|
274
|
+
Terminate = async (clusterPerformExit: boolean, signal?: any): Promise<void> => {
|
|
275
275
|
if (this.#shuttingDown === false) {
|
|
276
276
|
this.#shuttingDown = true;
|
|
277
277
|
|
|
@@ -279,7 +279,7 @@ export class ServerProcessBase extends ProcessBase
|
|
|
279
279
|
|
|
280
280
|
await this.ProcessTerminating();
|
|
281
281
|
|
|
282
|
-
if (!clusterMode) {
|
|
282
|
+
if (!this.options.clusterMode) {
|
|
283
283
|
if (this.GetUIController() !== null)
|
|
284
284
|
{
|
|
285
285
|
this.LogEx('Destroy the user interface controller.');
|
|
@@ -324,7 +324,7 @@ export class ServerProcessBase extends ProcessBase
|
|
|
324
324
|
//await this.accessLayer.enddatabase();
|
|
325
325
|
}
|
|
326
326
|
|
|
327
|
-
if (clusterMode) {
|
|
327
|
+
if (this.options.clusterMode) {
|
|
328
328
|
this.LogEx(`Performing exit value: [${clusterPerformExit}]`);
|
|
329
329
|
if (clusterPerformExit) {
|
|
330
330
|
this.LogEx(`Process will self terminate with process.exit(0).`);
|
|
@@ -350,7 +350,7 @@ export class ServerProcessBase extends ProcessBase
|
|
|
350
350
|
|
|
351
351
|
await Sleep(1000); // Allow socket.io time to clean-up
|
|
352
352
|
|
|
353
|
-
if (clusterMode) {
|
|
353
|
+
if (this.options.clusterMode) {
|
|
354
354
|
if (clusterPerformExit) {
|
|
355
355
|
setTimeout(() => {
|
|
356
356
|
process.exit(0);
|
package/src/singleprocessbase.ts
CHANGED
|
@@ -87,11 +87,11 @@ export class SingleProcessBase extends ServerProcessBase implements ISingleProce
|
|
|
87
87
|
this.LogSystemTelemetry();
|
|
88
88
|
|
|
89
89
|
process.on('SIGINT', async () => {
|
|
90
|
-
await this.Terminate(false,
|
|
90
|
+
await this.Terminate(false, 'SIGINT');
|
|
91
91
|
});
|
|
92
92
|
|
|
93
93
|
process.on('SIGTERM', async () => {
|
|
94
|
-
await this.Terminate(false,
|
|
94
|
+
await this.Terminate(false, 'SIGTERM');
|
|
95
95
|
});
|
|
96
96
|
|
|
97
97
|
process.on('exit', (code) => {
|
|
@@ -111,6 +111,6 @@ export class SingleProcessBase extends ServerProcessBase implements ISingleProce
|
|
|
111
111
|
|
|
112
112
|
async TerminateApplication()
|
|
113
113
|
{
|
|
114
|
-
await this.Terminate(false,
|
|
114
|
+
await this.Terminate(false, 'SIGINT');
|
|
115
115
|
}
|
|
116
116
|
}
|
|
@@ -12,7 +12,11 @@ export class STSLatencyController extends STSControllerBase
|
|
|
12
12
|
async stslatency(req: any, res: any)
|
|
13
13
|
{
|
|
14
14
|
try {
|
|
15
|
-
const retVal = {
|
|
15
|
+
const retVal = {
|
|
16
|
+
data: `Ping Completed At: ${Date.now()}`,
|
|
17
|
+
pid: process.pid,
|
|
18
|
+
ppid: process.ppid
|
|
19
|
+
};
|
|
16
20
|
return res.status(StatusCodes.OK).send(retVal);
|
|
17
21
|
} catch (error) {
|
|
18
22
|
console.error(error);
|
package/src/tcpserver/app.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { AppMaster } from './appmaster'
|
|
|
5
5
|
import cluster from 'cluster';
|
|
6
6
|
|
|
7
7
|
if (cluster.isPrimary) {
|
|
8
|
-
new AppMaster(ServiceConfigOptions(cluster.isPrimary)).SetupServer();
|
|
8
|
+
new AppMaster(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
|
|
9
9
|
} else {
|
|
10
|
-
|
|
10
|
+
new WorkerProcessBase(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
|
|
11
11
|
}
|
|
@@ -24,12 +24,13 @@ ${process.pid}${ModelDelimeter.COMPONENT_SEPERATOR}${(isMaster ? process.pid : p
|
|
|
24
24
|
}
|
|
25
25
|
*/
|
|
26
26
|
|
|
27
|
-
export function ServiceConfigOptions(isMaster: boolean): ProcessOptions {
|
|
27
|
+
export function ServiceConfigOptions(clusterMode: boolean, isMaster: boolean): ProcessOptions {
|
|
28
28
|
if (isMaster === true) {
|
|
29
29
|
const serviceInstanceId = uuidv4();
|
|
30
30
|
const data: ProcessOptions = {
|
|
31
31
|
serverType: STSServerType.TCPRAW_TLS,
|
|
32
32
|
|
|
33
|
+
clusterMode: clusterMode,
|
|
33
34
|
wssServer: false,
|
|
34
35
|
useLatency: false,
|
|
35
36
|
httpsServerKeyPath: goptions.httpsserverkeypath,
|
package/src/testing/app.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { ServiceConfigOptions } from './appConfig
|
|
1
|
+
import { ServiceConfigOptions } from './appConfig'
|
|
2
2
|
import { MasterProcessBase, WorkerProcessBase } from './..'
|
|
3
|
+
import { WorkerProcess } from './appWorkerWSS'
|
|
3
4
|
|
|
4
5
|
import cluster from 'cluster';
|
|
5
6
|
|
|
6
7
|
if (cluster.isPrimary) {
|
|
7
|
-
new MasterProcessBase(ServiceConfigOptions(cluster.isPrimary)).SetupServer();
|
|
8
|
+
new MasterProcessBase(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
|
|
8
9
|
} else {
|
|
9
|
-
new
|
|
10
|
+
new WorkerProcess(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
|
|
10
11
|
}
|
package/src/testing/appConfig.ts
CHANGED
|
@@ -26,11 +26,12 @@ ${process.pid}${ModelDelimeter.COMPONENT_SEPERATOR}${(isMaster ? process.pid : p
|
|
|
26
26
|
}
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
-
export function ServiceConfigOptions(isMaster: boolean): ProcessOptions {
|
|
29
|
+
export function ServiceConfigOptions(clusterMode: boolean, isMaster: boolean): ProcessOptions {
|
|
30
30
|
if (isMaster === true) {
|
|
31
31
|
const serviceInstanceId = uuidv4();
|
|
32
32
|
const data: ProcessOptions = {
|
|
33
33
|
serverType: STSServerType.EXPRESS_TLS,
|
|
34
|
+
clusterMode: clusterMode,
|
|
34
35
|
wssServer: true,
|
|
35
36
|
useLatency: true,
|
|
36
37
|
httpsServerKeyPath: goptions.httpsserverkeypath,
|
|
@@ -51,10 +52,6 @@ export function ServiceConfigOptions(isMaster: boolean): ProcessOptions {
|
|
|
51
52
|
serviceVersion: goptions.rest01serviceversion,
|
|
52
53
|
consoleLogging: true,
|
|
53
54
|
instrumentLogging: true,
|
|
54
|
-
|
|
55
|
-
expressServerRouteFactory: (app: express.Express, stsApp: IProcessBase) => {
|
|
56
|
-
return new STSExpressRouteFactory(app, stsApp);
|
|
57
|
-
},
|
|
58
55
|
|
|
59
56
|
instrumentationObservationInterval: goptions.instrumentationObservationInterval,
|
|
60
57
|
instrumentationTimeWindow: goptions.instrumentationTimeWindow,
|
|
@@ -62,6 +59,13 @@ export function ServiceConfigOptions(isMaster: boolean): ProcessOptions {
|
|
|
62
59
|
useRedisAdaptor: false,
|
|
63
60
|
workerExec: './dist/testing/app.js'
|
|
64
61
|
}
|
|
62
|
+
|
|
63
|
+
if (!clusterMode) {
|
|
64
|
+
data.expressServerRouteFactory = (app: express.Express, stsApp: IProcessBase) => {
|
|
65
|
+
return new STSExpressRouteFactory(app, stsApp);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
65
69
|
return data;
|
|
66
70
|
} else {
|
|
67
71
|
const data: ProcessOptions = JSON.parse(process.env['STS_GSD_SII'] as string) as ProcessOptions;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import debugModule from 'debug'
|
|
2
|
+
const debug = debugModule(`proc:${process.pid}`);
|
|
3
|
+
|
|
4
|
+
import { Socket } from 'socket.io'
|
|
5
|
+
import cluster from 'node:cluster';
|
|
6
|
+
|
|
7
|
+
import { WorkerProcessBase, STSNamespace, STSRoom, SocketIoServerHelper, ServerSocketEvent,
|
|
8
|
+
STSEvent, IProcessBase, STSSocketIONamespace } from './../index'
|
|
9
|
+
|
|
10
|
+
import { Sleep } from '@nsshunt/stsutils';
|
|
11
|
+
|
|
12
|
+
export enum InstrumentManagerEventName {
|
|
13
|
+
CONNECT = 'connect', //@@ should come from socketiohelper
|
|
14
|
+
|
|
15
|
+
SUBSCRIBE = 'stsInstrumentManager-Subscribe',
|
|
16
|
+
UNSUBSCRIBE = 'stsInstrumentManager-Unsubscribe',
|
|
17
|
+
SUBSCRIBE_KEEP_ALIVE = 'stsInstrumentManager-Subscribe-KeepAlive'
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface IIPCSocketMessage {
|
|
21
|
+
socketId: string
|
|
22
|
+
workerId: number
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
24
|
+
data: any
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export enum InstrumentManagerSubCommand {
|
|
28
|
+
OUTPUT_SUBSCRIPTION = 'stsInstrumentManager-OutputSubscriptions'
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export enum IPCCommands {
|
|
32
|
+
PUBLISH_INSTRUMENT_DATA = 'PUBLISH_INSTRUMENT_DATA'
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export class WorkerProcess extends WorkerProcessBase
|
|
36
|
+
{
|
|
37
|
+
#terminate = false;
|
|
38
|
+
|
|
39
|
+
constructor(options: any)
|
|
40
|
+
{
|
|
41
|
+
super(options);
|
|
42
|
+
|
|
43
|
+
//this.socketIoHelper = new SocketIoHelper(this as IProcessBase);
|
|
44
|
+
this.socketIoServerHelper = new SocketIoServerHelper({
|
|
45
|
+
logger: this.LogEx
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
50
|
+
ReceivedMessageFromMaster = async (messageData: any) => {
|
|
51
|
+
// Only response to these message types (note should be part of generic pub/sub pattern in framework)
|
|
52
|
+
if (messageData.subCommand) {
|
|
53
|
+
if (messageData.subCommand.localeCompare(InstrumentManagerSubCommand.OUTPUT_SUBSCRIPTION) === 0) {
|
|
54
|
+
//console.log(`WorkerProcess.ReceivedMessageFromMaster: messageData: [${JSON.stringify(messageData)}]`.grey);
|
|
55
|
+
console.log(`WorkerProcess.ReceivedMessageFromMaster`.grey);
|
|
56
|
+
const { socketId, workerId, model } = messageData; //@@ type
|
|
57
|
+
|
|
58
|
+
if (cluster.worker && cluster.worker.id !== workerId) {
|
|
59
|
+
// Invalid data - this workerId must match
|
|
60
|
+
console.log(`WorkerProcess.ReceivedMessageFromMaster: Invalid workerId: [${workerId}]. Should have been: [${cluster.worker.id}].`.red);
|
|
61
|
+
} else {
|
|
62
|
+
const workerProcess: WorkerProcess = this as WorkerProcess;
|
|
63
|
+
if (workerProcess.stsMonitorNamespace !== null) {
|
|
64
|
+
const stsMonitorNamespace = workerProcess.stsMonitorNamespace.socketionamespace;
|
|
65
|
+
const sockets = await stsMonitorNamespace.fetchSockets();
|
|
66
|
+
for (const socket of sockets) {
|
|
67
|
+
if (socket.id.localeCompare(socketId) === 0) {
|
|
68
|
+
console.log(`WorkerProcess.ReceivedMessageFromMaster: Sending payload to subscribed client.`.green);
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
70
|
+
socket.emit(STSEvent.STSSubInstrumentData as any, model);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
console.log(`WorkerProcess.ReceivedMessageFromMaster: Invalid socketId. Expecting socket to existing in socket namespace collection.`.red);
|
|
75
|
+
// Invalid - could not find matching socketid to send to
|
|
76
|
+
} else {
|
|
77
|
+
console.log(`WorkerProcess.ReceivedMessageFromMaster: Invalid workerProcess.stsMonitorNamespace is null. Expecting non-null value.`.red);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
#SendIPCMessageToMaster(socket: Socket, eventName: any, data: any): void {
|
|
85
|
+
try {
|
|
86
|
+
if (cluster.worker) {
|
|
87
|
+
console.log(`WorkerProcess.#SendIPCMessageToMaster: eventName: [${eventName}]`.grey);
|
|
88
|
+
const payload: IIPCSocketMessage = {
|
|
89
|
+
socketId: socket.id,
|
|
90
|
+
workerId: cluster.worker.id,
|
|
91
|
+
data: data
|
|
92
|
+
}
|
|
93
|
+
//console.log(`WorkerProcess.#SendIPCMessageToMaster: payload: [${JSON.stringify(payload)}]`.grey);
|
|
94
|
+
console.log(`WorkerProcess.#SendIPCMessageToMaster`.grey);
|
|
95
|
+
(process as any).send( { command: eventName, payload }, null, { swallowErrors: true }, (error: any) => {
|
|
96
|
+
if (error) {
|
|
97
|
+
console.error(`Error with WorkerProcess:SendIPCMessageToMaster(1): [${error}]`.red);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
} catch (error) {
|
|
102
|
+
console.error(`Error with WorkerProcess:SendIPCMessageToMaster(2): [${error}]`.red);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
#GetServerSocketEvent(eventName: any): ServerSocketEvent {
|
|
107
|
+
return {
|
|
108
|
+
serverEventName: eventName,
|
|
109
|
+
serverEventCb: (socket, data): void => this.#SendIPCMessageToMaster(socket, eventName, data)
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
WorkerStarted(): any
|
|
114
|
+
{
|
|
115
|
+
let socketIoNamespace: STSSocketIONamespace | null = null;
|
|
116
|
+
if (this.socketIoServerHelper) {
|
|
117
|
+
socketIoNamespace = this.socketIoServerHelper.SetupNamespace(this.io as any, STSNamespace.STSMonitor, [
|
|
118
|
+
STSRoom.STSInstrumentDataRoom,
|
|
119
|
+
STSRoom.STSRunnerRoom
|
|
120
|
+
],
|
|
121
|
+
false,
|
|
122
|
+
[
|
|
123
|
+
this.#GetServerSocketEvent(InstrumentManagerEventName.SUBSCRIBE),
|
|
124
|
+
this.#GetServerSocketEvent(InstrumentManagerEventName.UNSUBSCRIBE),
|
|
125
|
+
this.#GetServerSocketEvent(InstrumentManagerEventName.SUBSCRIBE_KEEP_ALIVE),
|
|
126
|
+
{
|
|
127
|
+
serverEventName: InstrumentManagerEventName.CONNECT,
|
|
128
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
129
|
+
serverEventCb: (socket, data): void => {
|
|
130
|
+
console.log(`WorkerProcess.#SendIPCMessageToMaster: eventName: [${ InstrumentManagerEventName.CONNECT}]`.grey);
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
serverEventName: 'sts_connect',
|
|
135
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
136
|
+
serverEventCb: (socket, data): void => {
|
|
137
|
+
console.log(`WorkerProcess.#SendIPCMessageToMaster: eventName: [${ InstrumentManagerEventName.CONNECT}]`.grey);
|
|
138
|
+
socket.emit('sts_connect_reply', { someData: 'hello world'});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
]);
|
|
142
|
+
} else {
|
|
143
|
+
throw new Error('WorkerProcess:WorkerStarted(): this.socketIoHelper is null')
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
get stsMonitorNamespace(): STSSocketIONamespace | null {
|
|
148
|
+
if (this.socketIoServerHelper !== null) {
|
|
149
|
+
return this.socketIoServerHelper.GetNamespace(STSNamespace.STSMonitor);
|
|
150
|
+
}
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
version: '2'
|
|
2
|
+
services:
|
|
3
|
+
zookeeper:
|
|
4
|
+
image: wurstmeister/zookeeper
|
|
5
|
+
ports:
|
|
6
|
+
- "2181:2181"
|
|
7
|
+
restart: unless-stopped
|
|
8
|
+
|
|
9
|
+
kafka:
|
|
10
|
+
image: wurstmeister/kafka
|
|
11
|
+
ports:
|
|
12
|
+
- "9092:9092"
|
|
13
|
+
environment:
|
|
14
|
+
DOCKER_API_VERSION: 1.22
|
|
15
|
+
KAFKA_ADVERTISED_HOST_NAME: 192.168.14.92
|
|
16
|
+
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
|
|
17
|
+
KAFKA_CREATE_TOPICS: "topic-name2:3:1"
|
|
18
|
+
volumes:
|
|
19
|
+
- /var/run/docker.sock:/var/run/docker.sock
|
|
20
|
+
restart: unless-stopped
|
|
@@ -15,13 +15,48 @@ import * as https from 'node:https'
|
|
|
15
15
|
|
|
16
16
|
import { it, beforeAll, afterAll, test, describe, expect } from 'vitest';
|
|
17
17
|
|
|
18
|
+
import { ISocketDetail, SocketIoClientHelper, ISocketIoClientHelperOptions } from '@nsshunt/stssocketio-client'
|
|
19
|
+
|
|
20
|
+
import { WorkerProcessBase, STSNamespace, STSRoom, SocketIoServerHelper, ServerSocketEvent,
|
|
21
|
+
STSEvent, IProcessBase, STSSocketIONamespace, STSClientSocket } from './../index'
|
|
22
|
+
|
|
23
|
+
//const { Kafka } = require('kafkajs')
|
|
24
|
+
|
|
25
|
+
import { DockerComposeEnvironment, Wait, AlwaysPullPolicy } from 'testcontainers'
|
|
26
|
+
|
|
18
27
|
describe("Single Server Test", () =>
|
|
19
28
|
{
|
|
29
|
+
/*
|
|
30
|
+
const kafka = new Kafka({
|
|
31
|
+
clientId: 'my-app',
|
|
32
|
+
brokers: ['192.168.14.92:9092']
|
|
33
|
+
//brokers: ['localhost:9092', 'kafka2:9092'],
|
|
34
|
+
})
|
|
35
|
+
let producer: any;
|
|
36
|
+
let environment: any;
|
|
37
|
+
*/
|
|
38
|
+
|
|
20
39
|
let app: SingleProcessBase | MasterProcessBase | null = null;
|
|
21
40
|
let httpsAgent: https.Agent | null = null;
|
|
22
41
|
|
|
23
42
|
const endpoint = 'https://localhost'
|
|
24
43
|
|
|
44
|
+
const socketUtilsoptions: ISocketIoClientHelperOptions = {
|
|
45
|
+
agentOptions: {
|
|
46
|
+
keepAlive: goptions.keepAlive,
|
|
47
|
+
maxSockets: goptions.maxSockets,
|
|
48
|
+
maxTotalSockets: goptions.maxTotalSockets,
|
|
49
|
+
maxFreeSockets: goptions.maxFreeSockets,
|
|
50
|
+
timeout: 30000, //@@ config
|
|
51
|
+
rejectUnauthorized: goptions.isProduction // Allows self signed certs in non production mode(s)
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const socketUtils = new SocketIoClientHelper(socketUtilsoptions);
|
|
56
|
+
|
|
57
|
+
const instrumentManagerAddress =
|
|
58
|
+
`${endpoint}:${goptions.rest01port}/${STSNamespace.STSMonitor}/`;
|
|
59
|
+
|
|
25
60
|
const HandleError = (error: any) => {
|
|
26
61
|
debug(`Error: [${error}]`.red)
|
|
27
62
|
if (axios.isAxiosError(error)) {
|
|
@@ -69,8 +104,6 @@ describe("Single Server Test", () =>
|
|
|
69
104
|
,httpsAgent: httpsAgent
|
|
70
105
|
});
|
|
71
106
|
|
|
72
|
-
//debug(retVal.data);
|
|
73
|
-
|
|
74
107
|
return retVal;
|
|
75
108
|
} catch (error: any) {
|
|
76
109
|
HandleError(error);
|
|
@@ -78,10 +111,63 @@ describe("Single Server Test", () =>
|
|
|
78
111
|
}
|
|
79
112
|
}
|
|
80
113
|
|
|
114
|
+
/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars */
|
|
115
|
+
/*
|
|
116
|
+
const socketDetail: ISocketDetail = socketUtils.SetupClientSideSocket('STSUITerm', instrumentManagerAddress, [
|
|
117
|
+
{
|
|
118
|
+
eventName: 'hello',
|
|
119
|
+
eventCb: (socket: any, data: any): void => {
|
|
120
|
+
debug(`Received: [hello:${data}]`);
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
eventName: 'goodbye',
|
|
125
|
+
eventCb: (socket: any, data: any) => {
|
|
126
|
+
debug(`Received: [goodbye:${data}]`);
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
eventName: 'registerEcho',
|
|
131
|
+
eventCb: (socket: any, data: any) => {
|
|
132
|
+
debug(`Received: [registerEcho:${JSON.stringify(data)}]`);
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
eventName: STSEvent.connect,
|
|
137
|
+
eventCb: (socket: STSClientSocket, data: any) => {
|
|
138
|
+
socket.emit('joinRoom', STSRoom.STSInstrumentDataRoom);
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
eventName: 'sts_connect_reply',
|
|
143
|
+
eventCb: (socket: STSClientSocket, data: any) => {
|
|
144
|
+
debug(`Received: [sts_connect_reply:${JSON.stringify(data)}]`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
]);
|
|
148
|
+
*/
|
|
81
149
|
|
|
82
150
|
beforeAll(async () =>
|
|
83
151
|
{
|
|
84
|
-
|
|
152
|
+
/*
|
|
153
|
+
const composeFilePath = "/home/marcusbettens/projects/stsappframework/src/testing";
|
|
154
|
+
const composeFile = "docker-compose.yml";
|
|
155
|
+
try {
|
|
156
|
+
environment = await new DockerComposeEnvironment(composeFilePath, composeFile)
|
|
157
|
+
.withWaitStrategy("kafka", Wait.forLogMessage("[KafkaServer id=1001] started (kafka.server.KafkaServer)"))
|
|
158
|
+
.withPullPolicy(new AlwaysPullPolicy())
|
|
159
|
+
.up()
|
|
160
|
+
} catch (error) {
|
|
161
|
+
console.error(error)
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
*/
|
|
166
|
+
|
|
167
|
+
/*
|
|
168
|
+
producer = kafka.producer()
|
|
169
|
+
await producer.connect()
|
|
170
|
+
*/
|
|
85
171
|
|
|
86
172
|
/*
|
|
87
173
|
process.env.AS_ENDPOINT = testHelper.authHost;
|
|
@@ -95,7 +181,7 @@ describe("Single Server Test", () =>
|
|
|
95
181
|
//goptions.asport = testHelper.authPort;
|
|
96
182
|
*/
|
|
97
183
|
|
|
98
|
-
const appOptions = ServiceConfigOptions(true);
|
|
184
|
+
const appOptions = ServiceConfigOptions(true, true);
|
|
99
185
|
appOptions.processExitOnTerminate = false;
|
|
100
186
|
//app = new SingleProcessBase(appOptions)
|
|
101
187
|
app = new MasterProcessBase(appOptions)
|
|
@@ -107,6 +193,11 @@ describe("Single Server Test", () =>
|
|
|
107
193
|
{
|
|
108
194
|
await Sleep(500);
|
|
109
195
|
|
|
196
|
+
// Kafka disconnect
|
|
197
|
+
//await producer.disconnect()
|
|
198
|
+
|
|
199
|
+
//@@await environment.down();
|
|
200
|
+
|
|
110
201
|
//await (app as SingleProcessBase).TerminateApplication();
|
|
111
202
|
await Sleep(1000);
|
|
112
203
|
app = null;
|
|
@@ -131,11 +222,47 @@ describe("Single Server Test", () =>
|
|
|
131
222
|
const num = 50;
|
|
132
223
|
expect.assertions(num * 2);
|
|
133
224
|
for (let i=0; i < num; i++) {
|
|
225
|
+
|
|
226
|
+
/*
|
|
227
|
+
const retValKafka = await producer.send({
|
|
228
|
+
topic: 'topic-name2',
|
|
229
|
+
messages: [
|
|
230
|
+
{ key: 'key1', value: `hello world - ${i}` },
|
|
231
|
+
],
|
|
232
|
+
})
|
|
233
|
+
*/
|
|
234
|
+
|
|
134
235
|
const retVal = await getLatency();
|
|
135
236
|
const retValObj = retVal?.data.data;
|
|
136
237
|
expect(retValObj).toMatch('Ping Completed At:');
|
|
137
238
|
expect(retVal && retVal.status).toEqual(200);
|
|
138
239
|
}
|
|
139
240
|
}, 10000);
|
|
241
|
+
|
|
242
|
+
test('client socket testing', async () =>
|
|
243
|
+
{
|
|
244
|
+
expect.assertions(1);
|
|
245
|
+
|
|
246
|
+
let complete = false;
|
|
247
|
+
|
|
248
|
+
const socketDetail: ISocketDetail = socketUtils.SetupClientSideSocket('STSUITerm', instrumentManagerAddress, [
|
|
249
|
+
{
|
|
250
|
+
eventName: 'sts_connect_reply',
|
|
251
|
+
eventCb: (socket: STSClientSocket, data: any) => {
|
|
252
|
+
debug(`Received: [sts_connect_reply:${JSON.stringify(data)}]`);
|
|
253
|
+
expect(1).toEqual(1);
|
|
254
|
+
complete = true;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
]);
|
|
258
|
+
|
|
259
|
+
socketDetail.socket?.emit('sts_connect')
|
|
260
|
+
|
|
261
|
+
while (!complete) {
|
|
262
|
+
await Sleep(100);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
//expect(1).toEqual(1);
|
|
266
|
+
}, 3000);
|
|
140
267
|
});
|
|
141
268
|
|
package/src/workerprocessbase.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import debugModule from 'debug'
|
|
2
2
|
const debug = debugModule(`proc:${process.pid}`);
|
|
3
3
|
|
|
4
|
-
|
|
5
4
|
import { Gauge, InstrumentGaugeTelemetry } from '@nsshunt/stsinstrumentation'
|
|
6
5
|
import { JSONObject } from '@nsshunt/stsutils'
|
|
7
6
|
import { ProcessOptions } from './processoptions'
|
|
@@ -121,5 +121,9 @@ export interface ProcessOptions {
|
|
|
121
121
|
useRedisInstrumentationTransport?: boolean;
|
|
122
122
|
redisInstrumentationTransportUrl?: string;
|
|
123
123
|
workerExec?: string;
|
|
124
|
+
/**
|
|
125
|
+
* Is this application using nodejs cluster mode?
|
|
126
|
+
*/
|
|
127
|
+
clusterMode: boolean;
|
|
124
128
|
}
|
|
125
129
|
//# sourceMappingURL=processoptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processoptions.d.ts","sourceRoot":"","sources":["../src/processoptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,MAAM,WAAW,gBAAgB;IAChC,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;AAEtF,oBAAY,aAAa;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC9B,UAAU,eAAe;IACtB,YAAY,gBAAgB;CAC/B;AAGD,MAAM,WAAW,cAAc;IACvB;;GAED;IACH,QAAQ,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACN,iBAAiB,EAAE,MAAM,CAAA;IAItB,UAAU,EAAE,aAAa,CAAA;IAE5B;;OAEG;IACA,kBAAkB,EAAE,MAAM,CAAA;IAE7B;;OAEG;IACA,0BAA0B,EAAE,MAAM,CAAA;IAElC;;OAEG;IACH,sBAAsB,EAAE,OAAO,CAAA;IAE/B;;OAEG;IACH,SAAS,EAAE,OAAO,CAAA;IAErB;;OAEG;IACA,iBAAiB,EAAE,OAAO,CAAA;IAE7B;;OAEG;IACA,QAAQ,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACA,OAAO,EAAE,MAAM,CAAA;IAEf;;;;;;;;;;;OAWG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEf;;OAEG;IACA,qBAAqB,EAAE,MAAM,CAAA;IAEhC;;OAEG;IACA,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEA;IACA,cAAc,EAAE,MAAM,CAAA;IAEtB;;OAEG;IACH,cAAc,EAAE,OAAO,CAAA;IAEvB;;OAEG;IACH,iBAAiB,EAAE,OAAO,CAAA;IAI1B,qBAAqB,CAAC,EAAE,sBAAsB,CAAA;IAE9C;;;OAGG;IACH,yBAAyB,CAAC,EAAE,mBAAmB,CAAA;IAE/C;;;OAGG;IACH,+BAA+B,CAAC,EAAE,mBAAmB,CAAA;IAErD;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAA;IAEnB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;IAEpB;;OAEG;IACH,yBAAyB,EAAE,OAAO,CAAA;IAElC,kCAAkC,EAAE,MAAM,CAAA;IAE1C,yBAAyB,EAAE,MAAM,CAAA;IAEjC,eAAe,EAAE,OAAO,CAAA;IAExB,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,gCAAgC,CAAC,EAAE,OAAO,CAAA;IAE1C,gCAAgC,CAAC,EAAE,MAAM,CAAA;IAEzC,UAAU,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"processoptions.d.ts","sourceRoot":"","sources":["../src/processoptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,MAAM,WAAW,gBAAgB;IAChC,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;AAEtF,oBAAY,aAAa;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC9B,UAAU,eAAe;IACtB,YAAY,gBAAgB;CAC/B;AAGD,MAAM,WAAW,cAAc;IACvB;;GAED;IACH,QAAQ,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACN,iBAAiB,EAAE,MAAM,CAAA;IAItB,UAAU,EAAE,aAAa,CAAA;IAE5B;;OAEG;IACA,kBAAkB,EAAE,MAAM,CAAA;IAE7B;;OAEG;IACA,0BAA0B,EAAE,MAAM,CAAA;IAElC;;OAEG;IACH,sBAAsB,EAAE,OAAO,CAAA;IAE/B;;OAEG;IACH,SAAS,EAAE,OAAO,CAAA;IAErB;;OAEG;IACA,iBAAiB,EAAE,OAAO,CAAA;IAE7B;;OAEG;IACA,QAAQ,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACA,OAAO,EAAE,MAAM,CAAA;IAEf;;;;;;;;;;;OAWG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEf;;OAEG;IACA,qBAAqB,EAAE,MAAM,CAAA;IAEhC;;OAEG;IACA,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEA;IACA,cAAc,EAAE,MAAM,CAAA;IAEtB;;OAEG;IACH,cAAc,EAAE,OAAO,CAAA;IAEvB;;OAEG;IACH,iBAAiB,EAAE,OAAO,CAAA;IAI1B,qBAAqB,CAAC,EAAE,sBAAsB,CAAA;IAE9C;;;OAGG;IACH,yBAAyB,CAAC,EAAE,mBAAmB,CAAA;IAE/C;;;OAGG;IACH,+BAA+B,CAAC,EAAE,mBAAmB,CAAA;IAErD;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAA;IAEnB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;IAEpB;;OAEG;IACH,yBAAyB,EAAE,OAAO,CAAA;IAElC,kCAAkC,EAAE,MAAM,CAAA;IAE1C,yBAAyB,EAAE,MAAM,CAAA;IAEjC,eAAe,EAAE,OAAO,CAAA;IAExB,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,gCAAgC,CAAC,EAAE,OAAO,CAAA;IAE1C,gCAAgC,CAAC,EAAE,MAAM,CAAA;IAEzC,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;CACvB"}
|
|
@@ -15,7 +15,7 @@ export declare class ServerProcessBase extends ProcessBase {
|
|
|
15
15
|
get expressServer(): STSExpressServer | null;
|
|
16
16
|
set expressServer(val: STSExpressServer | null);
|
|
17
17
|
ProcessTerminating: () => Promise<void>;
|
|
18
|
-
Terminate: (
|
|
18
|
+
Terminate: (clusterPerformExit: boolean, signal?: any) => Promise<void>;
|
|
19
19
|
SetupSTSServer: () => Promise<void>;
|
|
20
20
|
}
|
|
21
21
|
//# sourceMappingURL=serverprocessbase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverprocessbase.d.ts","sourceRoot":"","sources":["../src/serverprocessbase.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAiB,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAS5C,OAAO,EAAE,MAAM,EAAiB,MAAM,WAAW,CAAC;AAKlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAO5C;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;;gBAUlC,OAAO,EAAE,cAAc;IAInC,IAAI,UAAU,QAEb;IAED,IAAI,EAAE,+LAEL;IAED,IAAI,aAAa,IAAI,gBAAgB,GAAG,IAAI,CAE3C;IACD,IAAI,aAAa,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,EAE7C;IAiMD,kBAAkB,QAAa,QAAQ,IAAI,CAAC,CAE3C;IASD,SAAS,
|
|
1
|
+
{"version":3,"file":"serverprocessbase.d.ts","sourceRoot":"","sources":["../src/serverprocessbase.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAiB,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAS5C,OAAO,EAAE,MAAM,EAAiB,MAAM,WAAW,CAAC;AAKlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAO5C;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;;gBAUlC,OAAO,EAAE,cAAc;IAInC,IAAI,UAAU,QAEb;IAED,IAAI,EAAE,+LAEL;IAED,IAAI,aAAa,IAAI,gBAAgB,GAAG,IAAI,CAE3C;IACD,IAAI,aAAa,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,EAE7C;IAiMD,kBAAkB,QAAa,QAAQ,IAAI,CAAC,CAE3C;IASD,SAAS,uBAA8B,OAAO,WAAW,GAAG,KAAG,QAAQ,IAAI,CAAC,CAkG3E;IAED,cAAc,QAAY,QAAQ,IAAI,CAAC,CAetC;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stslatencycontroller.d.ts","sourceRoot":"","sources":["../src/stslatencycontroller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,qBAAa,oBAAqB,SAAQ,iBAAiB;gBAE3C,MAAM,EAAE,YAAY;IAK1B,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;
|
|
1
|
+
{"version":3,"file":"stslatencycontroller.d.ts","sourceRoot":"","sources":["../src/stslatencycontroller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,qBAAa,oBAAqB,SAAQ,iBAAiB;gBAE3C,MAAM,EAAE,YAAY;IAK1B,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CActC"}
|