@asenajs/asena 0.3.3 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/README.md +165 -140
  2. package/dist/index.d.ts +2 -1
  3. package/dist/index.js +2 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/adapter/AsenaAdapter.d.ts +19 -3
  6. package/dist/lib/adapter/AsenaAdapter.js.map +1 -1
  7. package/dist/lib/adapter/AsenaWebsocketAdapter.d.ts +2 -2
  8. package/dist/lib/adapter/AsenaWebsocketAdapter.js.map +1 -1
  9. package/dist/lib/adapter/types/RouteParams.d.ts +3 -0
  10. package/dist/lib/adapter/types/ServeOptions.d.ts +2 -2
  11. package/dist/lib/adapter/types/index.d.ts +4 -4
  12. package/dist/lib/adapter/types/index.js +4 -4
  13. package/dist/lib/adapter/types/index.js.map +1 -1
  14. package/dist/lib/ioc/CircularDependencyDetector.d.ts +49 -0
  15. package/dist/lib/ioc/CircularDependencyDetector.js +69 -0
  16. package/dist/lib/ioc/CircularDependencyDetector.js.map +1 -0
  17. package/dist/lib/ioc/Container.d.ts +16 -0
  18. package/dist/lib/ioc/Container.js +61 -11
  19. package/dist/lib/ioc/Container.js.map +1 -1
  20. package/dist/lib/ioc/CoreContainer.d.ts +78 -0
  21. package/dist/lib/ioc/CoreContainer.js +139 -0
  22. package/dist/lib/ioc/CoreContainer.js.map +1 -0
  23. package/dist/lib/ioc/IocEngine.d.ts +16 -6
  24. package/dist/lib/ioc/IocEngine.js +35 -7
  25. package/dist/lib/ioc/IocEngine.js.map +1 -1
  26. package/dist/lib/ioc/component/decorators/Inject.d.ts +24 -4
  27. package/dist/lib/ioc/component/decorators/Inject.js +44 -7
  28. package/dist/lib/ioc/component/decorators/Inject.js.map +1 -1
  29. package/dist/lib/ioc/component/index.d.ts +1 -1
  30. package/dist/lib/ioc/component/index.js +1 -1
  31. package/dist/lib/ioc/component/index.js.map +1 -1
  32. package/dist/lib/ioc/constants/ComponentConstants.d.ts +27 -18
  33. package/dist/lib/ioc/constants/ComponentConstants.js +34 -20
  34. package/dist/lib/ioc/constants/ComponentConstants.js.map +1 -1
  35. package/dist/lib/ioc/decorators/CoreService.d.ts +8 -0
  36. package/dist/lib/ioc/decorators/CoreService.js +27 -0
  37. package/dist/lib/ioc/decorators/CoreService.js.map +1 -0
  38. package/dist/lib/ioc/decorators/index.d.ts +1 -0
  39. package/dist/lib/ioc/decorators/index.js +2 -0
  40. package/dist/lib/ioc/decorators/index.js.map +1 -0
  41. package/dist/lib/ioc/index.d.ts +5 -0
  42. package/dist/lib/ioc/index.js +5 -0
  43. package/dist/lib/ioc/index.js.map +1 -1
  44. package/dist/lib/ioc/types/CoreBootstrapPhase.d.ts +15 -0
  45. package/dist/lib/ioc/types/CoreBootstrapPhase.js +17 -0
  46. package/dist/lib/ioc/types/CoreBootstrapPhase.js.map +1 -0
  47. package/dist/lib/ioc/types/ICoreService.d.ts +9 -0
  48. package/dist/lib/ioc/types/ICoreService.js +2 -0
  49. package/dist/lib/ioc/types/ICoreService.js.map +1 -0
  50. package/dist/lib/ioc/types/ICoreServiceNamesType.d.ts +19 -0
  51. package/dist/lib/ioc/types/ICoreServiceNamesType.js +25 -0
  52. package/dist/lib/ioc/types/ICoreServiceNamesType.js.map +1 -0
  53. package/dist/lib/ioc/types/decorators/ControllerParams.d.ts +1 -1
  54. package/dist/lib/ioc/types/index.d.ts +3 -0
  55. package/dist/lib/ioc/types/index.js +3 -0
  56. package/dist/lib/ioc/types/index.js.map +1 -1
  57. package/dist/lib/server/AsenaServer.d.ts +85 -14
  58. package/dist/lib/server/AsenaServer.js +176 -68
  59. package/dist/lib/server/AsenaServer.js.map +1 -1
  60. package/dist/lib/server/AsenaServerFactory.d.ts +26 -0
  61. package/dist/lib/server/AsenaServerFactory.js +66 -0
  62. package/dist/lib/server/AsenaServerFactory.js.map +1 -0
  63. package/dist/lib/server/config/AsenaConfig.d.ts +91 -18
  64. package/dist/lib/server/decorators/Override.js +1 -1
  65. package/dist/lib/server/decorators/Override.js.map +1 -1
  66. package/dist/lib/server/decorators/components/Config.d.ts +1 -1
  67. package/dist/lib/server/decorators/components/Config.js +1 -1
  68. package/dist/lib/server/decorators/components/Config.js.map +1 -1
  69. package/dist/lib/server/decorators/components/Controller.d.ts +1 -1
  70. package/dist/lib/server/decorators/components/Controller.js +1 -2
  71. package/dist/lib/server/decorators/components/Controller.js.map +1 -1
  72. package/dist/lib/server/decorators/components/Middleware.js +1 -2
  73. package/dist/lib/server/decorators/components/Middleware.js.map +1 -1
  74. package/dist/lib/server/decorators/components/Schedule.d.ts +1 -1
  75. package/dist/lib/server/decorators/components/Schedule.js +1 -2
  76. package/dist/lib/server/decorators/components/Schedule.js.map +1 -1
  77. package/dist/lib/server/decorators/components/WebSocket.d.ts +1 -1
  78. package/dist/lib/server/decorators/components/WebSocket.js +1 -2
  79. package/dist/lib/server/decorators/components/WebSocket.js.map +1 -1
  80. package/dist/lib/server/decorators/index.d.ts +2 -0
  81. package/dist/lib/server/decorators/index.js +2 -0
  82. package/dist/lib/server/decorators/index.js.map +1 -1
  83. package/dist/lib/server/index.d.ts +3 -0
  84. package/dist/lib/server/index.js +4 -0
  85. package/dist/lib/server/index.js.map +1 -1
  86. package/dist/lib/server/messaging/Ulak.d.ts +224 -0
  87. package/dist/lib/server/messaging/Ulak.js +351 -0
  88. package/dist/lib/server/messaging/Ulak.js.map +1 -0
  89. package/dist/lib/server/messaging/index.d.ts +8 -0
  90. package/dist/lib/server/messaging/index.js +9 -0
  91. package/dist/lib/server/messaging/index.js.map +1 -0
  92. package/dist/lib/server/messaging/types.d.ts +73 -0
  93. package/dist/lib/server/messaging/types.js +35 -0
  94. package/dist/lib/server/messaging/types.js.map +1 -0
  95. package/dist/lib/server/src/services/PrepareConfigService.d.ts +9 -5
  96. package/dist/lib/server/src/services/PrepareConfigService.js +32 -7
  97. package/dist/lib/server/src/services/PrepareConfigService.js.map +1 -1
  98. package/dist/lib/server/src/services/PrepareMiddlewareService.d.ts +8 -5
  99. package/dist/lib/server/src/services/PrepareMiddlewareService.js +27 -7
  100. package/dist/lib/server/src/services/PrepareMiddlewareService.js.map +1 -1
  101. package/dist/lib/server/src/services/PrepareStaticServeConfigService.d.ts +8 -5
  102. package/dist/lib/server/src/services/PrepareStaticServeConfigService.js +27 -6
  103. package/dist/lib/server/src/services/PrepareStaticServeConfigService.js.map +1 -1
  104. package/dist/lib/server/src/services/PrepareValidatorService.d.ts +8 -5
  105. package/dist/lib/server/src/services/PrepareValidatorService.js +27 -6
  106. package/dist/lib/server/src/services/PrepareValidatorService.js.map +1 -1
  107. package/dist/lib/server/src/services/PrepareWebsocketService.d.ts +9 -5
  108. package/dist/lib/server/src/services/PrepareWebsocketService.js +35 -9
  109. package/dist/lib/server/src/services/PrepareWebsocketService.js.map +1 -1
  110. package/dist/lib/server/web/decorators/http.base.d.ts +1 -1
  111. package/dist/lib/server/web/decorators/http.base.js.map +1 -1
  112. package/dist/lib/server/web/decorators/methods/Connect.d.ts +1 -1
  113. package/dist/lib/server/web/decorators/methods/Delete.d.ts +1 -1
  114. package/dist/lib/server/web/decorators/methods/Get.d.ts +1 -1
  115. package/dist/lib/server/web/decorators/methods/Head.d.ts +1 -1
  116. package/dist/lib/server/web/decorators/methods/Options.d.ts +1 -1
  117. package/dist/lib/server/web/decorators/methods/Patch.d.ts +1 -1
  118. package/dist/lib/server/web/decorators/methods/Post.d.ts +1 -1
  119. package/dist/lib/server/web/decorators/methods/Put.d.ts +1 -1
  120. package/dist/lib/server/web/decorators/methods/Trace.d.ts +1 -1
  121. package/dist/lib/server/web/websocket/AsenaSocket.js.map +1 -1
  122. package/dist/lib/server/web/websocket/AsenaWebSocketServer.d.ts +3 -16
  123. package/dist/lib/server/web/websocket/AsenaWebSocketServer.js +3 -20
  124. package/dist/lib/server/web/websocket/AsenaWebSocketServer.js.map +1 -1
  125. package/dist/lib/server/web/websocket/index.d.ts +1 -1
  126. package/dist/lib/server/web/websocket/index.js +1 -1
  127. package/dist/lib/server/web/websocket/index.js.map +1 -1
  128. package/dist/lib/utils/patternMatcher.d.ts +41 -0
  129. package/dist/lib/utils/patternMatcher.js +99 -0
  130. package/dist/lib/utils/patternMatcher.js.map +1 -0
  131. package/dist/lib/utils/typedMetadata.d.ts +3 -3
  132. package/dist/lib/utils/typedMetadata.js.map +1 -1
  133. package/package.json +19 -8
  134. package/dist/lib/server/src/PrepareService.d.ts +0 -8
  135. package/dist/lib/server/src/PrepareService.js +0 -9
  136. package/dist/lib/server/src/PrepareService.js.map +0 -1
