@asenajs/asena 0.7.0 → 0.8.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 (140) hide show
  1. package/README.md +2 -2
  2. package/dist/lib/adapter/AsenaAdapter.d.ts +5 -3
  3. package/dist/lib/adapter/AsenaAdapter.js.map +1 -1
  4. package/dist/lib/adapter/AsenaContext.d.ts +6 -0
  5. package/dist/lib/adapter/types/ServeOptions.d.ts +16 -0
  6. package/dist/lib/ioc/Container.d.ts +25 -0
  7. package/dist/lib/ioc/Container.js +47 -0
  8. package/dist/lib/ioc/Container.js.map +1 -1
  9. package/dist/lib/ioc/CoreContainer.d.ts +5 -3
  10. package/dist/lib/ioc/CoreContainer.js +9 -3
  11. package/dist/lib/ioc/CoreContainer.js.map +1 -1
  12. package/dist/lib/ioc/IocEngine.js +4 -5
  13. package/dist/lib/ioc/IocEngine.js.map +1 -1
  14. package/dist/lib/ioc/component/decorators/Inject.js +16 -0
  15. package/dist/lib/ioc/component/decorators/Inject.js.map +1 -1
  16. package/dist/lib/ioc/constants/ComponentConstants.d.ts +4 -0
  17. package/dist/lib/ioc/constants/ComponentConstants.js +5 -0
  18. package/dist/lib/ioc/constants/ComponentConstants.js.map +1 -1
  19. package/dist/lib/ioc/types/ICoreServiceNamesType.d.ts +1 -0
  20. package/dist/lib/ioc/types/ICoreServiceNamesType.js +1 -0
  21. package/dist/lib/ioc/types/ICoreServiceNamesType.js.map +1 -1
  22. package/dist/lib/ioc/types/InjectableComponent.d.ts +10 -0
  23. package/dist/lib/ioc/types/decorators/ComponentType.d.ts +2 -1
  24. package/dist/lib/ioc/types/decorators/ComponentType.js +1 -0
  25. package/dist/lib/ioc/types/decorators/ComponentType.js.map +1 -1
  26. package/dist/lib/server/AsenaServer.d.ts +46 -3
  27. package/dist/lib/server/AsenaServer.js +159 -29
  28. package/dist/lib/server/AsenaServer.js.map +1 -1
  29. package/dist/lib/server/AsenaServerFactory.d.ts +38 -3
  30. package/dist/lib/server/AsenaServerFactory.js +21 -2
  31. package/dist/lib/server/AsenaServerFactory.js.map +1 -1
  32. package/dist/lib/server/config/AsenaConfig.d.ts +82 -4
  33. package/dist/lib/server/config/AsenaConfig.js +39 -1
  34. package/dist/lib/server/config/AsenaConfig.js.map +1 -1
  35. package/dist/lib/server/decorators/components/FrontendController.js.map +1 -1
  36. package/dist/lib/server/decorators/components/MessageController.d.ts +49 -0
  37. package/dist/lib/server/decorators/components/MessageController.js +62 -0
  38. package/dist/lib/server/decorators/components/MessageController.js.map +1 -0
  39. package/dist/lib/server/decorators/components/index.d.ts +1 -0
  40. package/dist/lib/server/decorators/components/index.js +1 -0
  41. package/dist/lib/server/decorators/components/index.js.map +1 -1
  42. package/dist/lib/server/event/EventDispatchService.d.ts +3 -7
  43. package/dist/lib/server/event/EventDispatchService.js +9 -40
  44. package/dist/lib/server/event/EventDispatchService.js.map +1 -1
  45. package/dist/lib/server/event/PatternHandlerIndex.d.ts +53 -0
  46. package/dist/lib/server/event/PatternHandlerIndex.js +100 -0
  47. package/dist/lib/server/event/PatternHandlerIndex.js.map +1 -0
  48. package/dist/lib/server/event/decorators/On.d.ts +4 -0
  49. package/dist/lib/server/event/decorators/On.js +6 -0
  50. package/dist/lib/server/event/decorators/On.js.map +1 -1
  51. package/dist/lib/server/event/index.d.ts +1 -0
  52. package/dist/lib/server/event/index.js +2 -0
  53. package/dist/lib/server/event/index.js.map +1 -1
  54. package/dist/lib/server/event/types.d.ts +12 -0
  55. package/dist/lib/server/health/HealthServer.d.ts +26 -0
  56. package/dist/lib/server/health/HealthServer.js +63 -0
  57. package/dist/lib/server/health/HealthServer.js.map +1 -0
  58. package/dist/lib/server/health/index.d.ts +1 -0
  59. package/dist/lib/server/health/index.js +2 -0
  60. package/dist/lib/server/health/index.js.map +1 -0
  61. package/dist/lib/server/messaging/Ulak.d.ts +156 -0
  62. package/dist/lib/server/messaging/Ulak.js +174 -0
  63. package/dist/lib/server/messaging/Ulak.js.map +1 -1
  64. package/dist/lib/server/messaging/types.d.ts +5 -1
  65. package/dist/lib/server/messaging/types.js +5 -0
  66. package/dist/lib/server/messaging/types.js.map +1 -1
  67. package/dist/lib/server/microservice/InMemoryTransport.d.ts +45 -0
  68. package/dist/lib/server/microservice/InMemoryTransport.js +124 -0
  69. package/dist/lib/server/microservice/InMemoryTransport.js.map +1 -0
  70. package/dist/lib/server/microservice/MicroserviceTransport.d.ts +132 -0
  71. package/dist/lib/server/microservice/MicroserviceTransport.js +2 -0
  72. package/dist/lib/server/microservice/MicroserviceTransport.js.map +1 -0
  73. package/dist/lib/server/microservice/decorators/EventPattern.d.ts +38 -0
  74. package/dist/lib/server/microservice/decorators/EventPattern.js +59 -0
  75. package/dist/lib/server/microservice/decorators/EventPattern.js.map +1 -0
  76. package/dist/lib/server/microservice/decorators/MessagePattern.d.ts +31 -0
  77. package/dist/lib/server/microservice/decorators/MessagePattern.js +55 -0
  78. package/dist/lib/server/microservice/decorators/MessagePattern.js.map +1 -0
  79. package/dist/lib/server/microservice/decorators/index.d.ts +2 -0
  80. package/dist/lib/server/microservice/decorators/index.js +3 -0
  81. package/dist/lib/server/microservice/decorators/index.js.map +1 -0
  82. package/dist/lib/server/microservice/index.d.ts +5 -0
  83. package/dist/lib/server/microservice/index.js +11 -0
  84. package/dist/lib/server/microservice/index.js.map +1 -0
  85. package/dist/lib/server/microservice/interceptorChain.d.ts +20 -0
  86. package/dist/lib/server/microservice/interceptorChain.js +39 -0
  87. package/dist/lib/server/microservice/interceptorChain.js.map +1 -0
  88. package/dist/lib/server/microservice/types.d.ts +142 -0
  89. package/dist/lib/server/microservice/types.js +5 -0
  90. package/dist/lib/server/microservice/types.js.map +1 -0
  91. package/dist/lib/server/src/services/PrepareEventService.d.ts +4 -1
  92. package/dist/lib/server/src/services/PrepareEventService.js +10 -3
  93. package/dist/lib/server/src/services/PrepareEventService.js.map +1 -1
  94. package/dist/lib/server/src/services/PrepareFrontendControllerService.d.ts +1 -0
  95. package/dist/lib/server/src/services/PrepareFrontendControllerService.js +1 -1
  96. package/dist/lib/server/src/services/PrepareFrontendControllerService.js.map +1 -1
  97. package/dist/lib/server/src/services/PrepareMicroserviceService.d.ts +66 -0
  98. package/dist/lib/server/src/services/PrepareMicroserviceService.js +193 -0
  99. package/dist/lib/server/src/services/PrepareMicroserviceService.js.map +1 -0
  100. package/dist/lib/server/src/services/PrepareScheduleService.js.map +1 -1
  101. package/dist/lib/server/web/decorators/methods/Connect.js +9 -1
  102. package/dist/lib/server/web/decorators/methods/Connect.js.map +1 -1
  103. package/dist/lib/server/web/decorators/methods/Options.js +9 -1
  104. package/dist/lib/server/web/decorators/methods/Options.js.map +1 -1
  105. package/dist/lib/server/web/websocket/AsenaSocket.js.map +1 -1
  106. package/dist/lib/test/factory/deepMock.d.ts +25 -0
  107. package/dist/lib/test/factory/deepMock.js +105 -0
  108. package/dist/lib/test/factory/deepMock.js.map +1 -0
  109. package/dist/lib/test/factory/ulakStub.d.ts +44 -0
  110. package/dist/lib/test/factory/ulakStub.js +40 -0
  111. package/dist/lib/test/factory/ulakStub.js.map +1 -0
  112. package/dist/lib/test/harness/createTestApp.d.ts +33 -0
  113. package/dist/lib/test/harness/createTestApp.js +105 -0
  114. package/dist/lib/test/harness/createTestApp.js.map +1 -0
  115. package/dist/lib/test/harness/createWebTest.d.ts +28 -0
  116. package/dist/lib/test/harness/createWebTest.js +127 -0
  117. package/dist/lib/test/harness/createWebTest.js.map +1 -0
  118. package/dist/lib/test/harness/silentLogger.d.ts +27 -0
  119. package/dist/lib/test/harness/silentLogger.js +54 -0
  120. package/dist/lib/test/harness/silentLogger.js.map +1 -0
  121. package/dist/lib/test/harness/types.d.ts +147 -0
  122. package/dist/lib/test/harness/types.js +2 -0
  123. package/dist/lib/test/harness/types.js.map +1 -0
  124. package/dist/lib/test/http/TestHttpCall.d.ts +78 -0
  125. package/dist/lib/test/http/TestHttpCall.js +149 -0
  126. package/dist/lib/test/http/TestHttpCall.js.map +1 -0
  127. package/dist/lib/test/http/TestHttpResponse.d.ts +46 -0
  128. package/dist/lib/test/http/TestHttpResponse.js +70 -0
  129. package/dist/lib/test/http/TestHttpResponse.js.map +1 -0
  130. package/dist/lib/test/index.d.ts +9 -0
  131. package/dist/lib/test/index.js +8 -0
  132. package/dist/lib/test/index.js.map +1 -1
  133. package/dist/lib/test/metadata/discovery.d.ts +21 -0
  134. package/dist/lib/test/metadata/discovery.js +37 -8
  135. package/dist/lib/test/metadata/discovery.js.map +1 -1
  136. package/dist/lib/test/mockComponent.d.ts +25 -0
  137. package/dist/lib/test/mockComponent.js +39 -6
  138. package/dist/lib/test/mockComponent.js.map +1 -1
  139. package/dist/lib/test/types.d.ts +13 -0
  140. package/package.json +11 -7
