@asenajs/asena 0.7.1 → 0.8.1
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/README.md +2 -2
- package/dist/lib/adapter/AsenaAdapter.d.ts +2 -2
- package/dist/lib/adapter/AsenaAdapter.js.map +1 -1
- package/dist/lib/adapter/types/ServeOptions.d.ts +16 -0
- package/dist/lib/adapter/types/ValidationError.d.ts +53 -0
- package/dist/lib/adapter/types/ValidationError.js +24 -0
- package/dist/lib/adapter/types/ValidationError.js.map +1 -0
- package/dist/lib/adapter/types/index.d.ts +1 -0
- package/dist/lib/adapter/types/index.js +1 -0
- package/dist/lib/adapter/types/index.js.map +1 -1
- package/dist/lib/ioc/Container.d.ts +25 -0
- package/dist/lib/ioc/Container.js +47 -0
- package/dist/lib/ioc/Container.js.map +1 -1
- package/dist/lib/ioc/CoreContainer.d.ts +5 -3
- package/dist/lib/ioc/CoreContainer.js +9 -3
- package/dist/lib/ioc/CoreContainer.js.map +1 -1
- package/dist/lib/ioc/IocEngine.d.ts +50 -4
- package/dist/lib/ioc/IocEngine.js +138 -12
- package/dist/lib/ioc/IocEngine.js.map +1 -1
- package/dist/lib/ioc/component/componentRegistry.d.ts +22 -0
- package/dist/lib/ioc/component/componentRegistry.js +119 -0
- package/dist/lib/ioc/component/componentRegistry.js.map +1 -0
- package/dist/lib/ioc/component/componentUtils.js +4 -0
- package/dist/lib/ioc/component/componentUtils.js.map +1 -1
- package/dist/lib/ioc/component/decorators/Inject.js +16 -0
- package/dist/lib/ioc/component/decorators/Inject.js.map +1 -1
- package/dist/lib/ioc/component/index.d.ts +1 -0
- package/dist/lib/ioc/component/index.js +1 -0
- package/dist/lib/ioc/component/index.js.map +1 -1
- package/dist/lib/ioc/constants/ComponentConstants.d.ts +4 -0
- package/dist/lib/ioc/constants/ComponentConstants.js +5 -0
- package/dist/lib/ioc/constants/ComponentConstants.js.map +1 -1
- package/dist/lib/ioc/helper/fileHelper.d.ts +9 -0
- package/dist/lib/ioc/helper/fileHelper.js +41 -11
- package/dist/lib/ioc/helper/fileHelper.js.map +1 -1
- package/dist/lib/ioc/types/ICoreServiceNamesType.d.ts +1 -0
- package/dist/lib/ioc/types/ICoreServiceNamesType.js +1 -0
- package/dist/lib/ioc/types/ICoreServiceNamesType.js.map +1 -1
- package/dist/lib/ioc/types/InjectableComponent.d.ts +10 -0
- package/dist/lib/ioc/types/IocConfig.d.ts +7 -0
- package/dist/lib/ioc/types/decorators/ComponentType.d.ts +2 -1
- package/dist/lib/ioc/types/decorators/ComponentType.js +1 -0
- package/dist/lib/ioc/types/decorators/ComponentType.js.map +1 -1
- package/dist/lib/server/AsenaServer.d.ts +47 -3
- package/dist/lib/server/AsenaServer.js +167 -28
- package/dist/lib/server/AsenaServer.js.map +1 -1
- package/dist/lib/server/AsenaServerFactory.d.ts +38 -3
- package/dist/lib/server/AsenaServerFactory.js +21 -2
- package/dist/lib/server/AsenaServerFactory.js.map +1 -1
- package/dist/lib/server/config/AsenaConfig.d.ts +82 -4
- package/dist/lib/server/config/AsenaConfig.js +39 -1
- package/dist/lib/server/config/AsenaConfig.js.map +1 -1
- package/dist/lib/server/decorators/components/MessageController.d.ts +49 -0
- package/dist/lib/server/decorators/components/MessageController.js +62 -0
- package/dist/lib/server/decorators/components/MessageController.js.map +1 -0
- package/dist/lib/server/decorators/components/index.d.ts +1 -0
- package/dist/lib/server/decorators/components/index.js +1 -0
- package/dist/lib/server/decorators/components/index.js.map +1 -1
- package/dist/lib/server/event/EventDispatchService.d.ts +3 -7
- package/dist/lib/server/event/EventDispatchService.js +9 -40
- package/dist/lib/server/event/EventDispatchService.js.map +1 -1
- package/dist/lib/server/event/PatternHandlerIndex.d.ts +53 -0
- package/dist/lib/server/event/PatternHandlerIndex.js +100 -0
- package/dist/lib/server/event/PatternHandlerIndex.js.map +1 -0
- package/dist/lib/server/event/decorators/On.d.ts +4 -0
- package/dist/lib/server/event/decorators/On.js +6 -0
- package/dist/lib/server/event/decorators/On.js.map +1 -1
- package/dist/lib/server/event/index.d.ts +1 -0
- package/dist/lib/server/event/index.js +2 -0
- package/dist/lib/server/event/index.js.map +1 -1
- package/dist/lib/server/event/types.d.ts +12 -0
- package/dist/lib/server/health/HealthServer.d.ts +26 -0
- package/dist/lib/server/health/HealthServer.js +63 -0
- package/dist/lib/server/health/HealthServer.js.map +1 -0
- package/dist/lib/server/health/index.d.ts +1 -0
- package/dist/lib/server/health/index.js +2 -0
- package/dist/lib/server/health/index.js.map +1 -0
- package/dist/lib/server/messaging/Ulak.d.ts +156 -0
- package/dist/lib/server/messaging/Ulak.js +174 -0
- package/dist/lib/server/messaging/Ulak.js.map +1 -1
- package/dist/lib/server/messaging/types.d.ts +5 -1
- package/dist/lib/server/messaging/types.js +5 -0
- package/dist/lib/server/messaging/types.js.map +1 -1
- package/dist/lib/server/microservice/InMemoryTransport.d.ts +45 -0
- package/dist/lib/server/microservice/InMemoryTransport.js +124 -0
- package/dist/lib/server/microservice/InMemoryTransport.js.map +1 -0
- package/dist/lib/server/microservice/MicroserviceTransport.d.ts +132 -0
- package/dist/lib/server/microservice/MicroserviceTransport.js +2 -0
- package/dist/lib/server/microservice/MicroserviceTransport.js.map +1 -0
- package/dist/lib/server/microservice/decorators/EventPattern.d.ts +38 -0
- package/dist/lib/server/microservice/decorators/EventPattern.js +59 -0
- package/dist/lib/server/microservice/decorators/EventPattern.js.map +1 -0
- package/dist/lib/server/microservice/decorators/MessagePattern.d.ts +31 -0
- package/dist/lib/server/microservice/decorators/MessagePattern.js +55 -0
- package/dist/lib/server/microservice/decorators/MessagePattern.js.map +1 -0
- package/dist/lib/server/microservice/decorators/index.d.ts +2 -0
- package/dist/lib/server/microservice/decorators/index.js +3 -0
- package/dist/lib/server/microservice/decorators/index.js.map +1 -0
- package/dist/lib/server/microservice/index.d.ts +5 -0
- package/dist/lib/server/microservice/index.js +11 -0
- package/dist/lib/server/microservice/index.js.map +1 -0
- package/dist/lib/server/microservice/interceptorChain.d.ts +20 -0
- package/dist/lib/server/microservice/interceptorChain.js +39 -0
- package/dist/lib/server/microservice/interceptorChain.js.map +1 -0
- package/dist/lib/server/microservice/types.d.ts +142 -0
- package/dist/lib/server/microservice/types.js +5 -0
- package/dist/lib/server/microservice/types.js.map +1 -0
- package/dist/lib/server/src/services/PrepareEventService.d.ts +4 -1
- package/dist/lib/server/src/services/PrepareEventService.js +10 -3
- package/dist/lib/server/src/services/PrepareEventService.js.map +1 -1
- package/dist/lib/server/src/services/PrepareMicroserviceService.d.ts +66 -0
- package/dist/lib/server/src/services/PrepareMicroserviceService.js +193 -0
- package/dist/lib/server/src/services/PrepareMicroserviceService.js.map +1 -0
- package/dist/lib/test/factory/deepMock.d.ts +25 -0
- package/dist/lib/test/factory/deepMock.js +105 -0
- package/dist/lib/test/factory/deepMock.js.map +1 -0
- package/dist/lib/test/factory/ulakStub.d.ts +44 -0
- package/dist/lib/test/factory/ulakStub.js +40 -0
- package/dist/lib/test/factory/ulakStub.js.map +1 -0
- package/dist/lib/test/harness/createTestApp.d.ts +33 -0
- package/dist/lib/test/harness/createTestApp.js +105 -0
- package/dist/lib/test/harness/createTestApp.js.map +1 -0
- package/dist/lib/test/harness/createWebTest.d.ts +28 -0
- package/dist/lib/test/harness/createWebTest.js +127 -0
- package/dist/lib/test/harness/createWebTest.js.map +1 -0
- package/dist/lib/test/harness/silentLogger.d.ts +27 -0
- package/dist/lib/test/harness/silentLogger.js +54 -0
- package/dist/lib/test/harness/silentLogger.js.map +1 -0
- package/dist/lib/test/harness/types.d.ts +147 -0
- package/dist/lib/test/harness/types.js +2 -0
- package/dist/lib/test/harness/types.js.map +1 -0
- package/dist/lib/test/http/TestHttpCall.d.ts +78 -0
- package/dist/lib/test/http/TestHttpCall.js +149 -0
- package/dist/lib/test/http/TestHttpCall.js.map +1 -0
- package/dist/lib/test/http/TestHttpResponse.d.ts +46 -0
- package/dist/lib/test/http/TestHttpResponse.js +70 -0
- package/dist/lib/test/http/TestHttpResponse.js.map +1 -0
- package/dist/lib/test/index.d.ts +9 -0
- package/dist/lib/test/index.js +8 -0
- package/dist/lib/test/index.js.map +1 -1
- package/dist/lib/test/metadata/discovery.d.ts +21 -0
- package/dist/lib/test/metadata/discovery.js +37 -8
- package/dist/lib/test/metadata/discovery.js.map +1 -1
- package/dist/lib/test/mockComponent.d.ts +25 -0
- package/dist/lib/test/mockComponent.js +39 -6
- package/dist/lib/test/mockComponent.js.map +1 -1
- package/dist/lib/test/types.d.ts +13 -0
- package/package.json +11 -7
|
@@ -11,6 +11,8 @@ import { CoreService, ICoreServiceNames } from '../../ioc';
|
|
|
11
11
|
import { UlakError, UlakErrorCode } from './types';
|
|
12
12
|
import { Inject } from '../../ioc/component';
|
|
13
13
|
import { blue } from '../../logger';
|
|
14
|
+
import { DEFAULT_TRANSPORT_NAME } from '../microservice/types';
|
|
15
|
+
import { composeOnSend } from '../microservice/interceptorChain';
|
|
14
16
|
/**
|
|
15
17
|
* Central WebSocket message broker for Asena.js
|
|
16
18
|
*
|
|
@@ -42,6 +44,14 @@ let Ulak = class Ulak {
|
|
|
42
44
|
* Map of namespace path to WebSocket service instance
|
|
43
45
|
*/
|
|
44
46
|
namespaces = new Map();
|
|
47
|
+
/**
|
|
48
|
+
* Named microservice transports (set during bootstrap by PrepareMicroserviceService)
|
|
49
|
+
*/
|
|
50
|
+
microserviceTransports = new Map();
|
|
51
|
+
/**
|
|
52
|
+
* Messaging interceptors applied to all outgoing send/emit calls
|
|
53
|
+
*/
|
|
54
|
+
microserviceInterceptors = [];
|
|
45
55
|
/**
|
|
46
56
|
* Initialize Ulak messaging system
|
|
47
57
|
* Called after dependency injection is complete
|
|
@@ -258,6 +268,86 @@ let Ulak = class Ulak {
|
|
|
258
268
|
const service = this.namespaces.get(namespace);
|
|
259
269
|
return service ? service.sockets.size : 0;
|
|
260
270
|
}
|
|
271
|
+
/**
|
|
272
|
+
* Wire the microservice transports into Ulak
|
|
273
|
+
* Called during bootstrap by PrepareMicroserviceService - not intended for user code
|
|
274
|
+
*
|
|
275
|
+
* @param transports - Named transports ('default' for the single-transport form)
|
|
276
|
+
* @param interceptors - Interceptors applied to all outgoing send/emit calls
|
|
277
|
+
*/
|
|
278
|
+
setMicroserviceTransports(transports, interceptors = []) {
|
|
279
|
+
this.microserviceTransports = transports;
|
|
280
|
+
this.microserviceInterceptors = interceptors;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Check if a microservice transport is configured and connected
|
|
284
|
+
*
|
|
285
|
+
* @param transport - Named transport to check
|
|
286
|
+
* @returns True when the transport exists and reports a live connection
|
|
287
|
+
*/
|
|
288
|
+
isMicroserviceConnected(transport = DEFAULT_TRANSPORT_NAME) {
|
|
289
|
+
const instance = this.microserviceTransports.get(transport);
|
|
290
|
+
return instance ? instance.isConnected : false;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Get all configured microservice transports (read-only)
|
|
294
|
+
* Used by the health endpoint to report per-transport status
|
|
295
|
+
*/
|
|
296
|
+
getMicroserviceTransports() {
|
|
297
|
+
return this.microserviceTransports;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Send a request to another service and await its reply (request/response)
|
|
301
|
+
*
|
|
302
|
+
* @param pattern - Full request pattern (e.g. 'order.create')
|
|
303
|
+
* @param data - Request payload
|
|
304
|
+
* @param options - Timeout, headers and named transport selection
|
|
305
|
+
* @returns The reply produced by the remote @MessagePattern handler
|
|
306
|
+
* @throws {UlakError} NO_TRANSPORT / TRANSPORT_NOT_FOUND / TIMEOUT / REMOTE_ERROR
|
|
307
|
+
*/
|
|
308
|
+
async send(pattern, data, options) {
|
|
309
|
+
if (!pattern) {
|
|
310
|
+
// Fail fast: an empty pattern would otherwise create a nonsense broker
|
|
311
|
+
// stream and burn the full request timeout before surfacing
|
|
312
|
+
throw new UlakError('Pattern cannot be empty', UlakErrorCode.SEND_FAILED);
|
|
313
|
+
}
|
|
314
|
+
const transport = this.getMicroserviceTransport(options?.transport);
|
|
315
|
+
const ctx = { pattern, kind: 'send', headers: { ...options?.headers }, data };
|
|
316
|
+
return composeOnSend(this.microserviceInterceptors, ctx, () => transport.send(pattern, data, { timeout: options?.timeout, headers: ctx.headers }));
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Emit a fire-and-forget event to other services
|
|
320
|
+
*
|
|
321
|
+
* @param pattern - Full event pattern (e.g. 'order.created')
|
|
322
|
+
* @param data - Event payload
|
|
323
|
+
* @param options - Headers and named transport selection
|
|
324
|
+
* @throws {UlakError} NO_TRANSPORT / TRANSPORT_NOT_FOUND
|
|
325
|
+
*/
|
|
326
|
+
async emit(pattern, data, options) {
|
|
327
|
+
if (!pattern) {
|
|
328
|
+
throw new UlakError('Pattern cannot be empty', UlakErrorCode.SEND_FAILED);
|
|
329
|
+
}
|
|
330
|
+
const transport = this.getMicroserviceTransport(options?.transport);
|
|
331
|
+
const ctx = { pattern, kind: 'emit', headers: { ...options?.headers }, data };
|
|
332
|
+
await composeOnSend(this.microserviceInterceptors, ctx, () => transport.emit(pattern, data, { headers: ctx.headers }));
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Select a pattern-scoped microservice messaging view
|
|
336
|
+
* Patterns passed to the returned view are joined with the prefix ('order' + 'create' → 'order.create')
|
|
337
|
+
*
|
|
338
|
+
* @param prefix - Pattern prefix (empty for absolute patterns)
|
|
339
|
+
* @param options - Named transport selection
|
|
340
|
+
* @returns Scoped messages instance
|
|
341
|
+
*
|
|
342
|
+
* @example
|
|
343
|
+
* ```typescript
|
|
344
|
+
* const orders = ulak.messages('order');
|
|
345
|
+
* const res = await orders.send('create', dto); // sends 'order.create'
|
|
346
|
+
* ```
|
|
347
|
+
*/
|
|
348
|
+
messages(prefix, options) {
|
|
349
|
+
return new UlakMessages((prefix || ''), this, options?.transport);
|
|
350
|
+
}
|
|
261
351
|
/**
|
|
262
352
|
* Dispose of all resources and stop background tasks
|
|
263
353
|
* Should be called during application shutdown
|
|
@@ -284,6 +374,23 @@ let Ulak = class Ulak {
|
|
|
284
374
|
}
|
|
285
375
|
return service;
|
|
286
376
|
}
|
|
377
|
+
/**
|
|
378
|
+
* Get a named microservice transport or throw
|
|
379
|
+
*
|
|
380
|
+
* @param name - Named transport (defaults to 'default')
|
|
381
|
+
* @throws {UlakError} NO_TRANSPORT when none configured, TRANSPORT_NOT_FOUND for unknown names
|
|
382
|
+
*/
|
|
383
|
+
getMicroserviceTransport(name = DEFAULT_TRANSPORT_NAME) {
|
|
384
|
+
if (this.microserviceTransports.size === 0) {
|
|
385
|
+
throw new UlakError('No microservice transport configured - configure a microservice transport in your @Config transport()', UlakErrorCode.NO_TRANSPORT);
|
|
386
|
+
}
|
|
387
|
+
const transport = this.microserviceTransports.get(name);
|
|
388
|
+
if (!transport) {
|
|
389
|
+
const available = Array.from(this.microserviceTransports.keys()).join(', ');
|
|
390
|
+
throw new UlakError(`Microservice transport "${name}" not found - available transports: ${available}`, UlakErrorCode.TRANSPORT_NOT_FOUND);
|
|
391
|
+
}
|
|
392
|
+
return transport;
|
|
393
|
+
}
|
|
287
394
|
};
|
|
288
395
|
__decorate([
|
|
289
396
|
Inject(ICoreServiceNames.SERVER_LOGGER),
|
|
@@ -319,6 +426,36 @@ class UlakNameSpace {
|
|
|
319
426
|
return this.ulak.getSocketCount(this.path);
|
|
320
427
|
}
|
|
321
428
|
}
|
|
429
|
+
/**
|
|
430
|
+
* Internal implementation of pattern-scoped microservice messaging
|
|
431
|
+
*/
|
|
432
|
+
class UlakMessages {
|
|
433
|
+
prefix;
|
|
434
|
+
ulak;
|
|
435
|
+
transport;
|
|
436
|
+
constructor(prefix, ulak, transport) {
|
|
437
|
+
this.prefix = prefix;
|
|
438
|
+
this.ulak = ulak;
|
|
439
|
+
this.transport = transport;
|
|
440
|
+
}
|
|
441
|
+
async send(pattern, data, options) {
|
|
442
|
+
return this.ulak.send(this.buildPattern(pattern), data, { ...options, transport: this.transport });
|
|
443
|
+
}
|
|
444
|
+
async emit(pattern, data, options) {
|
|
445
|
+
await this.ulak.emit(this.buildPattern(pattern), data, { ...options, transport: this.transport });
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Join prefix and pattern (same rule as message handler prefixes):
|
|
449
|
+
* no prefix → pattern, no pattern → prefix, both → prefix.pattern
|
|
450
|
+
*/
|
|
451
|
+
buildPattern(pattern) {
|
|
452
|
+
if (!this.prefix)
|
|
453
|
+
return pattern;
|
|
454
|
+
if (!pattern)
|
|
455
|
+
return this.prefix;
|
|
456
|
+
return `${this.prefix}.${pattern}`;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
322
459
|
/**
|
|
323
460
|
* Helper function for injecting scoped Ulak namespace
|
|
324
461
|
*
|
|
@@ -351,4 +488,41 @@ class UlakNameSpace {
|
|
|
351
488
|
export function ulak(namespace) {
|
|
352
489
|
return [ICoreServiceNames.__ULAK__, (ulak) => ulak.namespace(namespace)];
|
|
353
490
|
}
|
|
491
|
+
/**
|
|
492
|
+
* Helper functions for injecting microservice messaging views from Ulak
|
|
493
|
+
* Declaration merging keeps the single `ulak` entry point:
|
|
494
|
+
* `ulak('/chat')` → WebSocket namespace, `ulak.messages('order')` → microservice messaging
|
|
495
|
+
*/
|
|
496
|
+
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
497
|
+
(function (ulak) {
|
|
498
|
+
/**
|
|
499
|
+
* Inject a pattern-scoped microservice messaging view
|
|
500
|
+
*
|
|
501
|
+
* @param prefix - Pattern prefix joined to every send/emit ('' for absolute patterns)
|
|
502
|
+
* @param options - Named transport selection (multi-broker projects)
|
|
503
|
+
* @returns A tuple of [serviceName, expression] for @Inject decorator
|
|
504
|
+
*
|
|
505
|
+
* @example
|
|
506
|
+
* ```typescript
|
|
507
|
+
* @Service('CheckoutService')
|
|
508
|
+
* export class CheckoutService {
|
|
509
|
+
* @Inject(ulak.messages('order'))
|
|
510
|
+
* private orders: Ulak.Messages<'order'>;
|
|
511
|
+
*
|
|
512
|
+
* async checkout(dto: CheckoutDto) {
|
|
513
|
+
* const res = await this.orders.send('create', dto); // sends 'order.create'
|
|
514
|
+
* await this.orders.emit('created', { id: res.id }); // emits 'order.created'
|
|
515
|
+
* }
|
|
516
|
+
* }
|
|
517
|
+
*
|
|
518
|
+
* // Named transport (multi-broker projects)
|
|
519
|
+
* @Inject(ulak.messages('metrics', { transport: 'analytics' }))
|
|
520
|
+
* private metrics: Ulak.Messages<'metrics'>;
|
|
521
|
+
* ```
|
|
522
|
+
*/
|
|
523
|
+
function messages(prefix, options) {
|
|
524
|
+
return [ICoreServiceNames.__ULAK__, (u) => u.messages(prefix, options)];
|
|
525
|
+
}
|
|
526
|
+
ulak.messages = messages;
|
|
527
|
+
})(ulak || (ulak = {}));
|
|
354
528
|
//# sourceMappingURL=Ulak.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ulak.js","sourceRoot":"","sources":["../../../../lib/server/messaging/Ulak.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,WAAW,EAAqB,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAuC,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAqB,MAAM,cAAc,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEI,IAAM,IAAI,GAAV,MAAM,IAAI;IACC,WAAW,GAAW,MAAM,CAAC;IAE7C;;OAEG;IAEK,MAAM,CAAe;IAE7B;;OAEG;IACK,UAAU,GAA4C,IAAI,GAAG,EAAE,CAAC;IAExE;;;OAGG;IACI,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,gDAAgD,CAAC,CAAC;IACtF,CAAC;IAED;;;;;;OAMG;IACI,iBAAiB,CAAC,IAAY,EAAE,OAAmC;QACxE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,gCAAgC,CAAC,CAAC;YACvF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,cAAc,CAAC,CAAC;IACvE,CAAC;IAED;;;;;OAKG;IACI,mBAAmB,CAAC,IAAY;QACrC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,iCAAiC,IAAI,eAAe,CAAC,CAAC;YACxF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,gBAAgB,CAAC,CAAC;IACzE,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,SAAS,CAAmB,IAAO;QACxC,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,IAAS;QACjD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YAEpD,wDAAwD;YACxD,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,oCAAoC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;YAE5F,oEAAoE;YACpE,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,IAAI,SAAS,CACjB,qCAAqC,SAAS,EAAE,EAChD,aAAa,CAAC,gBAAgB,EAC9B,SAAS,EACT,KAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,EAAE,CAAC,SAAiB,EAAE,IAAY,EAAE,IAAS;QACxD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YAEpD,qDAAqD;YACrD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,IAAI,0BAA0B,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;YAExG,oEAAoE;YACpE,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,IAAI,SAAS,CACjB,2BAA2B,IAAI,mBAAmB,SAAS,EAAE,EAC7D,aAAa,CAAC,WAAW,EACzB,SAAS,EACT,KAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,QAAgB,EAAE,IAAS;QAClE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YAEpD,sDAAsD;YACtD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE7C,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACpE,OAAO;YACT,CAAC;YAED,uDAAuD;YACvD,iEAAiE;YACjE,+DAA+D;YAC/D,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,QAAQ,0BAA0B,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;YAE9G,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,IAAI,SAAS,CACjB,6BAA6B,QAAQ,mBAAmB,SAAS,EAAE,EACnE,aAAa,CAAC,WAAW,EACzB,SAAS,EACT,KAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,KAAe,EAAE,IAAS;QAC/D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAE9F,iBAAiB;QACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;QAEhE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,IAAI,CAAC,QAAQ,CAAC,0BAA0B,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,cAAc,SAAS,GAAG,CACrG,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,YAAY,CAAC,IAAS;QACjC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAE3F,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;QACzE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;QAErE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,sBAAsB,SAAS,eAAe,MAAM,SAAS,CAAC,CAAC;IACnG,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,QAAQ,CAAC,UAA2B;QAC/C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;gBAChB,KAAK,WAAW;oBACd,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;gBAE/C,KAAK,MAAM;oBACT,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;wBACb,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;oBAC5E,CAAC;oBAED,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;gBAEjD,KAAK,QAAQ;oBACX,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;wBACjB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;oBAC9E,CAAC;oBAED,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;gBAE3D;oBACE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA4B,EAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACpF,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;QACzE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;QAErE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,SAAS,IAAI,UAAU,CAAC,MAAM,eAAe,MAAM,SAAS,CAAC,CAAC;QAE/G,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,MAAM;YACxB,SAAS;YACT,MAAM;YACN,OAAO;SACR,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,aAAa;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACI,YAAY,CAAC,SAAiB;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACI,cAAc,CAAC,SAAiB;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE/C,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACI,OAAO;QACZ,4BAA4B;QAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAEtD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;OAMG;IACK,mBAAmB,CAAC,SAAiB;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,SAAS,CAAC,cAAc,SAAS,qBAAqB,EAAE,aAAa,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;QAClH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAA;AArTS;IADP,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC;;oCACX;AAPlB,IAAI;IADhB,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC;GAC3B,IAAI,CA4ThB;;AAsDD;;GAEG;AACH,MAAM,aAAa;IAEC;IACC;IAFnB,YACkB,IAAO,EACN,IAAU;QADX,SAAI,GAAJ,IAAI,CAAG;QACN,SAAI,GAAJ,IAAI,CAAM;IAC1B,CAAC;IAEG,KAAK,CAAC,SAAS,CAAC,IAAS;QAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,EAAE,CAAC,IAAY,EAAE,IAAS;QACrC,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,IAAS;QAC/C,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,KAAe,EAAE,IAAS;QAC5C,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,IAAI,CAAmB,SAAY;IACjD,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAU,CAAC;AAC1F,CAAC"}
|
|
1
|
+
{"version":3,"file":"Ulak.js","sourceRoot":"","sources":["../../../../lib/server/messaging/Ulak.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,WAAW,EAAqB,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAuC,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAqB,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AA0BjE;;;;;;;;;;;;;;;;;;;;GAoBG;AAEI,IAAM,IAAI,GAAV,MAAM,IAAI;IACC,WAAW,GAAW,MAAM,CAAC;IAE7C;;OAEG;IAEK,MAAM,CAAe;IAE7B;;OAEG;IACK,UAAU,GAA4C,IAAI,GAAG,EAAE,CAAC;IAExE;;OAEG;IACK,sBAAsB,GAAuC,IAAI,GAAG,EAAE,CAAC;IAE/E;;OAEG;IACK,wBAAwB,GAA2B,EAAE,CAAC;IAE9D;;;OAGG;IACI,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,gDAAgD,CAAC,CAAC;IACtF,CAAC;IAED;;;;;;OAMG;IACI,iBAAiB,CAAC,IAAY,EAAE,OAAmC;QACxE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,gCAAgC,CAAC,CAAC;YACvF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,cAAc,CAAC,CAAC;IACvE,CAAC;IAED;;;;;OAKG;IACI,mBAAmB,CAAC,IAAY;QACrC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,iCAAiC,IAAI,eAAe,CAAC,CAAC;YACxF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,gBAAgB,CAAC,CAAC;IACzE,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,SAAS,CAAmB,IAAO;QACxC,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,IAAS;QACjD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YAEpD,wDAAwD;YACxD,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,oCAAoC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;YAE5F,oEAAoE;YACpE,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,IAAI,SAAS,CACjB,qCAAqC,SAAS,EAAE,EAChD,aAAa,CAAC,gBAAgB,EAC9B,SAAS,EACT,KAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,EAAE,CAAC,SAAiB,EAAE,IAAY,EAAE,IAAS;QACxD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YAEpD,qDAAqD;YACrD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,IAAI,0BAA0B,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;YAExG,oEAAoE;YACpE,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,IAAI,SAAS,CACjB,2BAA2B,IAAI,mBAAmB,SAAS,EAAE,EAC7D,aAAa,CAAC,WAAW,EACzB,SAAS,EACT,KAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,QAAgB,EAAE,IAAS;QAClE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YAEpD,sDAAsD;YACtD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE7C,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACpE,OAAO;YACT,CAAC;YAED,uDAAuD;YACvD,iEAAiE;YACjE,+DAA+D;YAC/D,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,QAAQ,0BAA0B,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;YAE9G,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,IAAI,SAAS,CACjB,6BAA6B,QAAQ,mBAAmB,SAAS,EAAE,EACnE,aAAa,CAAC,WAAW,EACzB,SAAS,EACT,KAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,KAAe,EAAE,IAAS;QAC/D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAE9F,iBAAiB;QACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;QAEhE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,IAAI,CAAC,QAAQ,CAAC,0BAA0B,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,cAAc,SAAS,GAAG,CACrG,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,YAAY,CAAC,IAAS;QACjC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAE3F,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;QACzE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;QAErE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,sBAAsB,SAAS,eAAe,MAAM,SAAS,CAAC,CAAC;IACnG,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,QAAQ,CAAC,UAA2B;QAC/C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;gBAChB,KAAK,WAAW;oBACd,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;gBAE/C,KAAK,MAAM;oBACT,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;wBACb,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;oBAC5E,CAAC;oBAED,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;gBAEjD,KAAK,QAAQ;oBACX,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;wBACjB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;oBAC9E,CAAC;oBAED,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;gBAE3D;oBACE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA4B,EAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACpF,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;QACzE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;QAErE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,SAAS,IAAI,UAAU,CAAC,MAAM,eAAe,MAAM,SAAS,CAAC,CAAC;QAE/G,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,MAAM;YACxB,SAAS;YACT,MAAM;YACN,OAAO;SACR,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,aAAa;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACI,YAAY,CAAC,SAAiB;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACI,cAAc,CAAC,SAAiB;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE/C,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;OAMG;IACI,yBAAyB,CAC9B,UAA8C,EAC9C,eAAuC,EAAE;QAEzC,IAAI,CAAC,sBAAsB,GAAG,UAAU,CAAC;QACzC,IAAI,CAAC,wBAAwB,GAAG,YAAY,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACI,uBAAuB,CAAC,YAAoB,sBAAsB;QACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE5D,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;IACjD,CAAC;IAED;;;OAGG;IACI,yBAAyB;QAC9B,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACrC,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,IAAI,CAAc,OAAe,EAAE,IAAc,EAAE,OAAyB;QACvF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,uEAAuE;YACvE,4DAA4D;YAC5D,MAAM,IAAI,SAAS,CAAC,yBAAyB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAEpE,MAAM,GAAG,GAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC;QAE/F,OAAO,aAAa,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,GAAG,EAAE,CAC5D,SAAS,CAAC,IAAI,CAAI,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CACxE,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,IAAc,EAAE,OAAyB;QAC1E,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,SAAS,CAAC,yBAAyB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAEpE,MAAM,GAAG,GAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC;QAE/F,MAAM,aAAa,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,GAAG,EAAE,CAC3D,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CACxD,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,QAAQ,CAAwB,MAAU,EAAE,OAAgC;QACjF,OAAO,IAAI,YAAY,CAAC,CAAC,MAAM,IAAI,EAAE,CAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACzE,CAAC;IAED;;;OAGG;IACI,OAAO;QACZ,4BAA4B;QAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAEtD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;OAMG;IACK,mBAAmB,CAAC,SAAiB;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,SAAS,CAAC,cAAc,SAAS,qBAAqB,EAAE,aAAa,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;QAClH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACK,wBAAwB,CAAC,OAAe,sBAAsB;QACpE,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,SAAS,CACjB,uGAAuG,EACvG,aAAa,CAAC,YAAY,CAC3B,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAExD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE5E,MAAM,IAAI,SAAS,CACjB,2BAA2B,IAAI,uCAAuC,SAAS,EAAE,EACjF,aAAa,CAAC,mBAAmB,CAClC,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAA;AA/bS;IADP,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC;;oCACX;AAPlB,IAAI;IADhB,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC;GAC3B,IAAI,CAschB;;AAqFD;;GAEG;AACH,MAAM,aAAa;IAEC;IACC;IAFnB,YACkB,IAAO,EACN,IAAU;QADX,SAAI,GAAJ,IAAI,CAAG;QACN,SAAI,GAAJ,IAAI,CAAM;IAC1B,CAAC;IAEG,KAAK,CAAC,SAAS,CAAC,IAAS;QAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,EAAE,CAAC,IAAY,EAAE,IAAS;QACrC,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,IAAS;QAC/C,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,KAAe,EAAE,IAAS;QAC5C,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,YAAY;IAEE;IACC;IACA;IAHnB,YACkB,MAAS,EACR,IAAU,EACV,SAAkB;QAFnB,WAAM,GAAN,MAAM,CAAG;QACR,SAAI,GAAJ,IAAI,CAAM;QACV,cAAS,GAAT,SAAS,CAAS;IAClC,CAAC;IAEG,KAAK,CAAC,IAAI,CAAc,OAAe,EAAE,IAAc,EAAE,OAAqB;QACnF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACxG,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,IAAc,EAAE,OAAqB;QACtE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACpG,CAAC;IAED;;;OAGG;IACK,YAAY,CAAC,OAAe;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC;QACjC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC;QACjC,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;IACrC,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,IAAI,CAAmB,SAAY;IACjD,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAU,CAAC;AAC1F,CAAC;AAED;;;;GAIG;AACH,2DAA2D;AAC3D,WAAiB,IAAI;IACnB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,SAAgB,QAAQ,CAAwB,MAAU,EAAE,OAAgC;QAC1F,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAO,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAU,CAAC;IACzF,CAAC;IAFe,aAAQ,WAEvB,CAAA;AACH,CAAC,EA7BgB,IAAI,KAAJ,IAAI,QA6BpB"}
|
|
@@ -9,7 +9,11 @@ export declare enum UlakErrorCode {
|
|
|
9
9
|
SEND_FAILED = "SEND_FAILED",
|
|
10
10
|
BROADCAST_FAILED = "BROADCAST_FAILED",
|
|
11
11
|
SOCKET_NOT_FOUND = "SOCKET_NOT_FOUND",
|
|
12
|
-
SERVICE_NOT_INITIALIZED = "SERVICE_NOT_INITIALIZED"
|
|
12
|
+
SERVICE_NOT_INITIALIZED = "SERVICE_NOT_INITIALIZED",
|
|
13
|
+
NO_TRANSPORT = "NO_TRANSPORT",
|
|
14
|
+
TRANSPORT_NOT_FOUND = "TRANSPORT_NOT_FOUND",
|
|
15
|
+
TIMEOUT = "TIMEOUT",
|
|
16
|
+
REMOTE_ERROR = "REMOTE_ERROR"
|
|
13
17
|
}
|
|
14
18
|
/**
|
|
15
19
|
* Custom error class for Ulak messaging system
|
|
@@ -11,6 +11,11 @@ export var UlakErrorCode;
|
|
|
11
11
|
UlakErrorCode["BROADCAST_FAILED"] = "BROADCAST_FAILED";
|
|
12
12
|
UlakErrorCode["SOCKET_NOT_FOUND"] = "SOCKET_NOT_FOUND";
|
|
13
13
|
UlakErrorCode["SERVICE_NOT_INITIALIZED"] = "SERVICE_NOT_INITIALIZED";
|
|
14
|
+
// Microservice messaging
|
|
15
|
+
UlakErrorCode["NO_TRANSPORT"] = "NO_TRANSPORT";
|
|
16
|
+
UlakErrorCode["TRANSPORT_NOT_FOUND"] = "TRANSPORT_NOT_FOUND";
|
|
17
|
+
UlakErrorCode["TIMEOUT"] = "TIMEOUT";
|
|
18
|
+
UlakErrorCode["REMOTE_ERROR"] = "REMOTE_ERROR";
|
|
14
19
|
})(UlakErrorCode || (UlakErrorCode = {}));
|
|
15
20
|
/**
|
|
16
21
|
* Custom error class for Ulak messaging system
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../lib/server/messaging/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../lib/server/messaging/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,aAeX;AAfD,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;IAEnD,yBAAyB;IACzB,8CAA6B,CAAA;IAC7B,4DAA2C,CAAA;IAC3C,oCAAmB,CAAA;IACnB,8CAA6B,CAAA;AAC/B,CAAC,EAfW,aAAa,KAAb,aAAa,QAexB;AAED;;;GAGG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClB,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;CACF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { EmitOptions, EventPatternHandler, MessageHandler, MicroserviceTransport, SendOptions } from './MicroserviceTransport';
|
|
2
|
+
/**
|
|
3
|
+
* @description Zero-dependency in-process microservice transport.
|
|
4
|
+
*
|
|
5
|
+
* Messages never leave the process — send/emit dispatch directly to handlers
|
|
6
|
+
* registered in the same application. Useful as:
|
|
7
|
+
* - a development mode before a broker is available
|
|
8
|
+
* - a test double for @MessageController integration tests
|
|
9
|
+
* - the reference implementation of the MicroserviceTransport SPI
|
|
10
|
+
*
|
|
11
|
+
* Delivery semantics: synchronous at-most-once, attempt is always 1.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* @Config()
|
|
15
|
+
* export class AppConfig extends ConfigService {
|
|
16
|
+
* transport() {
|
|
17
|
+
* return { microservice: new InMemoryTransport() };
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
*/
|
|
21
|
+
export declare class InMemoryTransport implements MicroserviceTransport {
|
|
22
|
+
readonly name = "in-memory";
|
|
23
|
+
/**
|
|
24
|
+
* Exact request pattern -> handler (request/response requires exact routing)
|
|
25
|
+
*/
|
|
26
|
+
private messageHandlers;
|
|
27
|
+
/**
|
|
28
|
+
* Event handler index (shared hybrid exact/wildcard implementation)
|
|
29
|
+
*/
|
|
30
|
+
private eventHandlers;
|
|
31
|
+
/**
|
|
32
|
+
* Monotonic counter used to build message ids
|
|
33
|
+
*/
|
|
34
|
+
private sequence;
|
|
35
|
+
readonly isConnected = true;
|
|
36
|
+
init(): Promise<void>;
|
|
37
|
+
registerMessageHandler(pattern: string, handler: MessageHandler): void;
|
|
38
|
+
registerEventHandler(pattern: string, handler: EventPatternHandler): void;
|
|
39
|
+
listen(): Promise<void>;
|
|
40
|
+
send<T = unknown>(pattern: string, data?: unknown, options?: SendOptions): Promise<T>;
|
|
41
|
+
emit(pattern: string, data?: unknown, options?: EmitOptions): Promise<void>;
|
|
42
|
+
destroy(): Promise<void>;
|
|
43
|
+
private createContext;
|
|
44
|
+
private withTimeout;
|
|
45
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { UlakError, UlakErrorCode } from '../messaging/types';
|
|
2
|
+
import { PatternHandlerIndex } from '../event/PatternHandlerIndex';
|
|
3
|
+
/**
|
|
4
|
+
* @description Zero-dependency in-process microservice transport.
|
|
5
|
+
*
|
|
6
|
+
* Messages never leave the process — send/emit dispatch directly to handlers
|
|
7
|
+
* registered in the same application. Useful as:
|
|
8
|
+
* - a development mode before a broker is available
|
|
9
|
+
* - a test double for @MessageController integration tests
|
|
10
|
+
* - the reference implementation of the MicroserviceTransport SPI
|
|
11
|
+
*
|
|
12
|
+
* Delivery semantics: synchronous at-most-once, attempt is always 1.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* @Config()
|
|
16
|
+
* export class AppConfig extends ConfigService {
|
|
17
|
+
* transport() {
|
|
18
|
+
* return { microservice: new InMemoryTransport() };
|
|
19
|
+
* }
|
|
20
|
+
* }
|
|
21
|
+
*/
|
|
22
|
+
export class InMemoryTransport {
|
|
23
|
+
name = 'in-memory';
|
|
24
|
+
/**
|
|
25
|
+
* Exact request pattern -> handler (request/response requires exact routing)
|
|
26
|
+
*/
|
|
27
|
+
messageHandlers = new Map();
|
|
28
|
+
/**
|
|
29
|
+
* Event handler index (shared hybrid exact/wildcard implementation)
|
|
30
|
+
*/
|
|
31
|
+
eventHandlers = new PatternHandlerIndex();
|
|
32
|
+
/**
|
|
33
|
+
* Monotonic counter used to build message ids
|
|
34
|
+
*/
|
|
35
|
+
sequence = 0;
|
|
36
|
+
isConnected = true;
|
|
37
|
+
async init() {
|
|
38
|
+
// Nothing to connect - in-process only
|
|
39
|
+
}
|
|
40
|
+
registerMessageHandler(pattern, handler) {
|
|
41
|
+
// Validate the FINAL pattern: the decorator only sees the raw method
|
|
42
|
+
// pattern, so a wildcard or emptiness introduced by the @MessageController
|
|
43
|
+
// prefix would otherwise slip through
|
|
44
|
+
if (!pattern) {
|
|
45
|
+
throw new Error('Message pattern cannot be empty - check @MessagePattern and the @MessageController prefix');
|
|
46
|
+
}
|
|
47
|
+
if (pattern.includes('*')) {
|
|
48
|
+
throw new Error(`Message pattern "${pattern}" cannot contain wildcards - request/response requires exact routing ` +
|
|
49
|
+
'(a wildcard likely leaked in via the @MessageController prefix - remove it, or set ' +
|
|
50
|
+
'prefix: false on the @MessagePattern)');
|
|
51
|
+
}
|
|
52
|
+
if (this.messageHandlers.has(pattern)) {
|
|
53
|
+
throw new Error(`Duplicate @MessagePattern('${pattern}') - a message pattern can only have one handler`);
|
|
54
|
+
}
|
|
55
|
+
this.messageHandlers.set(pattern, handler);
|
|
56
|
+
}
|
|
57
|
+
registerEventHandler(pattern, handler) {
|
|
58
|
+
if (!pattern) {
|
|
59
|
+
throw new Error('Event pattern cannot be empty - check @EventPattern and the @MessageController prefix');
|
|
60
|
+
}
|
|
61
|
+
this.eventHandlers.add(pattern, handler);
|
|
62
|
+
}
|
|
63
|
+
async listen() {
|
|
64
|
+
// Nothing to consume - handlers are invoked directly by send/emit
|
|
65
|
+
}
|
|
66
|
+
async send(pattern, data, options) {
|
|
67
|
+
const handler = this.messageHandlers.get(pattern);
|
|
68
|
+
if (!handler) {
|
|
69
|
+
throw new UlakError(`No message handler registered for pattern "${pattern}"`, UlakErrorCode.SEND_FAILED);
|
|
70
|
+
}
|
|
71
|
+
const context = this.createContext(pattern, crypto.randomUUID(), options?.headers);
|
|
72
|
+
const invocation = Promise.resolve().then(() => handler(data, context));
|
|
73
|
+
try {
|
|
74
|
+
const result = options?.timeout ? await this.withTimeout(invocation, options.timeout, pattern) : await invocation;
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
if (error instanceof UlakError) {
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
throw new UlakError(`Handler for pattern "${pattern}" failed: ${error.message}`, UlakErrorCode.REMOTE_ERROR, undefined, error);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async emit(pattern, data, options) {
|
|
85
|
+
const handlers = this.eventHandlers.collect(pattern);
|
|
86
|
+
// One context per emit: every handler of the same event must observe the
|
|
87
|
+
// SAME messageId (as in Redis, where all handlers see the entry id) - the
|
|
88
|
+
// documented messageId-dedup recipe relies on this
|
|
89
|
+
const context = this.createContext(pattern, undefined, options?.headers);
|
|
90
|
+
// Fire-and-forget: handler failures must not reach the emitter
|
|
91
|
+
await Promise.allSettled(handlers.map((handler) => Promise.resolve().then(() => handler(data, context))));
|
|
92
|
+
}
|
|
93
|
+
async destroy() {
|
|
94
|
+
this.messageHandlers.clear();
|
|
95
|
+
this.eventHandlers.clear();
|
|
96
|
+
}
|
|
97
|
+
createContext(pattern, correlationId, headers) {
|
|
98
|
+
return {
|
|
99
|
+
pattern,
|
|
100
|
+
messageId: `mem-${++this.sequence}`,
|
|
101
|
+
correlationId,
|
|
102
|
+
headers: { ...headers },
|
|
103
|
+
timestamp: Date.now(),
|
|
104
|
+
attempt: 1,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
withTimeout(promise, timeout, pattern) {
|
|
108
|
+
return new Promise((resolve, reject) => {
|
|
109
|
+
const timer = setTimeout(() => {
|
|
110
|
+
reject(new UlakError(`Request "${pattern}" timed out after ${timeout}ms`, UlakErrorCode.TIMEOUT));
|
|
111
|
+
}, timeout);
|
|
112
|
+
promise
|
|
113
|
+
.then((value) => {
|
|
114
|
+
clearTimeout(timer);
|
|
115
|
+
resolve(value);
|
|
116
|
+
})
|
|
117
|
+
.catch((error) => {
|
|
118
|
+
clearTimeout(timer);
|
|
119
|
+
reject(error);
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=InMemoryTransport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryTransport.js","sourceRoot":"","sources":["../../../../lib/server/microservice/InMemoryTransport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Context passed to every microservice message/event handler.
|
|
3
|
+
* Carries transport-level metadata about the incoming message.
|
|
4
|
+
*/
|
|
5
|
+
export interface MessageContext {
|
|
6
|
+
/**
|
|
7
|
+
* Concrete pattern of the incoming message (e.g. 'order.create')
|
|
8
|
+
*/
|
|
9
|
+
pattern: string;
|
|
10
|
+
/**
|
|
11
|
+
* Transport-assigned unique id of the message (e.g. Redis stream entry id).
|
|
12
|
+
* Useful for idempotency/deduplication in at-least-once transports.
|
|
13
|
+
*/
|
|
14
|
+
messageId: string;
|
|
15
|
+
/**
|
|
16
|
+
* Correlation id, present only for request/response messages
|
|
17
|
+
*/
|
|
18
|
+
correlationId?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Message headers (trace context, user metadata, ...)
|
|
21
|
+
*/
|
|
22
|
+
headers: Record<string, string>;
|
|
23
|
+
/**
|
|
24
|
+
* Producer-side timestamp (epoch millis)
|
|
25
|
+
*/
|
|
26
|
+
timestamp: number;
|
|
27
|
+
/**
|
|
28
|
+
* Delivery attempt number, starting at 1.
|
|
29
|
+
* Greater than 1 means the message was redelivered (at-least-once transports).
|
|
30
|
+
*/
|
|
31
|
+
attempt: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* @description Handler for request/response messages (@MessagePattern).
|
|
35
|
+
* The return value is serialized and sent back to the caller as the reply.
|
|
36
|
+
*/
|
|
37
|
+
export type MessageHandler = (data: any, context: MessageContext) => any | Promise<any>;
|
|
38
|
+
/**
|
|
39
|
+
* @description Handler for fire-and-forget events (@EventPattern)
|
|
40
|
+
*/
|
|
41
|
+
export type EventPatternHandler = (data: any, context: MessageContext) => void | Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* @description Options for request/response sends
|
|
44
|
+
*/
|
|
45
|
+
export interface SendOptions {
|
|
46
|
+
/**
|
|
47
|
+
* Reply timeout in milliseconds (transport default applies when omitted)
|
|
48
|
+
*/
|
|
49
|
+
timeout?: number;
|
|
50
|
+
/**
|
|
51
|
+
* Extra headers attached to the outgoing message
|
|
52
|
+
*/
|
|
53
|
+
headers?: Record<string, string>;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* @description Options for fire-and-forget emits
|
|
57
|
+
*/
|
|
58
|
+
export interface EmitOptions {
|
|
59
|
+
/**
|
|
60
|
+
* Extra headers attached to the outgoing event
|
|
61
|
+
*/
|
|
62
|
+
headers?: Record<string, string>;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* @description Options for transport shutdown
|
|
66
|
+
*/
|
|
67
|
+
export interface DestroyOptions {
|
|
68
|
+
/**
|
|
69
|
+
* Max time in milliseconds to wait for in-flight handlers to finish
|
|
70
|
+
* before closing connections (graceful drain)
|
|
71
|
+
*/
|
|
72
|
+
drainTimeout?: number;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* @description Broker-agnostic microservice transport SPI.
|
|
76
|
+
*
|
|
77
|
+
* A transport carries two message semantics between Asena services:
|
|
78
|
+
* - request/response (@MessagePattern) — exact patterns, a reply is produced
|
|
79
|
+
* - fire-and-forget events (@EventPattern) — wildcard patterns allowed
|
|
80
|
+
*
|
|
81
|
+
* Lifecycle contract (driven by PrepareMicroserviceService):
|
|
82
|
+
* 1. registerMessageHandler / registerEventHandler — push all handler registrations
|
|
83
|
+
* 2. init() — connect broker resources; after init, send/emit must work (client-only mode)
|
|
84
|
+
* 3. listen() — start consuming. MUST only consume sources that have at least one
|
|
85
|
+
* registered handler; with zero handlers no consumer may be started (client-only mode)
|
|
86
|
+
* 4. destroy() — graceful drain, then release all resources
|
|
87
|
+
*/
|
|
88
|
+
export interface MicroserviceTransport {
|
|
89
|
+
/**
|
|
90
|
+
* Human-readable transport name (used in logs and health reporting)
|
|
91
|
+
*/
|
|
92
|
+
readonly name: string;
|
|
93
|
+
/**
|
|
94
|
+
* Whether the transport currently holds a live broker connection.
|
|
95
|
+
* Read by the health endpoint.
|
|
96
|
+
*/
|
|
97
|
+
readonly isConnected: boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Connect broker resources. Called once before listen().
|
|
100
|
+
* After init() resolves, send()/emit() must be usable (client-only mode).
|
|
101
|
+
*/
|
|
102
|
+
init(): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* Register a request/response handler. Patterns must be exact (no wildcards).
|
|
105
|
+
*/
|
|
106
|
+
registerMessageHandler(pattern: string, handler: MessageHandler): void;
|
|
107
|
+
/**
|
|
108
|
+
* Register a fire-and-forget event handler. Patterns arrive with the
|
|
109
|
+
* @MessageController prefix already resolved and may contain wildcards
|
|
110
|
+
* (e.g. 'payment.*').
|
|
111
|
+
*/
|
|
112
|
+
registerEventHandler(pattern: string, handler: EventPatternHandler): void;
|
|
113
|
+
/**
|
|
114
|
+
* Start consuming registered patterns.
|
|
115
|
+
* Contract: only sources with at least one registered handler are consumed;
|
|
116
|
+
* with zero handlers no consumer loop is started.
|
|
117
|
+
*/
|
|
118
|
+
listen(): Promise<void>;
|
|
119
|
+
/**
|
|
120
|
+
* Send a request and await its reply (request/response semantics)
|
|
121
|
+
*/
|
|
122
|
+
send<T = unknown>(pattern: string, data?: unknown, options?: SendOptions): Promise<T>;
|
|
123
|
+
/**
|
|
124
|
+
* Emit a fire-and-forget event
|
|
125
|
+
*/
|
|
126
|
+
emit(pattern: string, data?: unknown, options?: EmitOptions): Promise<void>;
|
|
127
|
+
/**
|
|
128
|
+
* Gracefully shut down: stop consuming, drain in-flight handlers,
|
|
129
|
+
* reject pending sends, release connections.
|
|
130
|
+
*/
|
|
131
|
+
destroy(options?: DestroyOptions): Promise<void>;
|
|
132
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MicroserviceTransport.js","sourceRoot":"","sources":["../../../../lib/server/microservice/MicroserviceTransport.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { EventPatternParams } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* @description EventPattern decorator - Marks a method as a fire-and-forget event handler
|
|
4
|
+
*
|
|
5
|
+
* Methods decorated with @EventPattern will be automatically registered into the
|
|
6
|
+
* configured microservice transport when the server boots (via PrepareMicroserviceService).
|
|
7
|
+
* No reply is produced; delivery is at-least-once on durable transports, so handlers
|
|
8
|
+
* should be idempotent (use context.messageId for deduplication).
|
|
9
|
+
*
|
|
10
|
+
* The controller prefix is joined onto the pattern ('order' + 'created' →
|
|
11
|
+
* 'order.created'), matching what ulak.messages('order').emit('created') publishes.
|
|
12
|
+
* Pass `prefix: false` when the pattern is absolute — another service's event
|
|
13
|
+
* vocabulary, a Kafka external topic name, or a global catch-all.
|
|
14
|
+
* Wildcards are supported: 'payment.*', '*.completed', 'user.*.created'.
|
|
15
|
+
* Note that under a prefix, '*' becomes 'order.*' and is no longer a global catch-all.
|
|
16
|
+
*
|
|
17
|
+
* @param params - Event pattern or configuration object
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* @MessageController('order')
|
|
21
|
+
* export class OrderHandler {
|
|
22
|
+
* @EventPattern('created') // Handles 'order.created'
|
|
23
|
+
* async onCreated(event: OrderEvent, context: MessageContext) { }
|
|
24
|
+
*
|
|
25
|
+
* // Absolute - another service's event vocabulary
|
|
26
|
+
* @EventPattern({ pattern: 'payment.completed', prefix: false })
|
|
27
|
+
* async onPaymentCompleted(event: PaymentEvent, context: MessageContext) {
|
|
28
|
+
* await this.orderService.markPaid(event.orderId);
|
|
29
|
+
* }
|
|
30
|
+
*
|
|
31
|
+
* @EventPattern('*') // Wildcards allowed - handles 'order.*'
|
|
32
|
+
* async onAnyOrderEvent(event: any, context: MessageContext) { }
|
|
33
|
+
*
|
|
34
|
+
* @EventPattern({ pattern: 'stock.depleted', skip: true }) // Temporarily disabled
|
|
35
|
+
* async onStockDepleted(event: any, context: MessageContext) { }
|
|
36
|
+
* }
|
|
37
|
+
*/
|
|
38
|
+
export declare function EventPattern(params: EventPatternParams | string): MethodDecorator;
|