@nsshunt/stsappframework 3.0.185 → 3.0.186
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/build.sh +1 -0
- package/dist/authutilsnode.js +9 -3
- package/dist/authutilsnode.js.map +1 -1
- package/dist/influxdb/influxDBManager.js +18 -15
- package/dist/influxdb/influxDBManager.js.map +1 -1
- package/dist/influxdb/influxDBManagerAgent.js +4 -1
- package/dist/influxdb/influxDBManagerAgent.js.map +1 -1
- package/dist/influxdb/influxDBManagerService.js +4 -2
- package/dist/influxdb/influxDBManagerService.js.map +1 -1
- package/dist/kafka/IMKafkaManager.js +8 -5
- package/dist/kafka/IMKafkaManager.js.map +1 -1
- package/dist/middleware/serverNetworkMiddleware.js +96 -22
- package/dist/middleware/serverNetworkMiddleware.js.map +1 -1
- package/dist/publishertransports/publishTransportDirect.js.map +1 -1
- package/dist/socketIoServerHelper.js +12 -15
- package/dist/socketIoServerHelper.js.map +1 -1
- package/package.json +1 -1
- package/src/authutilsnode.ts +20 -10
- package/src/influxdb/influxDBManager.ts +19 -15
- package/src/influxdb/influxDBManagerAgent.ts +5 -1
- package/src/influxdb/influxDBManagerService.ts +5 -1
- package/src/kafka/IMKafkaManager.ts +9 -5
- package/src/middleware/serverNetworkMiddleware.ts +98 -22
- package/src/publishertransports/publishTransportDirect.ts +0 -1
- package/src/socketIoServerHelper.ts +13 -12
- package/types/authutilsnode.d.ts +5 -1
- package/types/authutilsnode.d.ts.map +1 -1
- package/types/influxdb/influxDBManager.d.ts.map +1 -1
- package/types/influxdb/influxDBManagerAgent.d.ts.map +1 -1
- package/types/influxdb/influxDBManagerService.d.ts.map +1 -1
- package/types/kafka/IMKafkaManager.d.ts.map +1 -1
- package/types/middleware/serverNetworkMiddleware.d.ts.map +1 -1
- package/types/publishertransports/publishTransportDirect.d.ts.map +1 -1
- package/types/socketIoServerHelper.d.ts.map +1 -1
|
@@ -61,6 +61,10 @@ export class IMKafkaManager {
|
|
|
61
61
|
this.#options.logger.error(message);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
+
#LogDebugMessage(message: any) {
|
|
65
|
+
this.#options.logger.debug(message);
|
|
66
|
+
}
|
|
67
|
+
|
|
64
68
|
#RaiseError = (msg: string, errorCb: (error: any) => void) => {
|
|
65
69
|
this.#LogErrorMessage(chalk.red(msg));
|
|
66
70
|
errorCb(msg);
|
|
@@ -80,10 +84,10 @@ export class IMKafkaManager {
|
|
|
80
84
|
Terminate = async (errorCb: (error: any) => void): Promise<void> => {
|
|
81
85
|
try {
|
|
82
86
|
if (this.#shuttingDown) {
|
|
83
|
-
|
|
87
|
+
this.#LogDebugMessage(chalk.yellow(`${process.pid}:IMKafkaManager:Terminate: Terminate already called. Ignoring.`));
|
|
84
88
|
} else {
|
|
85
89
|
this.#shuttingDown = true;
|
|
86
|
-
|
|
90
|
+
this.#LogDebugMessage(chalk.yellow(`${process.pid}:ProducerDisconnect`));
|
|
87
91
|
if (this.#producer) {
|
|
88
92
|
await this.#producer.Disconnect((error) => {
|
|
89
93
|
this.#RaiseError(`${process.pid}:IMKafkaManager:Terminate(): Error in producer.Disconnect: [${error}]`, errorCb);
|
|
@@ -99,7 +103,7 @@ export class IMKafkaManager {
|
|
|
99
103
|
const topic = topicRaw.toLowerCase();
|
|
100
104
|
try {
|
|
101
105
|
if (!this.#topics[topic]) {
|
|
102
|
-
|
|
106
|
+
this.#LogDebugMessage(chalk.yellow(`${process.pid}:IMKafkaManager:OutputLogsToKafkaTopic(): Setting up kafka topic: [${topic}] Starting`));
|
|
103
107
|
this.#topics[topic] = true;
|
|
104
108
|
|
|
105
109
|
let createTopicError = false;
|
|
@@ -109,9 +113,9 @@ export class IMKafkaManager {
|
|
|
109
113
|
});
|
|
110
114
|
if (!createTopicError) {
|
|
111
115
|
if (result) {
|
|
112
|
-
|
|
116
|
+
this.#LogDebugMessage(chalk.yellow(`${process.pid}:IMKafkaManager:OutputLogsToKafkaTopic(): Setting up kafka topic: [${topic}] Completed`));
|
|
113
117
|
} else {
|
|
114
|
-
|
|
118
|
+
this.#LogDebugMessage(chalk.cyan(`${process.pid}:IMKafkaManager:OutputLogsToKafkaTopic(): Setting up kafka topic: [${topic}] Completed - topic already exists`));
|
|
115
119
|
}
|
|
116
120
|
}
|
|
117
121
|
}
|
|
@@ -51,6 +51,58 @@ export class ServerNetworkMiddleware extends STSOptionsBase
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
#LogDebugMessage2(message: any) {
|
|
55
|
+
try {
|
|
56
|
+
this.options?.logger.debug(message);
|
|
57
|
+
} catch (error) {
|
|
58
|
+
console.log(`*********************************************************************************`)
|
|
59
|
+
console.log(`*********************************************************************************`)
|
|
60
|
+
console.log(`*********************************************************************************`)
|
|
61
|
+
console.log(`*********************************************************************************`)
|
|
62
|
+
console.log(`*********************************************************************************`)
|
|
63
|
+
console.log(`*********************************************************************************`)
|
|
64
|
+
console.log(`*********************************************************************************`)
|
|
65
|
+
console.log(`*********************************************************************************`)
|
|
66
|
+
console.error(error);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
#LogDebugMessage(message: any) {
|
|
71
|
+
console.log(`*********************************************************************************`)
|
|
72
|
+
console.log(`*********************************************************************************`)
|
|
73
|
+
console.log(`*********************************************************************************`)
|
|
74
|
+
console.log(`*********************************************************************************`)
|
|
75
|
+
console.log(`*********************************************************************************`)
|
|
76
|
+
console.log(`*********************************************************************************`)
|
|
77
|
+
console.log(`*********************************************************************************`)
|
|
78
|
+
console.log(`*********************************************************************************`)
|
|
79
|
+
setImmediate(() => {
|
|
80
|
+
if (this.options) {
|
|
81
|
+
try {
|
|
82
|
+
console.log(`*********************************************************************************`)
|
|
83
|
+
console.log(`*********************************************************************************`)
|
|
84
|
+
console.log(`*********************************************************************************`)
|
|
85
|
+
console.log(`*********************************************************************************`)
|
|
86
|
+
console.log(`*********************************************************************************`)
|
|
87
|
+
console.log(`*********************************************************************************`)
|
|
88
|
+
console.log(`*********************************************************************************`)
|
|
89
|
+
console.log(`*********************************************************************************`)
|
|
90
|
+
this.options?.logger.debug(message)
|
|
91
|
+
} catch (error) {
|
|
92
|
+
console.log(`*********************************************************************************`)
|
|
93
|
+
console.log(`*********************************************************************************`)
|
|
94
|
+
console.log(`*********************************************************************************`)
|
|
95
|
+
console.log(`*********************************************************************************`)
|
|
96
|
+
console.log(`*********************************************************************************`)
|
|
97
|
+
console.log(`*********************************************************************************`)
|
|
98
|
+
console.log(`*********************************************************************************`)
|
|
99
|
+
console.log(`*********************************************************************************`)
|
|
100
|
+
console.error(error);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
54
106
|
on(eventName: ServerNetworkMiddlewareEventName, callBackFn: ServerNetworkMiddlewareEventFunc) {
|
|
55
107
|
this.#tinyEmitter.on(eventName, callBackFn);
|
|
56
108
|
}
|
|
@@ -74,12 +126,12 @@ export class ServerNetworkMiddleware extends STSOptionsBase
|
|
|
74
126
|
workingSocketRecord.requestBytesRead = workingSocketRecord.currentBytesRead - workingSocketRecord.lastBytesRead;
|
|
75
127
|
workingSocketRecord.requestBytesWritten = workingSocketRecord.currentBytesWritten - workingSocketRecord.lastBytesWritten;
|
|
76
128
|
|
|
77
|
-
//this.#
|
|
78
|
-
//this.#
|
|
129
|
+
//this.#LogDebugMessage(chalk.gray(`totalBytesRead: [${workingSocketRecord.id}] [${workingSocketRecord.originalUrl}] [${eventName}] [${workingSocketRecord.requestBytesRead}]`));
|
|
130
|
+
//this.#LogDebugMessage(chalk.gray(`totalBytesWritten: [${workingSocketRecord.id}] [${workingSocketRecord.originalUrl}] [${eventName}] [${workingSocketRecord.requestBytesWritten}]`));
|
|
79
131
|
|
|
80
132
|
const workingSocketEventRecord = { ...workingSocketRecord };
|
|
81
133
|
delete (workingSocketEventRecord as any).socket;
|
|
82
|
-
this.#
|
|
134
|
+
this.#LogDebugMessage(chalk.gray(`Sending event: [${JSON.stringify(workingSocketEventRecord)}]`));
|
|
83
135
|
this.#tinyEmitter.emit(ServerNetworkMiddlewareEventName.UpdateInstrument_SERVER_NET_VAL, workingSocketEventRecord);
|
|
84
136
|
|
|
85
137
|
workingSocketRecord.lastBytesRead = workingSocketRecord.currentBytesRead;
|
|
@@ -98,7 +150,7 @@ export class ServerNetworkMiddleware extends STSOptionsBase
|
|
|
98
150
|
}
|
|
99
151
|
return contentLength;
|
|
100
152
|
} catch (error) {
|
|
101
|
-
this.#
|
|
153
|
+
this.#LogDebugMessage(chalk.red(`ServerNetworkMiddleware:#GetRequestContentSize(): Error: [${error}]`));
|
|
102
154
|
return 0;
|
|
103
155
|
}
|
|
104
156
|
}
|
|
@@ -125,37 +177,37 @@ export class ServerNetworkMiddleware extends STSOptionsBase
|
|
|
125
177
|
|
|
126
178
|
this.#socketCollection[workingSocketRecord.id] = workingSocketRecord;
|
|
127
179
|
|
|
128
|
-
this.#
|
|
180
|
+
this.#LogDebugMessage(chalk.gray(`Adding new socket to recordset: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`));
|
|
129
181
|
|
|
130
182
|
workingSocketRecord.socket.on('data', () => {
|
|
131
183
|
const socketRecord = this.GetSocketRecord((workingSocketRecord as ISocketRecord).socket);
|
|
132
184
|
if (socketRecord) {
|
|
133
|
-
this.#
|
|
185
|
+
this.#LogDebugMessage(chalk.gray(`Socket data event: ID: [${socketRecord.id}], originalUrl: [${socketRecord.originalUrl}]`));
|
|
134
186
|
this.UpdateNetworkStats(socketRecord, 'socket_data', req);
|
|
135
187
|
} else {
|
|
136
|
-
this.#
|
|
188
|
+
this.#LogDebugMessage(chalk.magenta(`Socket data event: Could not find socket within recordset`));
|
|
137
189
|
}
|
|
138
190
|
});
|
|
139
191
|
|
|
140
192
|
workingSocketRecord.socket.on('close', () => {
|
|
141
193
|
const socketRecord = this.GetSocketRecord((workingSocketRecord as ISocketRecord).socket);
|
|
142
194
|
if (socketRecord) {
|
|
143
|
-
this.#
|
|
195
|
+
this.#LogDebugMessage(chalk.gray(`Socket close event: ID: [${socketRecord.id}], originalUrl: [${socketRecord.originalUrl}]`));
|
|
144
196
|
this.UpdateNetworkStats(socketRecord, 'socket_close', req);
|
|
145
197
|
delete this.#socketCollection[socketRecord.id];
|
|
146
|
-
this.#
|
|
198
|
+
this.#LogDebugMessage(chalk.gray(`Socket removed from recordset: ID: [${socketRecord.id}], originalUrl: [${socketRecord.originalUrl}]`));
|
|
147
199
|
} else {
|
|
148
|
-
this.#
|
|
200
|
+
this.#LogDebugMessage(chalk.magenta(`Socket close event: Could not find socket within recordset`));
|
|
149
201
|
}
|
|
150
202
|
});
|
|
151
203
|
|
|
152
204
|
workingSocketRecord.socket.on('end', () => {
|
|
153
205
|
const socketRecord = this.GetSocketRecord((workingSocketRecord as ISocketRecord).socket);
|
|
154
206
|
if (socketRecord) {
|
|
155
|
-
this.#
|
|
207
|
+
this.#LogDebugMessage(chalk.gray(`Socket end event: ID: [${socketRecord.id}], originalUrl: [${socketRecord.originalUrl}]`));
|
|
156
208
|
this.UpdateNetworkStats(socketRecord, 'socket_end', req);
|
|
157
209
|
} else {
|
|
158
|
-
this.#
|
|
210
|
+
this.#LogDebugMessage(chalk.magenta(`Socket end event: Could not find socket within recordset`));
|
|
159
211
|
}
|
|
160
212
|
});
|
|
161
213
|
}
|
|
@@ -180,27 +232,27 @@ export class ServerNetworkMiddleware extends STSOptionsBase
|
|
|
180
232
|
const headerLength = JSON.stringify(res.getHeaders()).length;
|
|
181
233
|
const totalSize = contentLength + headerLength;
|
|
182
234
|
|
|
183
|
-
this.#
|
|
235
|
+
this.#LogDebugMessage(chalk.white.bgBlue(`contentLength: [${contentLength}], headerLength: [${headerLength}], total Size: [${totalSize}]`));
|
|
184
236
|
});
|
|
185
237
|
|
|
186
238
|
// This event is the one where bytesWritten is generally recorded
|
|
187
239
|
req.on('end', () => {
|
|
188
240
|
const socketRecord = this.GetSocketRecord(req.socket);
|
|
189
241
|
if (socketRecord) {
|
|
190
|
-
this.#
|
|
242
|
+
this.#LogDebugMessage(chalk.gray(`Request end event: ID: [${socketRecord.id}], originalUrl: [${socketRecord.originalUrl}]`))
|
|
191
243
|
this.UpdateNetworkStats(socketRecord, 'req_end', req);
|
|
192
244
|
} else {
|
|
193
|
-
this.#
|
|
245
|
+
this.#LogDebugMessage(chalk.magenta(`Request end event: Could not find socket within recordset`));
|
|
194
246
|
}
|
|
195
247
|
});
|
|
196
248
|
|
|
197
249
|
req.on('close', () => {
|
|
198
250
|
const socketRecord = this.GetSocketRecord(req.socket);
|
|
199
251
|
if (socketRecord) {
|
|
200
|
-
this.#
|
|
252
|
+
this.#LogDebugMessage(chalk.gray(`Request close event: ID: [${socketRecord.id}], originalUrl: [${socketRecord.originalUrl}]`));
|
|
201
253
|
this.UpdateNetworkStats(socketRecord, 'req_close', req);
|
|
202
254
|
} else {
|
|
203
|
-
this.#
|
|
255
|
+
this.#LogDebugMessage(chalk.magenta(`Request close event: Could not find socket within recordset`));
|
|
204
256
|
}
|
|
205
257
|
});
|
|
206
258
|
|
|
@@ -208,20 +260,20 @@ export class ServerNetworkMiddleware extends STSOptionsBase
|
|
|
208
260
|
req.on('data', () => {
|
|
209
261
|
workingSocketRecord = this.GetSocketRecord(req.socket);
|
|
210
262
|
if (workingSocketRecord) {
|
|
211
|
-
this.#
|
|
263
|
+
this.#LogDebugMessage(chalk.gray(`Request close event: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`));
|
|
212
264
|
this.UpdateNetworkStats(workingSocketRecord, 'data', req);
|
|
213
265
|
} else {
|
|
214
|
-
this.#
|
|
266
|
+
this.#LogDebugMessage(chalk.magenta(`Request close event: Could not find socket within recordset`));
|
|
215
267
|
}
|
|
216
268
|
});
|
|
217
269
|
|
|
218
270
|
req.on('readable', () => {
|
|
219
271
|
workingSocketRecord = this.GetSocketRecord(req.socket);
|
|
220
272
|
if (workingSocketRecord) {
|
|
221
|
-
this.#
|
|
273
|
+
this.#LogDebugMessage(chalk.gray(`Request close event: ID: [${workingSocketRecord.id}], originalUrl: [${workingSocketRecord.originalUrl}]`));
|
|
222
274
|
this.UpdateNetworkStats(workingSocketRecord, 'readable', req);
|
|
223
275
|
} else {
|
|
224
|
-
this.#
|
|
276
|
+
this.#LogDebugMessage(chalk.magenta(`Request close event: Could not find socket within recordset`));
|
|
225
277
|
}
|
|
226
278
|
});
|
|
227
279
|
*/
|
|
@@ -230,11 +282,35 @@ export class ServerNetworkMiddleware extends STSOptionsBase
|
|
|
230
282
|
const inContentLength = this.#GetRequestContentSize(req);
|
|
231
283
|
const inTotal = inHeadersLength + inContentLength;
|
|
232
284
|
|
|
233
|
-
this.#
|
|
285
|
+
this.#LogDebugMessage(chalk.white.bgGray(`inHeadersLength: [${inHeadersLength}], inContentLength: [${inContentLength}], inTotal: [${inTotal}]`));
|
|
234
286
|
|
|
235
287
|
// This event is the one where bytesRead is generally recorded
|
|
236
288
|
this.UpdateNetworkStats(workingSocketRecord, 'middleware', req);
|
|
237
289
|
|
|
290
|
+
console.log(`*********************************************************************************`)
|
|
291
|
+
console.log(`*********************************************************************************`)
|
|
292
|
+
console.log(`*********************************************************************************`)
|
|
293
|
+
console.log(`*********************************************************************************`)
|
|
294
|
+
console.log(`*********************************************************************************`)
|
|
295
|
+
console.log(`*********************************************************************************`)
|
|
296
|
+
console.log(`*********************************************************************************`)
|
|
297
|
+
console.log(`*********************************************************************************`)
|
|
298
|
+
|
|
299
|
+
debug('*****************************************************************************')
|
|
300
|
+
debug('*****************************************************************************')
|
|
301
|
+
debug('*****************************************************************************')
|
|
302
|
+
debug('*****************************************************************************')
|
|
303
|
+
debug('*****************************************************************************')
|
|
304
|
+
debug('*****************************************************************************')
|
|
305
|
+
debug('*****************************************************************************')
|
|
306
|
+
debug('*****************************************************************************')
|
|
307
|
+
debug('*****************************************************************************')
|
|
308
|
+
debug('*****************************************************************************')
|
|
309
|
+
debug('*****************************************************************************')
|
|
310
|
+
debug('*****************************************************************************')
|
|
311
|
+
debug('*****************************************************************************')
|
|
312
|
+
debug('*****************************************************************************')
|
|
313
|
+
|
|
238
314
|
next();
|
|
239
315
|
}
|
|
240
316
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
2
|
|
|
3
3
|
//import Debug from "debug";
|
|
4
|
-
//const debug = Debug(`proc:${process.pid}:PublishRESTServer`);
|
|
5
4
|
|
|
6
5
|
import { IPublisherTransport, IInstrumentPayload } from '@nsshunt/stspublisherserver'
|
|
7
6
|
import { IMKafkaManager } from './../kafka/IMKafkaManager'
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
|
-
import Debug from "debug";
|
|
3
|
-
const debug = Debug(`proc:${process.pid}:socketiohelper`);
|
|
4
|
-
|
|
5
2
|
import { JSONObject, ISTSLogger } from '@nsshunt/stsutils'
|
|
6
3
|
|
|
7
4
|
import { Server, Namespace, Socket } from "socket.io";
|
|
@@ -26,6 +23,10 @@ export class SocketIoServerHelper<ClientToServerEvents extends STSDefaultClientT
|
|
|
26
23
|
|
|
27
24
|
#namespace: Record<string, STSSocketIONamespace> = { };
|
|
28
25
|
|
|
26
|
+
#LogDebugMessage(message: any) {
|
|
27
|
+
this.#socketIoServerHelperOptions.logger.debug(message);
|
|
28
|
+
}
|
|
29
|
+
|
|
29
30
|
LogMessage = (namespace: STSSocketIONamespace, message: string): void => {
|
|
30
31
|
|
|
31
32
|
this.#socketIoServerHelperOptions.logger.info(`${namespace.namespace}: ${message}`);
|
|
@@ -38,32 +39,32 @@ export class SocketIoServerHelper<ClientToServerEvents extends STSDefaultClientT
|
|
|
38
39
|
|
|
39
40
|
LeaveRoom = (namespace: STSSocketIONamespace, socket: Socket<ClientToServerEvents, ServerToClientEvents>, room: string): void => {
|
|
40
41
|
const logMessage = `${namespace.socketionamespace.name}: Leaving room [${room}]`;
|
|
41
|
-
|
|
42
|
+
this.#LogDebugMessage(logMessage);
|
|
42
43
|
this.LogMessage(namespace, logMessage);
|
|
43
44
|
socket.leave(room);
|
|
44
45
|
};
|
|
45
46
|
|
|
46
47
|
JoinRoom = (namespace: STSSocketIONamespace, socket: Socket<ClientToServerEvents, ServerToClientEvents>, room: string): void => {
|
|
47
48
|
const logMessage = `${namespace.socketionamespace.name}: Socket joining room [${room}], ID: [${socket.id}]`;
|
|
48
|
-
|
|
49
|
+
this.#LogDebugMessage(logMessage);
|
|
49
50
|
this.LogMessage(namespace, logMessage);
|
|
50
51
|
socket.join(room);
|
|
51
52
|
};
|
|
52
53
|
|
|
53
54
|
#SetupStandardEvents = (namespace: STSSocketIONamespace, socket: Socket<STSDefaultClientToServerEvents, STSDefaultServerToClientEvents>): void => {
|
|
54
55
|
socket.on("__STSdisconnect", (reason) => {
|
|
55
|
-
|
|
56
|
+
this.#LogDebugMessage(`${namespace.socketionamespace.name}: socket disconnect, ID: [${socket.id}] [${reason}]`);
|
|
56
57
|
});
|
|
57
58
|
|
|
58
59
|
socket.on("__STSdisconnecting", (reason, callBackResult) => {
|
|
59
|
-
|
|
60
|
+
this.#LogDebugMessage(`${namespace.socketionamespace.name}: socket disconnecting, ID: [${socket.id}] [${reason}]`);
|
|
60
61
|
callBackResult("__STSdisconnecting accepted by server.");
|
|
61
62
|
});
|
|
62
63
|
|
|
63
64
|
socket.on('__STSjoinRoom', (rooms: string[]): void => { //@@ names
|
|
64
65
|
rooms.forEach((room) => {
|
|
65
66
|
const logMessage = `${namespace.socketionamespace.name}:socket.on:joinRoom: Socket joining room [${room}], ID: [${socket.id}]`;
|
|
66
|
-
|
|
67
|
+
this.#LogDebugMessage(logMessage);
|
|
67
68
|
this.JoinRoom(namespace, socket, room)
|
|
68
69
|
});
|
|
69
70
|
});
|
|
@@ -71,7 +72,7 @@ export class SocketIoServerHelper<ClientToServerEvents extends STSDefaultClientT
|
|
|
71
72
|
socket.on('__STSleaveRoom', (rooms: string[]): void => { //@@ names
|
|
72
73
|
rooms.forEach((room) => {
|
|
73
74
|
const logMessage = `${namespace.socketionamespace.name}:socket.on:joinRoom: Socket leaving room [${room}], ID: [${socket.id}]`;
|
|
74
|
-
|
|
75
|
+
this.#LogDebugMessage(logMessage);
|
|
75
76
|
this.LeaveRoom(namespace, socket, room);
|
|
76
77
|
});
|
|
77
78
|
});
|
|
@@ -79,7 +80,7 @@ export class SocketIoServerHelper<ClientToServerEvents extends STSDefaultClientT
|
|
|
79
80
|
socket.on('__STSsendToRoom', (rooms: string[], payload: { command: string, payload: JSONObject }): void => {
|
|
80
81
|
rooms.forEach((room) => {
|
|
81
82
|
const logMessage = `${namespace.socketionamespace.name}:socket.on:sendToRoom: Sending to room [${room}], ID: [${socket.id}]`;
|
|
82
|
-
|
|
83
|
+
this.#LogDebugMessage(logMessage);
|
|
83
84
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
84
85
|
namespace.socketionamespace.to(room).emit(payload.command as any, payload);
|
|
85
86
|
});
|
|
@@ -131,9 +132,9 @@ export class SocketIoServerHelper<ClientToServerEvents extends STSDefaultClientT
|
|
|
131
132
|
|
|
132
133
|
this.#namespace[namespace].socketionamespace.on("connection", socket => {
|
|
133
134
|
const logMessage = `${namespace}: Socket connected, ID: [${socket.id}]`;
|
|
134
|
-
|
|
135
|
+
this.#LogDebugMessage(logMessage);
|
|
135
136
|
this.LogMessage(this.#namespace[namespace], logMessage);
|
|
136
|
-
|
|
137
|
+
this.#LogDebugMessage(`${namespace}: Authentication Handshake: [${JSON.stringify(socket.handshake.auth)}]`);
|
|
137
138
|
|
|
138
139
|
this.#SetupMessageMiddleware(socket);
|
|
139
140
|
|
package/types/authutilsnode.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import tough from 'tough-cookie';
|
|
2
|
+
import { ISTSLogger } from '@nsshunt/stsutils';
|
|
2
3
|
import { PublishInstrumentControllerV2 } from '@nsshunt/stspublisherserver';
|
|
3
4
|
export interface IAuthUtilsNodeOptions {
|
|
4
5
|
permissions: string[];
|
|
@@ -10,9 +11,12 @@ export interface IGetAPITokenFromAuthServerUsingScopeOptions {
|
|
|
10
11
|
endPoint: string;
|
|
11
12
|
instrumentController?: PublishInstrumentControllerV2;
|
|
12
13
|
}
|
|
14
|
+
export interface IAuthUtilsNodeOptions {
|
|
15
|
+
logger: ISTSLogger;
|
|
16
|
+
}
|
|
13
17
|
export declare class AuthUtilsNode {
|
|
14
18
|
#private;
|
|
15
|
-
constructor();
|
|
19
|
+
constructor(options: IAuthUtilsNodeOptions);
|
|
16
20
|
VerifyRequestMiddlewareFactory(options: IAuthUtilsNodeOptions): (req: any, res: any, next: any) => Promise<void>;
|
|
17
21
|
verifyRequestMiddleware(req: any, res: any, next: any): Promise<void>;
|
|
18
22
|
SetCookiesToJar: (headers: Record<string, any>, endpoint: string) => Promise<tough.Cookie[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authutilsnode.d.ts","sourceRoot":"","sources":["../src/authutilsnode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"authutilsnode.d.ts","sourceRoot":"","sources":["../src/authutilsnode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;AAajC,OAAO,EAAmB,UAAU,EAAc,MAAM,mBAAmB,CAAA;AAQ3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAA;AAG3E,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,MAAM,EAAE,CAAA;CACxB;AAsBD,MAAM,WAAW,2CAA2C;IACxD,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,MAAM,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,oBAAoB,CAAC,EAAE,6BAA6B,CAAA;CACvD;AAED,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,UAAU,CAAA;CACrB;AAED,qBAAa,aAAa;;gBAQV,OAAO,EAAE,qBAAqB;IA0B1C,8BAA8B,CAAC,OAAO,EAAE,qBAAqB,SAE9B,GAAG,OAAO,GAAG,QAAQ,GAAG;IAqCjD,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;IAyB3D,eAAe,YAAmB,OAAO,MAAM,EAAE,GAAG,CAAC,YAAY,MAAM,KAAG,QAAQ,MAAM,MAAM,EAAE,CAAC,CAgB/F;IAEF,iBAAiB,aAAoB,MAAM,KAAG,QAAQ,MAAM,MAAM,EAAE,CAAC,CAGnE;IAEF,WAAW,UAAiB,MAAM,YAAY,MAAM,aAAa,MAAM,KAAG,QAAQ,MAAM,CAAC,CAgCxF;IAGD,aAAa,QAAS,MAAM,mBAG3B;IAED,mCAAmC,YAAmB,2CAA2C,mBAAmB,KAAK,KAAK,IAAI,KAAG,QAAQ,MAAM,CAAC,CAuGnJ;CA4FJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"influxDBManager.d.ts","sourceRoot":"","sources":["../../src/influxdb/influxDBManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,QAAQ,EAAgD,MAAM,6BAA6B,CAAA;AAQ9G,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAI1D,OAAO,EAAE,sBAAsB,EAAC,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAA2B,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAkM7E,qBAAa,eAAe;;gBAiBZ,MAAM,EAAE,UAAU;
|
|
1
|
+
{"version":3,"file":"influxDBManager.d.ts","sourceRoot":"","sources":["../../src/influxdb/influxDBManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,QAAQ,EAAgD,MAAM,6BAA6B,CAAA;AAQ9G,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAI1D,OAAO,EAAE,sBAAsB,EAAC,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAA2B,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAkM7E,qBAAa,eAAe;;gBAiBZ,MAAM,EAAE,UAAU;IAiF9B,2BAA2B,CAAC,SAAS,EAAE,MAAM;IAa7C,IAAI,cAAc,IAAI,sBAAsB,CAE3C;IAED,IAAI,YAAY,IAAI,oBAAoB,CAEvC;IAED,KAAK,sBAEJ;IAED,SAAS,sBA2BR;IAQD,sBAAsB,aAAc,GAAG,EAAE,SAUxC;IAGD,kBAAkB,CAAC,eAAe,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU;IAW9E,IAAI,WAAW,IAAI,QAAQ,CAwG1B;IAIK,cAAc,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CAe/E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"influxDBManagerAgent.d.ts","sourceRoot":"","sources":["../../src/influxdb/influxDBManagerAgent.ts"],"names":[],"mappings":";AAuGA,OAAO,EAAS,QAAQ,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAIvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAWpF,qBAAa,oBAAqB,SAAQ,mBAAmB;;gBAE7C,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,QAAQ;IAIhE,IAAa,SAAS,IAAI,MAAM,CAE/B;
|
|
1
|
+
{"version":3,"file":"influxDBManagerAgent.d.ts","sourceRoot":"","sources":["../../src/influxdb/influxDBManagerAgent.ts"],"names":[],"mappings":";AAuGA,OAAO,EAAS,QAAQ,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAIvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAWpF,qBAAa,oBAAqB,SAAQ,mBAAmB;;gBAE7C,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,QAAQ;IAIhE,IAAa,SAAS,IAAI,MAAM,CAE/B;IA6EK,2BAA2B,CAAC,eAAe,EAAE,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAkB7F,uBAAuB,CAAC,eAAe,EAAE,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAkBzF,8BAA8B,CAAC,eAAe,EAAE,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmBhG,6BAA6B,CAAC,eAAe,EAAE,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsB/F,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CA+CnG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"influxDBManagerService.d.ts","sourceRoot":"","sources":["../../src/influxdb/influxDBManagerService.ts"],"names":[],"mappings":";AAgHA,OAAO,EAAS,QAAQ,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAIvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAmBpF,qBAAa,sBAAuB,SAAQ,mBAAmB;;gBAE/C,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,QAAQ;
|
|
1
|
+
{"version":3,"file":"influxDBManagerService.d.ts","sourceRoot":"","sources":["../../src/influxdb/influxDBManagerService.ts"],"names":[],"mappings":";AAgHA,OAAO,EAAS,QAAQ,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAIvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAmBpF,qBAAa,sBAAuB,SAAQ,mBAAmB;;gBAE/C,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,QAAQ;IAYhE,IAAa,SAAS,IAAI,MAAM,CAE/B;IA6FK,6BAA6B,CAAC,eAAe,EAAE,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAkB/F,yBAAyB,CAAC,eAAe,EAAE,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmB3F,kCAAkC,CAAC,eAAe,EAAE,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmBpG,iCAAiC,CAAC,eAAe,EAAE,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsBnG,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CAgEnG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IMKafkaManager.d.ts","sourceRoot":"","sources":["../../src/kafka/IMKafkaManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAIpD,OAAO,EAAE,YAAY,EAAuB,MAAM,gBAAgB,CAAA;AAGlE,OAAO,EAAE,UAAU,EAAc,MAAM,mBAAmB,CAAA;AAW1D,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,UAAU,CAAA;CACrB;AAGD,qBAAa,cAAc;;gBAQX,OAAO,EAAE,qBAAqB;
|
|
1
|
+
{"version":3,"file":"IMKafkaManager.d.ts","sourceRoot":"","sources":["../../src/kafka/IMKafkaManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAIpD,OAAO,EAAE,YAAY,EAAuB,MAAM,gBAAgB,CAAA;AAGlE,OAAO,EAAE,UAAU,EAAc,MAAM,mBAAmB,CAAA;AAW1D,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,UAAU,CAAA;CACrB;AAGD,qBAAa,cAAc;;gBAQX,OAAO,EAAE,qBAAqB;IAwC1C,IAAI,EAAE,IAAI,YAAY,CAErB;IAED,KAAK,oBAA2B,GAAG,KAAK,IAAI,KAAG,QAAQ,IAAI,CAAC,CAK3D;IAED,SAAS,oBAA2B,GAAG,KAAK,IAAI,KAAG,QAAQ,IAAI,CAAC,CAgB/D;IA4CK,UAAU,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;CA+D1G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverNetworkMiddleware.d.ts","sourceRoot":"","sources":["../../src/middleware/serverNetworkMiddleware.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAIjC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMnD,oBAAY,gCAAgC;IACxC,+BAA+B,oCAAoC;CACtE;AAED,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,MAAM,gCAAgC,GAAG,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;AAE7E,MAAM,WAAW,wBAAwB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,OAAO,CAAA;CACvB;AAED,qBAAa,uBAAwB,SAAQ,cAAc;;gBAO3C,OAAO,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"serverNetworkMiddleware.d.ts","sourceRoot":"","sources":["../../src/middleware/serverNetworkMiddleware.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAIjC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMnD,oBAAY,gCAAgC;IACxC,+BAA+B,oCAAoC;CACtE;AAED,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,MAAM,gCAAgC,GAAG,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;AAE7E,MAAM,WAAW,wBAAwB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,OAAO,CAAA;CACvB;AAED,qBAAa,uBAAwB,SAAQ,cAAc;;gBAO3C,OAAO,EAAE,wBAAwB;IA6D7C,EAAE,CAAC,SAAS,EAAE,gCAAgC,EAAE,UAAU,EAAE,gCAAgC;IAI5F,eAAe,WAAY,MAAM,KAAG,aAAa,GAAG,IAAI,CAOvD;IAED,kBAAkB,wBAAyB,aAAa,aAAa,MAAM,OAAO,OAAO,UAoBxF;IAmBD,UAAU,QAAS,OAAO,OAAO,QAAQ,QAAQ,YAAY,UA6J5D;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publishTransportDirect.d.ts","sourceRoot":"","sources":["../../src/publishertransports/publishTransportDirect.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"publishTransportDirect.d.ts","sourceRoot":"","sources":["../../src/publishertransports/publishTransportDirect.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAOrF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,WAAW,8BAA8B;IAC3C,MAAM,EAAE,UAAU,CAAA;CACrB;AAED,qBAAa,sBAAuB,YAAW,mBAAmB;;gBAMlD,OAAO,EAAE,8BAA8B;IAiBnD,OAAO,YAAmB,kBAAkB,KAAG,QAAQ,OAAO,CAAC,CAiB9D;IAEK,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;CAGlC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socketIoServerHelper.d.ts","sourceRoot":"","sources":["../src/socketIoServerHelper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"socketIoServerHelper.d.ts","sourceRoot":"","sources":["../src/socketIoServerHelper.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAmB,YAAY,EACxD,qBAAqB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAElF,OAAO,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAA;AAE5G,MAAM,WAAW,4BAA4B;IAEzC,MAAM,EAAE,UAAU,CAAA;CACrB;AAED,qBAAa,oBAAoB,CAAC,oBAAoB,SAAS,8BAA8B,EAAE,oBAAoB,SAAS,8BAA8B,CAAE,YAAW,qBAAqB,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;;gBAIxN,OAAO,EAAE,4BAA4B;IAUjD,UAAU,cAAe,oBAAoB,WAAW,MAAM,KAAG,IAAI,CAQnE;IAEF,SAAS,cAAe,oBAAoB,UAAU,OAAO,oBAAoB,EAAE,oBAAoB,CAAC,QAAQ,MAAM,KAAG,IAAI,CAK3H;IAEF,QAAQ,cAAe,oBAAoB,UAAU,OAAO,oBAAoB,EAAE,oBAAoB,CAAC,QAAQ,MAAM,KAAG,IAAI,CAK1H;IAoEF,cAAc,OAAQ,MAAM,aAAa,YAAY,SAAS,MAAM,EAAE,iBAAiB,OAAO,mCACzD,OAAO,oBAAoB,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,KAAK,IAAI,0CAC/E,OAAO,oBAAoB,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,KAAK,IAAI,aAC/G,UAAU,oBAAoB,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,CAsC1E;IAED,uBAAuB,cAAe,MAAM,KAAG,oBAAoB,CAElE;IAED,iBAAiB,QAAO,IAAI,CAM3B;IAED,UAAU,CAAC,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,aAAa,GAAG,qBAAqB,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;CAGrI"}
|