@@ -21,6 +21,13 @@ export interface OnParams {
21
21
  * @example 'download.complete' or 'download.*'
22
22
  */
23
23
  event: string;
24
+ /**
25
+ * Join the @EventService prefix onto `event`.
26
+ * Set false to listen on an absolute pattern — another domain's event
27
+ * vocabulary, or a global catch-all ('*').
28
+ * @default true
29
+ */
30
+ prefix?: boolean;
24
31
  /**
25
32
  * Skip this handler (useful for temporarily disabling handlers)
26
33
  * @default false
@@ -40,6 +47,11 @@ export interface EventHandlerMetadata {
40
47
  * Method name to call when event is emitted
41
48
  */
42
49
  methodName: string;
50
+ /**
51
+ * Whether the @EventService prefix is joined onto `pattern`.
52
+ * Normalized at decoration time (`prefix: false` opt-out → false).
53
+ */
54
+ prefix: boolean;
43
55
  /**
44
56
  * Whether this handler should be skipped
45
57
  */
@@ -0,0 +1,26 @@
1
+ import { type ServerLogger } from '../../logger';
2
+ import type { HealthOptions } from '../AsenaServerFactory';
3
+ import type { Ulak } from '../messaging/Ulak';
4
+ /**
5
+ * @description Minimal zero-dependency health endpoint for headless/hybrid deployments.
6
+ *
7
+ * Serves a single endpoint (default GET /healthz) reporting process liveness and
8
+ * per-microservice-transport connection state - built for Kubernetes probes on
9
+ * headless services that have no HTTP adapter.
10
+ *
11
+ * Responses:
12
+ * - No microservice transports configured → 200 { status: 'up', uptime }
13
+ * - All transports connected → 200 { status: 'up', uptime, transports: { name: 'connected' } }
14
+ * - Any transport disconnected → 503 { status: 'degraded', ... }
15
+ */
16
+ export declare class HealthServer {
17
+ private readonly options;
18
+ private readonly ulak;
19
+ private readonly logger;
20
+ private server?;
21
+ private startedAt;
22
+ constructor(options: HealthOptions, ulak: Ulak, logger: ServerLogger);
23
+ start(): void;
24
+ stop(): void;
25
+ private buildHealthResponse;
26
+ }
@@ -0,0 +1,63 @@
1
+ import * as bun from 'bun';
2
+ import { blue } from '../../logger';
3
+ /**
4
+ * @description Minimal zero-dependency health endpoint for headless/hybrid deployments.
5
+ *
6
+ * Serves a single endpoint (default GET /healthz) reporting process liveness and
7
+ * per-microservice-transport connection state - built for Kubernetes probes on
8
+ * headless services that have no HTTP adapter.
9
+ *
10
+ * Responses:
11
+ * - No microservice transports configured → 200 { status: 'up', uptime }
12
+ * - All transports connected → 200 { status: 'up', uptime, transports: { name: 'connected' } }
13
+ * - Any transport disconnected → 503 { status: 'degraded', ... }
14
+ */
15
+ export class HealthServer {
16
+ options;
17
+ ulak;
18
+ logger;
19
+ server;
20
+ startedAt = 0;
21
+ constructor(options, ulak, logger) {
22
+ this.options = options;
23
+ this.ulak = ulak;
24
+ this.logger = logger;
25
+ }
26
+ start() {
27
+ const path = this.options.path || '/healthz';
28
+ this.startedAt = Date.now();
29
+ this.server = bun.serve({
30
+ port: this.options.port,
31
+ fetch: (request) => {
32
+ const url = new URL(request.url);
33
+ if (url.pathname !== path) {
34
+ return new Response('Not Found', { status: 404 });
35
+ }
36
+ return this.buildHealthResponse();
37
+ },
38
+ });
39
+ this.logger.info(`${blue('[Health]')} Health endpoint ready at :${this.options.port}${path}`);
40
+ }
41
+ stop() {
42
+ void this.server?.stop(true);
43
+ this.server = undefined;
44
+ }
45
+ buildHealthResponse() {
46
+ const transports = this.ulak.getMicroserviceTransports();
47
+ const uptime = Math.round((Date.now() - this.startedAt) / 1000);
48
+ if (transports.size === 0) {
49
+ return Response.json({ status: 'up', uptime });
50
+ }
51
+ const states = {};
52
+ let degraded = false;
53
+ for (const [name, transport] of transports) {
54
+ const connected = transport.isConnected;
55
+ states[name] = connected ? 'connected' : 'disconnected';
56
+ if (!connected) {
57
+ degraded = true;
58
+ }
59
+ }
60
+ return Response.json({ status: degraded ? 'degraded' : 'up', uptime, transports: states }, { status: degraded ? 503 : 200 });
61
+ }
62
+ }
63
+ //# sourceMappingURL=HealthServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HealthServer.js","sourceRoot":"","sources":["../../../../lib/server/health/HealthServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAqB,MAAM,cAAc,CAAC;AAIvD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,YAAY;IAMJ;IACA;IACA;IAPX,MAAM,CAAmB;IAEzB,SAAS,GAAG,CAAC,CAAC;IAEtB,YACmB,OAAsB,EACtB,IAAU,EACV,MAAoB;QAFpB,YAAO,GAAP,OAAO,CAAe;QACtB,SAAI,GAAJ,IAAI,CAAM;QACV,WAAM,GAAN,MAAM,CAAc;IACpC,CAAC;IAEG,KAAK;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;QAE7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE5B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,KAAK,EAAE,CAAC,OAAgB,EAAE,EAAE;gBAC1B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEjC,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;oBAC1B,OAAO,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBACpD,CAAC;gBAED,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACpC,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,8BAA8B,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;IAChG,CAAC;IAEM,IAAI;QACT,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1B,CAAC;IAEO,mBAAmB;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEzD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;QAEhE,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,MAAM,GAAiD,EAAE,CAAC;QAChE,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC;YAExC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC;YAExD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAClB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EACpE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CACjC,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ export * from './HealthServer';
@@ -0,0 +1,2 @@
1
+ export * from './HealthServer';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/server/health/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -1,6 +1,28 @@
1
1
  import type { AsenaWebSocketService } from '../web/websocket';
2
2
  import { type ICoreService, ICoreServiceNames } from '../../ioc';
3
3
  import { type BulkOperation, type BulkResult } from './types';
4
+ import type { MessagingInterceptor } from '../microservice/types';
5
+ import type { EmitOptions, MicroserviceTransport, SendOptions } from '../microservice/MicroserviceTransport';
6
+ /**
7
+ * @description Options for Ulak microservice sends - adds named transport selection
8
+ */
9
+ export interface UlakSendOptions extends SendOptions {
10
+ /**
11
+ * Named microservice transport to use (multi-broker projects)
12
+ * @default 'default'
13
+ */
14
+ transport?: string;
15
+ }
16
+ /**
17
+ * @description Options for Ulak microservice emits - adds named transport selection
18
+ */
19
+ export interface UlakEmitOptions extends EmitOptions {
20
+ /**
21
+ * Named microservice transport to use (multi-broker projects)
22
+ * @default 'default'
23
+ */
24
+ transport?: string;
25
+ }
4
26
  /**
5
27
  * Central WebSocket message broker for Asena.js
6
28
  *
@@ -32,6 +54,14 @@ export declare class Ulak implements ICoreService {
32
54
  * Map of namespace path to WebSocket service instance
33
55
  */
34
56
  private namespaces;
57
+ /**
58
+ * Named microservice transports (set during bootstrap by PrepareMicroserviceService)
59
+ */
60
+ private microserviceTransports;
61
+ /**
62
+ * Messaging interceptors applied to all outgoing send/emit calls
63
+ */
64
+ private microserviceInterceptors;
35
65
  /**
36
66
  * Initialize Ulak messaging system
37
67
  * Called after dependency injection is complete
@@ -133,6 +163,62 @@ export declare class Ulak implements ICoreService {
133
163
  * @returns Number of active sockets
134
164
  */
135
165
  getSocketCount(namespace: string): number;
166
+ /**
167
+ * Wire the microservice transports into Ulak
168
+ * Called during bootstrap by PrepareMicroserviceService - not intended for user code
169
+ *
170
+ * @param transports - Named transports ('default' for the single-transport form)
171
+ * @param interceptors - Interceptors applied to all outgoing send/emit calls
172
+ */
173
+ setMicroserviceTransports(transports: Map<string, MicroserviceTransport>, interceptors?: MessagingInterceptor[]): void;
174
+ /**
175
+ * Check if a microservice transport is configured and connected
176
+ *
177
+ * @param transport - Named transport to check
178
+ * @returns True when the transport exists and reports a live connection
179
+ */
180
+ isMicroserviceConnected(transport?: string): boolean;
181
+ /**
182
+ * Get all configured microservice transports (read-only)
183
+ * Used by the health endpoint to report per-transport status
184
+ */
185
+ getMicroserviceTransports(): ReadonlyMap<string, MicroserviceTransport>;
186
+ /**
187
+ * Send a request to another service and await its reply (request/response)
188
+ *
189
+ * @param pattern - Full request pattern (e.g. 'order.create')
190
+ * @param data - Request payload
191
+ * @param options - Timeout, headers and named transport selection
192
+ * @returns The reply produced by the remote @MessagePattern handler
193
+ * @throws {UlakError} NO_TRANSPORT / TRANSPORT_NOT_FOUND / TIMEOUT / REMOTE_ERROR
194
+ */
195
+ send<T = unknown>(pattern: string, data?: unknown, options?: UlakSendOptions): Promise<T>;
196
+ /**
197
+ * Emit a fire-and-forget event to other services
198
+ *
199
+ * @param pattern - Full event pattern (e.g. 'order.created')
200
+ * @param data - Event payload
201
+ * @param options - Headers and named transport selection
202
+ * @throws {UlakError} NO_TRANSPORT / TRANSPORT_NOT_FOUND
203
+ */
204
+ emit(pattern: string, data?: unknown, options?: UlakEmitOptions): Promise<void>;
205
+ /**
206
+ * Select a pattern-scoped microservice messaging view
207
+ * Patterns passed to the returned view are joined with the prefix ('order' + 'create' → 'order.create')
208
+ *
209
+ * @param prefix - Pattern prefix (empty for absolute patterns)
210
+ * @param options - Named transport selection
211
+ * @returns Scoped messages instance
212
+ *
213
+ * @example
214
+ * ```typescript
215
+ * const orders = ulak.messages('order');
216
+ * const res = await orders.send('create', dto); // sends 'order.create'
217
+ * ```
218
+ */
219
+ messages<T extends string = ''>(prefix?: T, options?: {
220
+ transport?: string;
221
+ }): Ulak.Messages<T>;
136
222
  /**
137
223
  * Dispose of all resources and stop background tasks
138
224
  * Should be called during application shutdown
@@ -146,6 +232,13 @@ export declare class Ulak implements ICoreService {
146
232
  * @throws {UlakError} If namespace not found
147
233
  */
148
234
  private getNamespaceService;
235
+ /**
236
+ * Get a named microservice transport or throw
237
+ *
238
+ * @param name - Named transport (defaults to 'default')
239
+ * @throws {UlakError} NO_TRANSPORT when none configured, TRANSPORT_NOT_FOUND for unknown names
240
+ */
241
+ private getMicroserviceTransport;
149
242
  }