@@ -0,0 +1,351 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { CoreService, ICoreServiceNames } from '../../ioc';
11
+ import { UlakError, UlakErrorCode } from './types';
12
+ import { Inject } from '../../ioc/component';
13
+ import { blue } from '../../logger';
14
+ /**
15
+ * Central WebSocket message broker for Asena.js
16
+ *
17
+ * Ulak (Turkish: Messenger/Courier) provides a centralized way to send WebSocket messages
18
+ * without circular dependencies. Services can inject Ulak to send messages to any
19
+ * WebSocket namespace without directly injecting WebSocket services.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * @Service('UserService')
24
+ * class UserService {
25
+ * @Inject(ulak("/notifications"))
26
+ * private notifications: Ulak.NameSpace<"/notifications">;
27
+ *
28
+ * async createUser(data: any) {
29
+ * const user = await this.saveUser(data);
30
+ * await this.notifications.broadcast({ type: 'user_created', user });
31
+ * }
32
+ * }
33
+ * ```
34
+ */
35
+ let Ulak = class Ulak {
36
+ serviceName = 'Ulak';
37
+ /**
38
+ * Logger instance injected from CoreContainer
39
+ */
40
+ logger;
41
+ /**
42
+ * Map of namespace path to WebSocket service instance
43
+ */
44
+ namespaces = new Map();
45
+ /**
46
+ * Initialize Ulak messaging system
47
+ * Called after dependency injection is complete
48
+ */
49
+ async init() {
50
+ this.logger.info(`${blue('[Ulak]')} Initializing WebSocket messaging system ready`);
51
+ }
52
+ /**
53
+ * Register a WebSocket namespace
54
+ * Called automatically during WebSocket service initialization
55
+ *
56
+ * @param path - The namespace path (e.g., "/notifications")
57
+ * @param service - The WebSocket service instance
58
+ */
59
+ registerNamespace(path, service) {
60
+ if (this.namespaces.has(path)) {
61
+ this.logger.warn(`${blue('[Ulak]')} Namespace "${path}" already registered, skipping`);
62
+ return;
63
+ }
64
+ this.namespaces.set(path, service);
65
+ this.logger.info(`${blue('[Ulak]')} Namespace "${path}" registered`);
66
+ }
67
+ /**
68
+ * Unregister a WebSocket namespace
69
+ * Useful for cleanup and preventing memory leaks
70
+ *
71
+ * @param path - The namespace path to unregister
72
+ */
73
+ unregisterNamespace(path) {
74
+ if (!this.namespaces.has(path)) {
75
+ this.logger.warn(`${blue('[Ulak]')} Cannot unregister namespace "${path}" - not found`);
76
+ return;
77
+ }
78
+ this.namespaces.delete(path);
79
+ this.logger.info(`${blue('[Ulak]')} Namespace "${path}" unregistered`);
80
+ }
81
+ /**
82
+ * Select a specific namespace for scoped operations
83
+ * Returns a scoped namespace interface for ergonomic API
84
+ *
85
+ * @param path - The namespace path
86
+ * @returns Scoped namespace instance
87
+ *
88
+ * @example
89
+ * ```typescript
90
+ * const chat = ulak.namespace('/chat');
91
+ * await chat.broadcast({ message: 'Hello' }); // No need to repeat '/chat'
92
+ * ```
93
+ */
94
+ namespace(path) {
95
+ return new UlakNameSpace(path, this);
96
+ }
97
+ /**
98
+ * Broadcast message to all clients in a namespace
99
+ *
100
+ * @param namespace - The target namespace
101
+ * @param data - The data to send
102
+ * @throws {UlakError} If namespace not found or broadcast fails
103
+ */
104
+ async broadcast(namespace, data) {
105
+ try {
106
+ const service = this.getNamespaceService(namespace);
107
+ // Use service's in() method to broadcast to all clients
108
+ service.in(data);
109
+ }
110
+ catch (error) {
111
+ this.logger.error(`${blue('[Ulak]')} Broadcast failed for namespace "${namespace}"`, error);
112
+ // If already a UlakError (e.g., NAMESPACE_NOT_FOUND), rethrow as-is
113
+ if (error instanceof UlakError) {
114
+ throw error;
115
+ }
116
+ throw new UlakError(`Failed to broadcast to namespace: ${namespace}`, UlakErrorCode.BROADCAST_FAILED, namespace, error);
117
+ }
118
+ }
119
+ /**
120
+ * Send message to specific room in a namespace
121
+ *
122
+ * @param namespace - The target namespace
123
+ * @param room - The room name
124
+ * @param data - The data to send
125
+ * @throws {UlakError} If namespace not found or send fails
126
+ */
127
+ async to(namespace, room, data) {
128
+ try {
129
+ const service = this.getNamespaceService(namespace);
130
+ // Use service's to() method to send to specific room
131
+ service.to(room, data);
132
+ }
133
+ catch (error) {
134
+ this.logger.error(`${blue('[Ulak]')} Send to room "${room}" failed in namespace "${namespace}"`, error);
135
+ // If already a UlakError (e.g., NAMESPACE_NOT_FOUND), rethrow as-is
136
+ if (error instanceof UlakError) {
137
+ throw error;
138
+ }
139
+ throw new UlakError(`Failed to send to room "${room}" in namespace: ${namespace}`, UlakErrorCode.SEND_FAILED, namespace, error);
140
+ }
141
+ }
142
+ /**
143
+ * Send message to specific socket by ID
144
+ *
145
+ * @param namespace - The target namespace
146
+ * @param socketId - The socket ID
147
+ * @param data - The data to send
148
+ * @throws {UlakError} If namespace not found, socket not found, or send fails
149
+ */
150
+ async toSocket(namespace, socketId, data) {
151
+ try {
152
+ const service = this.getNamespaceService(namespace);
153
+ // Get socket from service's socket map
154
+ const socket = service.sockets.get(socketId);
155
+ if (!socket) {
156
+ throw new UlakError(`Socket "${socketId}" not found in namespace "${namespace}"`, UlakErrorCode.SOCKET_NOT_FOUND, namespace);
157
+ }
158
+ // Send data to socket
159
+ socket.send(typeof data === 'string' ? data : JSON.stringify(data));
160
+ }
161
+ catch (error) {
162
+ this.logger.error(`${blue('[Ulak]')} Send to socket "${socketId}" failed in namespace "${namespace}"`, error);
163
+ if (error instanceof UlakError) {
164
+ throw error;
165
+ }
166
+ throw new UlakError(`Failed to send to socket "${socketId}" in namespace: ${namespace}`, UlakErrorCode.SEND_FAILED, namespace, error);
167
+ }
168
+ }
169
+ /**
170
+ * Send to multiple rooms at once (parallel execution)
171
+ *
172
+ * @param namespace - The target namespace
173
+ * @param rooms - Array of room names
174
+ * @param data - The data to send
175
+ */
176
+ async toMany(namespace, rooms, data) {
177
+ const results = await Promise.allSettled(rooms.map((room) => this.to(namespace, room, data)));
178
+ // Track failures
179
+ const failures = results.filter((r) => r.status === 'rejected');
180
+ if (failures.length > 0) {
181
+ this.logger.warn(`${blue('[Ulak]')} Batch send failed for ${failures.length}/${rooms.length} rooms in "${namespace}"`);
182
+ }
183
+ }
184
+ /**
185
+ * Broadcast to all registered namespaces
186
+ *
187
+ * @param data - The data to send
188
+ */
189
+ async broadcastAll(data) {
190
+ const namespaces = Array.from(this.namespaces.keys());
191
+ const results = await Promise.allSettled(namespaces.map((ns) => this.broadcast(ns, data)));
192
+ const succeeded = results.filter((r) => r.status === 'fulfilled').length;
193
+ const failed = results.filter((r) => r.status === 'rejected').length;
194
+ this.logger.info(`${blue('[Ulak]')} Broadcast to all: ${succeeded} succeeded, ${failed} failed`);
195
+ }
196
+ /**
197
+ * Send different messages to different targets (bulk operation)
198
+ *
199
+ * @param operations - Array of operations to perform
200
+ * @returns Result summary
201
+ */
202
+ async bulkSend(operations) {
203
+ const results = await Promise.allSettled(operations.map((op) => {
204
+ switch (op.type) {
205
+ case 'broadcast':
206
+ return this.broadcast(op.namespace, op.data);
207
+ case 'room':
208
+ if (!op.room) {
209
+ return Promise.reject(new Error('Room name required for room operation'));
210
+ }
211
+ return this.to(op.namespace, op.room, op.data);
212
+ case 'socket':
213
+ if (!op.socketId) {
214
+ return Promise.reject(new Error('Socket ID required for socket operation'));
215
+ }
216
+ return this.toSocket(op.namespace, op.socketId, op.data);
217
+ default:
218
+ return Promise.reject(new Error(`Invalid operation type: ${op.type}`));
219
+ }
220
+ }));
221
+ const succeeded = results.filter((r) => r.status === 'fulfilled').length;
222
+ const failed = results.filter((r) => r.status === 'rejected').length;
223
+ this.logger.info(`${blue('[Ulak]')} Bulk send: ${succeeded}/${operations.length} succeeded, ${failed} failed`);
224
+ return {
225
+ total: operations.length,
226
+ succeeded,
227
+ failed,
228
+ results,
229
+ };
230
+ }
231
+ /**
232
+ * Get all active namespaces
233
+ *
234
+ * @returns Array of namespace paths
235
+ */
236
+ getNamespaces() {
237
+ return Array.from(this.namespaces.keys());
238
+ }
239
+ /**
240
+ * Check if namespace exists
241
+ *
242
+ * @param namespace - The namespace to check
243
+ * @returns True if namespace is registered
244
+ */
245
+ hasNamespace(namespace) {
246
+ return this.namespaces.has(namespace);
247
+ }
248
+ /**
249
+ * Get socket count for a namespace
250
+ *
251
+ * @param namespace - The namespace to query
252
+ * @returns Number of active sockets
253
+ */
254
+ getSocketCount(namespace) {
255
+ const service = this.namespaces.get(namespace);
256
+ return service ? service.sockets.size : 0;
257
+ }
258
+ /**
259
+ * Dispose of all resources and stop background tasks
260
+ * Should be called during application shutdown
261
+ */
262
+ dispose() {
263
+ // Unregister all namespaces
264
+ const namespaces = Array.from(this.namespaces.keys());
265
+ for (const namespace of namespaces) {
266
+ this.unregisterNamespace(namespace);
267
+ }
268
+ this.logger.info(`${blue('[Ulak]')} Disposed`);
269
+ }
270
+ /**
271
+ * Get namespace service or throw error
272
+ *
273
+ * @param namespace - The namespace to retrieve
274
+ * @returns The WebSocket service
275
+ * @throws {UlakError} If namespace not found
276
+ */
277
+ getNamespaceService(namespace) {
278
+ const service = this.namespaces.get(namespace);
279
+ if (!service) {
280
+ throw new UlakError(`Namespace "${namespace}" not found in Ulak`, UlakErrorCode.NAMESPACE_NOT_FOUND, namespace);
281
+ }
282
+ return service;
283
+ }
284
+ };
285
+ __decorate([
286
+ Inject(ICoreServiceNames.SERVER_LOGGER),
287
+ __metadata("design:type", Object)
288
+ ], Ulak.prototype, "logger", void 0);
289
+ Ulak = __decorate([
290
+ CoreService(ICoreServiceNames.__ULAK__)
291
+ ], Ulak);
292
+ export { Ulak };
293
+ /**
294
+ * Internal implementation of scoped namespace
295
+ */
296
+ class UlakNameSpace {
297
+ path;
298
+ ulak;
299
+ constructor(path, ulak) {
300
+ this.path = path;
301
+ this.ulak = ulak;
302
+ }
303
+ async broadcast(data) {
304
+ await this.ulak.broadcast(this.path, data);
305
+ }
306
+ async to(room, data) {
307
+ await this.ulak.to(this.path, room, data);
308
+ }
309
+ async toSocket(socketId, data) {
310
+ await this.ulak.toSocket(this.path, socketId, data);
311
+ }
312
+ async toMany(rooms, data) {
313
+ await this.ulak.toMany(this.path, rooms, data);
314
+ }
315
+ getSocketCount() {
316
+ return this.ulak.getSocketCount(this.path);
317
+ }
318
+ }
319
+ /**
320
+ * Helper function for injecting scoped Ulak namespace
321
+ *
322
+ * This function returns a tuple that can be used with the @Inject decorator
323
+ * to inject a scoped namespace from Ulak. This provides an ergonomic API
324
+ * where you don't need to repeat the namespace path in every method call.
325
+ *
326
+ * @param namespace - The WebSocket namespace path (e.g., "/chat", "/notifications")
327
+ * @returns A tuple of [serviceName, expression] for @Inject decorator
328
+ *
329
+ * @example
330
+ * ```typescript
331
+ * @Service('ChatService')
332
+ * export class ChatService {
333
+ * // Inject scoped namespace
334
+ * @Inject(ulak("/chat"))
335
+ * private chat: Ulak.NameSpace<"/chat">;
336
+ *
337
+ * async sendMessage(roomId: string, message: string) {
338
+ * // Clean API - no need to repeat '/chat'
339
+ * await this.chat.to(roomId, { message });
340
+ * }
341
+ *
342
+ * async broadcastAnnouncement(text: string) {
343
+ * await this.chat.broadcast({ type: 'announcement', text });
344
+ * }
345
+ * }
346
+ * ```
347
+ */
348
+ export function ulak(namespace) {
349
+ return [ICoreServiceNames.__ULAK__, (ulak) => ulak.namespace(namespace)];
350
+ }
351
+ //# sourceMappingURL=Ulak.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ulak.js","sourceRoot":"","sources":["../../../../lib/server/messaging/Ulak.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Ulak WebSocket Messaging System
3
+ *
4
+ * Provides a centralized message broker for WebSocket communications
5
+ * without circular dependencies.
6
+ */
7
+ export { Ulak, ulak } from './Ulak';
8
+ export { UlakError, UlakErrorCode, type BulkOperation, type BulkResult, type BulkOperationType } from './types';
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Ulak WebSocket Messaging System
3
+ *
4
+ * Provides a centralized message broker for WebSocket communications
5
+ * without circular dependencies.
6
+ */
7
+ export { Ulak, ulak } from './Ulak';
8
+ export { UlakError, UlakErrorCode } from './types';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/server/messaging/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,aAAa,EAA+D,MAAM,SAAS,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Error codes for Ulak messaging system
3
+ */
4
+ export declare enum UlakErrorCode {
5
+ NAMESPACE_NOT_FOUND = "NAMESPACE_NOT_FOUND",
6
+ NAMESPACE_ALREADY_EXISTS = "NAMESPACE_ALREADY_EXISTS",
7
+ INVALID_NAMESPACE = "INVALID_NAMESPACE",
8
+ INVALID_MESSAGE = "INVALID_MESSAGE",
9
+ SEND_FAILED = "SEND_FAILED",
10
+ BROADCAST_FAILED = "BROADCAST_FAILED",
11
+ SOCKET_NOT_FOUND = "SOCKET_NOT_FOUND",
12
+ SERVICE_NOT_INITIALIZED = "SERVICE_NOT_INITIALIZED"
13
+ }
14
+ /**
15
+ * Custom error class for Ulak messaging system
16
+ * Provides structured error information with error codes
17
+ */
18
+ export declare class UlakError extends Error {
19
+ readonly code: UlakErrorCode;
20
+ readonly namespace?: string;
21
+ readonly cause?: Error;
22
+ constructor(message: string, code: UlakErrorCode, namespace?: string, cause?: Error);
23
+ }
24
+ /**
25
+ * Operation types for bulk message sending
26
+ */
27
+ export type BulkOperationType = 'broadcast' | 'room' | 'socket';
28
+ /**
29
+ * A single operation in a bulk send
30
+ */
31
+ export interface BulkOperation {
32
+ /**
33
+ * Type of operation
34
+ */
35
+ type: BulkOperationType;
36
+ /**
37
+ * Target namespace
38
+ */
39
+ namespace: string;
40
+ /**
41
+ * Room name (required for 'room' type)
42
+ */
43
+ room?: string;
44
+ /**
45
+ * Socket ID (required for 'socket' type)
46
+ */
47
+ socketId?: string;
48
+ /**
49
+ * Data to send
50
+ */
51
+ data: any;
52
+ }
53
+ /**
54
+ * Result of a bulk send operation
55
+ */
56
+ export interface BulkResult {
57
+ /**
58
+ * Total number of operations attempted
59
+ */
60
+ total: number;
61
+ /**
62
+ * Number of successful operations
63
+ */
64
+ succeeded: number;
65
+ /**
66
+ * Number of failed operations
67
+ */
68
+ failed: number;
69
+ /**
70
+ * Detailed results for each operation
71
+ */
72
+ results: PromiseSettledResult<void>[];
73
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Error codes for Ulak messaging system
3
+ */
4
+ export var UlakErrorCode;
5
+ (function (UlakErrorCode) {
6
+ UlakErrorCode["NAMESPACE_NOT_FOUND"] = "NAMESPACE_NOT_FOUND";
7
+ UlakErrorCode["NAMESPACE_ALREADY_EXISTS"] = "NAMESPACE_ALREADY_EXISTS";
8
+ UlakErrorCode["INVALID_NAMESPACE"] = "INVALID_NAMESPACE";
9
+ UlakErrorCode["INVALID_MESSAGE"] = "INVALID_MESSAGE";
10
+ UlakErrorCode["SEND_FAILED"] = "SEND_FAILED";
11
+ UlakErrorCode["BROADCAST_FAILED"] = "BROADCAST_FAILED";
12
+ UlakErrorCode["SOCKET_NOT_FOUND"] = "SOCKET_NOT_FOUND";
13
+ UlakErrorCode["SERVICE_NOT_INITIALIZED"] = "SERVICE_NOT_INITIALIZED";
14
+ })(UlakErrorCode || (UlakErrorCode = {}));
15
+ /**
16
+ * Custom error class for Ulak messaging system
17
+ * Provides structured error information with error codes
18
+ */
19
+ export class UlakError extends Error {
20
+ code;
21
+ namespace;
22
+ cause;
23
+ constructor(message, code, namespace, cause) {
24
+ super(message);
25
+ this.name = 'UlakError';
26
+ this.code = code;
27
+ this.namespace = namespace;
28
+ this.cause = cause;
29
+ // Maintain proper stack trace in V8 engines
30
+ if (Error.captureStackTrace) {
31
+ Error.captureStackTrace(this, UlakError);
32
+ }
33
+ }
34
+ }
35
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../lib/server/messaging/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,aASX;AATD,WAAY,aAAa;IACvB,4DAA2C,CAAA;IAC3C,sEAAqD,CAAA;IACrD,wDAAuC,CAAA;IACvC,oDAAmC,CAAA;IACnC,4CAA2B,CAAA;IAC3B,sDAAqC,CAAA;IACrC,sDAAqC,CAAA;IACrC,oEAAmD,CAAA;AACrD,CAAC,EATW,aAAa,KAAb,aAAa,QASxB;AAED;;;GAGG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAElB,IAAI,CAAgB;IAEpB,SAAS,CAAU;IAEnB,KAAK,CAAS;IAE9B,YAAY,OAAe,EAAE,IAAmB,EAAE,SAAkB,EAAE,KAAa;QACjF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,4CAA4C;QAC5C,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;CAEF"}
@@ -1,8 +1,12 @@
1
- import { PrepareService } from '../PrepareService';
2
1
  import type { AsenaConfig } from '../../config';
3
- import { type ServerLogger } from '../../../logger';
4
- import type { Container } from '../../../ioc';
5
- export declare class PrepareConfigService extends PrepareService {
6
- constructor(container: Container, logger: ServerLogger);
2
+ import { type ICoreService } from '../../../ioc';
3
+ /**
4
+ * @description Core service for preparing configuration
5
+ * Handles config resolution and validation
6
+ */
7
+ export declare class PrepareConfigService implements ICoreService {
8
+ serviceName: string;
9
+ private container;
10
+ private logger;
7
11
  prepare(): Promise<AsenaConfig>;
8
12
  }
@@ -1,12 +1,25 @@
1
- import { PrepareService } from '../PrepareService';
2
- import { ComponentType } from '../../../ioc/types';
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { ComponentType, CoreService, ICoreServiceNames } from '../../../ioc';
3
11
  import { getTypedMetadata } from '../../../utils/typedMetadata';
4
12
  import { ComponentConstants } from '../../../ioc/constants';
5
13
  import { yellow } from '../../../logger';
6
- export class PrepareConfigService extends PrepareService {
7
- constructor(container, logger) {
8
- super(container, logger);
9
- }
14
+ import { Inject } from '../../../ioc/component';
15
+ /**
16
+ * @description Core service for preparing configuration
17
+ * Handles config resolution and validation
18
+ */
19
+ let PrepareConfigService = class PrepareConfigService {
20
+ serviceName = 'PrepareConfigService';
21
+ container;
22
+ logger;
10
23
  async prepare() {
11
24
  const config = await this.container.resolveAll(ComponentType.CONFIG);
12
25
  if (!config?.length) {
@@ -28,5 +41,17 @@ export class PrepareConfigService extends PrepareService {
28
41
  this.logger.info(`AsenaConfig service found ${yellow(name)}`);
29
42
  return configInstance;
30
43
  }
31
- }
44
+ };
45
+ __decorate([
46
+ Inject(ICoreServiceNames.CONTAINER),
47
+ __metadata("design:type", Function)
48
+ ], PrepareConfigService.prototype, "container", void 0);
49
+ __decorate([
50
+ Inject(ICoreServiceNames.SERVER_LOGGER),
51
+ __metadata("design:type", Object)
52
+ ], PrepareConfigService.prototype, "logger", void 0);
53
+ PrepareConfigService = __decorate([
54
+ CoreService(ICoreServiceNames.PREPARE_CONFIG_SERVICE)
55
+ ], PrepareConfigService);
56
+ export { PrepareConfigService };
32
57
  //# sourceMappingURL=PrepareConfigService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PrepareConfigService.js","sourceRoot":"","sources":["../../../../../lib/server/src/services/PrepareConfigService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAqB,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAG5D,MAAM,OAAO,oBAAqB,SAAQ,cAAc;IAEtD,YAAmB,SAAoB,EAAE,MAAoB;QAC3D,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAc,aAAa,CAAC,MAAM,CAAC,CAAC;QAElF,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAEjC,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAEzF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE9D,OAAO,cAAc,CAAC;IACxB,CAAC;CAEF"}
1
+ {"version":3,"file":"PrepareConfigService.js","sourceRoot":"","sources":["../../../../../lib/server/src/services/PrepareConfigService.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,aAAa,EAAkB,WAAW,EAAqB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAChH,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAqB,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD;;;GAGG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAExB,WAAW,GAAG,sBAAsB,CAAC;IAGpC,SAAS,CAAY;IAGrB,MAAM,CAAe;IAEtB,KAAK,CAAC,OAAO;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAc,aAAa,CAAC,MAAM,CAAC,CAAC;QAElF,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAEjC,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAEzF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE9D,OAAO,cAAc,CAAC;IACxB,CAAC;CAEF,CAAA;AAnCS;IADP,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC;;uDACP;AAGrB;IADP,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC;;oDACX;AARlB,oBAAoB;IADhC,WAAW,CAAC,iBAAiB,CAAC,sBAAsB,CAAC;GACzC,oBAAoB,CAwChC"}
@@ -1,10 +1,13 @@
1
- import { PrepareService } from '../PrepareService';
2
1
  import type { MiddlewareClass } from '../../web/middleware';
3
2
  import type { BaseMiddleware } from '../../../adapter';
4
- import type { ServerLogger } from '../../../logger';
5
- import type { Container } from '../../../ioc';
6
- export declare class PrepareMiddlewareService extends PrepareService {
7
- constructor(container: Container, logger: ServerLogger);
3
+ import { type ICoreService } from '../../../ioc';
4
+ /**
5
+ * @description Core service for preparing middleware instances
6
+ * Handles middleware resolution and preparation for routing
7
+ */
8
+ export declare class PrepareMiddlewareService implements ICoreService {
9
+ serviceName: string;
10
+ private container;
8
11
  /**
9
12
  * @description Prepares middleware instances from middleware classes
10
13
  * @param {MiddlewareClass[]} middlewares - Middleware classes to prepare
@@ -1,10 +1,22 @@
1
- import { PrepareService } from '../PrepareService';
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
2
10
  import { getTypedMetadata } from '../../../utils/typedMetadata';
3
- import { ComponentConstants } from '../../../ioc/constants';
4
- export class PrepareMiddlewareService extends PrepareService {
5
- constructor(container, logger) {
6
- super(container, logger);
7
- }
11
+ import { ComponentConstants, CoreService, ICoreServiceNames } from '../../../ioc';
12
+ import { Inject } from '../../../ioc/component';
13
+ /**
14
+ * @description Core service for preparing middleware instances
15
+ * Handles middleware resolution and preparation for routing
16
+ */
17
+ let PrepareMiddlewareService = class PrepareMiddlewareService {
18
+ serviceName = 'PrepareMiddlewareService';
19
+ container;
8
20
  /**
9
21
  * @description Prepares middleware instances from middleware classes
10
22
  * @param {MiddlewareClass[]} middlewares - Middleware classes to prepare
@@ -31,5 +43,13 @@ export class PrepareMiddlewareService extends PrepareService {
31
43
  }
32
44
  return preparedMiddlewares;
33
45
  }
34
- }
46
+ };
47
+ __decorate([
48
+ Inject(ICoreServiceNames.CONTAINER),
49
+ __metadata("design:type", Function)
50
+ ], PrepareMiddlewareService.prototype, "container", void 0);
51
+ PrepareMiddlewareService = __decorate([
52
+ CoreService(ICoreServiceNames.PREPARE_MIDDLEWARE_SERVICE)
53
+ ], PrepareMiddlewareService);
54
+ export { PrepareMiddlewareService };
35
55
  //# sourceMappingURL=PrepareMiddlewareService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PrepareMiddlewareService.js","sourceRoot":"","sources":["../../../../../lib/server/src/services/PrepareMiddlewareService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAI5D,MAAM,OAAO,wBAAyB,SAAQ,cAAc;IAE1D,YAAmB,SAAoB,EAAE,MAAoB;QAC3D,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,OAAO,CAAC,WAA8B;QACjD,MAAM,mBAAmB,GAAqB,EAAE,CAAC;QAEjD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAE9E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAyB,IAAI,CAAC,CAAC;YAE7E,IAAI,CAAC,SAAS;gBAAE,SAAS;YAEzB,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC/E,IAAI,QAAkB,CAAC;YACvB,IAAI,UAAmB,CAAC;YAExB,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;gBAC3C,QAAQ,GAAG,gBAAgB,CAAW,kBAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAEhF,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAE5D,mBAAmB,CAAC,IAAI,CAAC;oBACvB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACtC,QAAQ,EAAE,UAAU;iBACrB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC;CAEF"}
1
+ {"version":3,"file":"PrepareMiddlewareService.js","sourceRoot":"","sources":["../../../../../lib/server/src/services/PrepareMiddlewareService.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAkB,WAAW,EAAqB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACrH,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD;;;GAGG;AAEI,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAE5B,WAAW,GAAG,0BAA0B,CAAC;IAGxC,SAAS,CAAY;IAE7B;;;;OAIG;IACI,KAAK,CAAC,OAAO,CAAC,WAA8B;QACjD,MAAM,mBAAmB,GAAqB,EAAE,CAAC;QAEjD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAE9E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAyB,IAAI,CAAC,CAAC;YAE7E,IAAI,CAAC,SAAS;gBAAE,SAAS;YAEzB,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC/E,IAAI,QAAkB,CAAC;YACvB,IAAI,UAAmB,CAAC;YAExB,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;gBAC3C,QAAQ,GAAG,gBAAgB,CAAW,kBAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAEhF,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAE5D,mBAAmB,CAAC,IAAI,CAAC;oBACvB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACtC,QAAQ,EAAE,UAAU;iBACrB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC;CAEF,CAAA;AApCS;IADP,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC;;2DACP;AALlB,wBAAwB;IADpC,WAAW,CAAC,iBAAiB,CAAC,0BAA0B,CAAC;GAC7C,wBAAwB,CAyCpC"}