150
243
  /**
151
244
  * Scoped namespace interface
@@ -191,6 +284,34 @@ export declare namespace Ulak {
191
284
  */
192
285
  getSocketCount(): number;
193
286
  }
287
+ /**
288
+ * Pattern-scoped microservice messaging view
289
+ * Provides ergonomic API without repeating the pattern prefix
290
+ */
291
+ interface Messages<P extends string = string> {
292
+ /**
293
+ * The pattern prefix ('' for absolute patterns)
294
+ */
295
+ readonly prefix: P;
296
+ /**
297
+ * Send a request and await its reply (request/response)
298
+ * The pattern is joined with the prefix ('create' → 'order.create')
299
+ *
300
+ * @param pattern - Request pattern relative to the prefix
301
+ * @param data - Request payload
302
+ * @param options - Timeout and headers
303
+ */
304
+ send<T = unknown>(pattern: string, data?: unknown, options?: SendOptions): Promise<T>;
305
+ /**
306
+ * Emit a fire-and-forget event
307
+ * The pattern is joined with the prefix ('created' → 'order.created')
308
+ *
309
+ * @param pattern - Event pattern relative to the prefix
310
+ * @param data - Event payload
311
+ * @param options - Headers
312
+ */
313
+ emit(pattern: string, data?: unknown, options?: EmitOptions): Promise<void>;
314
+ }
194
315
  }
195
316
  /**
196
317
  * Helper function for injecting scoped Ulak namespace
@@ -222,3 +343,38 @@ export declare namespace Ulak {
222
343
  * ```
223
344
  */
224
345
  export declare function ulak<T extends string>(namespace: T): readonly [ICoreServiceNames.__ULAK__, (ulak: Ulak) => Ulak.NameSpace<T>];
346
+ /**
347
+ * Helper functions for injecting microservice messaging views from Ulak
348
+ * Declaration merging keeps the single `ulak` entry point:
349
+ * `ulak('/chat')` → WebSocket namespace, `ulak.messages('order')` → microservice messaging
350
+ */
351
+ export declare namespace ulak {
352
+ /**
353
+ * Inject a pattern-scoped microservice messaging view
354
+ *
355
+ * @param prefix - Pattern prefix joined to every send/emit ('' for absolute patterns)
356
+ * @param options - Named transport selection (multi-broker projects)
357
+ * @returns A tuple of [serviceName, expression] for @Inject decorator
358
+ *
359
+ * @example
360
+ * ```typescript
361
+ * @Service('CheckoutService')
362
+ * export class CheckoutService {
363
+ * @Inject(ulak.messages('order'))
364
+ * private orders: Ulak.Messages<'order'>;
365
+ *
366
+ * async checkout(dto: CheckoutDto) {
367
+ * const res = await this.orders.send('create', dto); // sends 'order.create'
368
+ * await this.orders.emit('created', { id: res.id }); // emits 'order.created'
369
+ * }
370
+ * }
371
+ *
372
+ * // Named transport (multi-broker projects)
373
+ * @Inject(ulak.messages('metrics', { transport: 'analytics' }))
374
+ * private metrics: Ulak.Messages<'metrics'>;
375
+ * ```
376
+ */
377
+ function messages<P extends string = ''>(prefix?: P, options?: {
378
+ transport?: string;
379
+ }): readonly [ICoreServiceNames.__ULAK__, (u: Ulak) => Ulak.Messages<P>];
380
+ }
@@ -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":"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"}
1
+ {"version":3,"file":"Ulak.js","sourceRoot":"","sources":["../../../../lib/server/messaging/Ulak.ts"],"names":[],"mappings":"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"}
@@ -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,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;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"}
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
+ }