@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
@@ -0,0 +1,142 @@
1
+ import type { ComponentParams } from '../../ioc';
2
+ import type { MessageContext } from './MicroserviceTransport';
3
+ /**
4
+ * @description Name used when a single (unnamed) microservice transport is configured
5
+ */
6
+ export declare const DEFAULT_TRANSPORT_NAME = "default";
7
+ /**
8
+ * @description Parameters for @MessageController decorator
9
+ */
10
+ export interface MessageControllerParams extends ComponentParams {
11
+ /**
12
+ * Prefix joined (with a dot) onto every @MessagePattern AND @EventPattern in
13
+ * this controller. A single handler opts out with `prefix: false`.
14
+ * Must be a literal path segment — a wildcard prefix is rejected at boot.
15
+ * @example 'order' turns @MessagePattern('create') into 'order.create'
16
+ * and @EventPattern('created') into 'order.created'
17
+ */
18
+ prefix?: string;
19
+ /**
20
+ * Name of the microservice transport this controller binds to.
21
+ * Only needed when multiple named transports are configured in transport()
22
+ * (e.g. part of the project on Redis, part on NATS).
23
+ * @default 'default'
24
+ */
25
+ transport?: string;
26
+ }
27
+ /**
28
+ * @description Parameters for @MessagePattern method decorator
29
+ */
30
+ export interface MessagePatternParams {
31
+ /**
32
+ * Request pattern to handle. Must be exact — wildcards are not allowed
33
+ * (request/response requires exact routing).
34
+ * @example 'create' (joined with the controller prefix → 'order.create')
35
+ */
36
+ pattern: string;
37
+ /**
38
+ * Join the @MessageController prefix onto `pattern`.
39
+ * Set false to register the pattern verbatim — for patterns that belong to
40
+ * another service's vocabulary rather than this controller's.
41
+ * @default true
42
+ */
43
+ prefix?: boolean;
44
+ /**
45
+ * Skip this handler (useful for temporarily disabling handlers)
46
+ * @default false
47
+ */
48
+ skip?: boolean;
49
+ }
50
+ /**
51
+ * @description Parameters for @EventPattern method decorator
52
+ */
53
+ export interface EventPatternParams {
54
+ /**
55
+ * Event pattern to handle. Wildcards are supported.
56
+ * The controller prefix is joined on unless `prefix: false`.
57
+ * @example 'created' (joined with the controller prefix → 'order.created')
58
+ */
59
+ pattern: string;
60
+ /**
61
+ * Join the @MessageController prefix onto `pattern`.
62
+ * Set false for absolute names: another service's event vocabulary, a Kafka
63
+ * external topic name, or a global catch-all ('*').
64
+ * @default true
65
+ */
66
+ prefix?: boolean;
67
+ /**
68
+ * Skip this handler (useful for temporarily disabling handlers)
69
+ * @default false
70
+ */
71
+ skip?: boolean;
72
+ }
73
+ /**
74
+ * @description Metadata stored for each @MessagePattern/@EventPattern method
75
+ * Used by PrepareMicroserviceService to register handlers into the transport
76
+ */
77
+ export interface MessageHandlerMetadata {
78
+ /**
79
+ * Pattern as written on the decorator. The @MessageController prefix is
80
+ * joined on later by PrepareMicroserviceService unless `prefix` is false.
81
+ */
82
+ pattern: string;
83
+ /**
84
+ * Handler semantics: request/response ('message') or fire-and-forget ('event')
85
+ */
86
+ type: 'message' | 'event';
87
+ /**
88
+ * Method name to call when a message arrives
89
+ */
90
+ methodName: string;
91
+ /**
92
+ * Whether the controller prefix is joined onto `pattern`.
93
+ * Normalized at decoration time (`prefix: false` opt-out → false).
94
+ */
95
+ prefix: boolean;
96
+ /**
97
+ * Whether this handler should be skipped
98
+ */
99
+ skip: boolean;
100
+ }
101
+ /**
102
+ * @description Context passed to MessagingInterceptor.onSend for outgoing messages
103
+ */
104
+ export interface OutboundContext {
105
+ /**
106
+ * Full outgoing pattern (prefix already applied)
107
+ */
108
+ pattern: string;
109
+ /**
110
+ * Whether this is a request ('send') or a fire-and-forget event ('emit')
111
+ */
112
+ kind: 'send' | 'emit';
113
+ /**
114
+ * Mutable outgoing headers — interceptors inject metadata here (e.g. trace context)
115
+ */
116
+ headers: Record<string, string>;
117
+ /**
118
+ * Outgoing payload (read-only by convention)
119
+ */
120
+ data: unknown;
121
+ }
122
+ /**
123
+ * @description Zero-dependency messaging interceptor SPI.
124
+ *
125
+ * Both hooks are wrappers around the actual operation, so an interceptor can
126
+ * measure duration and observe errors/replies (e.g. OpenTelemetry spans).
127
+ * Interceptors are registered via the transport() config hook:
128
+ * `transport() { return { microservice, interceptors: [myInterceptor] } }`
129
+ */
130
+ export interface MessagingInterceptor {
131
+ /**
132
+ * Wraps outgoing send/emit. Mutate ctx.headers to inject metadata,
133
+ * call next() to perform the operation (its promise resolves with the
134
+ * reply for 'send', undefined for 'emit').
135
+ */
136
+ onSend?(ctx: OutboundContext, next: () => Promise<any>): Promise<any>;
137
+ /**
138
+ * Wraps an incoming handler invocation. Call next() to run the handler
139
+ * (and any inner interceptors); its promise carries the handler result.
140
+ */
141
+ onReceive?(ctx: MessageContext, next: () => Promise<any>): Promise<any>;
142
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @description Name used when a single (unnamed) microservice transport is configured
3
+ */
4
+ export const DEFAULT_TRANSPORT_NAME = 'default';
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../lib/server/microservice/types.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAC"}
@@ -15,6 +15,7 @@ import type { ICoreService } from '../../../ioc';
15
15
  * - Prefix='user', event='created' → 'user.created'
16
16
  * - Prefix='user', event='*.updated' → 'user.*.updated'
17
17
  * - Prefix='user', event='' → 'user'
18
+ * - Handler opted out (prefix: false) → event, verbatim
18
19
  */
19
20
  export declare class PrepareEventService implements ICoreService {
20
21
  readonly serviceName = "PrepareEventService";
@@ -31,7 +32,9 @@ export declare class PrepareEventService implements ICoreService {
31
32
  /**
32
33
  * Build final event pattern from prefix and event
33
34
  *
34
- * Rules:
35
+ * Rules (identical to PrepareMicroserviceService.buildPattern and
36
+ * UlakMessages.buildPattern):
37
+ * - Handler opted out (prefix: false) → event
35
38
  * - No prefix → event
36
39
  * - No event → prefix
37
40
  * - Both → prefix.event
@@ -26,6 +26,7 @@ import { getTypedMetadata } from '../../../utils';
26
26
  * - Prefix='user', event='created' → 'user.created'
27
27
  * - Prefix='user', event='*.updated' → 'user.*.updated'
28
28
  * - Prefix='user', event='' → 'user'
29
+ * - Handler opted out (prefix: false) → event, verbatim
29
30
  */
30
31
  let PrepareEventService = class PrepareEventService {
31
32
  serviceName = 'PrepareEventService';
@@ -65,7 +66,9 @@ let PrepareEventService = class PrepareEventService {
65
66
  continue;
66
67
  }
67
68
  // Build final event pattern
68
- const finalPattern = this.buildEventPattern(prefix, metadata.pattern);
69
+ // `!== false`: metadata written by a pre-0.8 decorator build carries no
70
+ // flag and must follow the current default (apply the prefix)
71
+ const finalPattern = this.buildEventPattern(prefix, metadata.pattern, metadata.prefix !== false);
69
72
  // Bind method to service instance
70
73
  const boundHandler = service[methodName].bind(service);
71
74
  // Register with EventEmitter
@@ -75,12 +78,16 @@ let PrepareEventService = class PrepareEventService {
75
78
  /**
76
79
  * Build final event pattern from prefix and event
77
80
  *
78
- * Rules:
81
+ * Rules (identical to PrepareMicroserviceService.buildPattern and
82
+ * UlakMessages.buildPattern):
83
+ * - Handler opted out (prefix: false) → event
79
84
  * - No prefix → event
80
85
  * - No event → prefix
81
86
  * - Both → prefix.event
82
87
  */
83
- buildEventPattern(prefix, event) {
88
+ buildEventPattern(prefix, event, applyPrefix) {
89
+ if (!applyPrefix)
90
+ return event;
84
91
  if (!prefix)
85
92
  return event;
86
93
  if (!event)
@@ -1 +1 @@
1
- {"version":3,"file":"PrepareEventService.js","sourceRoot":"","sources":["../../../../../lib/server/src/services/PrepareEventService.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD;;;;;;;;;;;;;;;;GAgBG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACd,WAAW,GAAG,qBAAqB,CAAC;IAG5C,SAAS,CAAa;IAGtB,eAAe,CAAwB;IAE/C;;OAEG;IACI,KAAK,CAAC,OAAO;QAClB,gCAAgC;QAChC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAM,aAAa,CAAC,KAAK,CAAC,CAAC;QAEhF,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,sCAAsC;YACtC,OAAO;QACT,CAAC;QAED,gCAAgC;QAChC,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,OAAY;QAC7C,0BAA0B;QAC1B,MAAM,MAAM,GAAG,gBAAgB,CAAS,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAEtG,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,gBAAgB,CAC/B,kBAAkB,CAAC,gBAAgB,EACnC,OAAO,CAAC,WAAW,CACpB,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,wBAAwB;YACxB,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9D,4BAA4B;YAC5B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAClB,SAAS;YACX,CAAC;YAED,4BAA4B;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEtE,kCAAkC;YAClC,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEvD,6BAA6B;YAC7B,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,iBAAiB,CAAC,MAAc,EAAE,KAAa;QACrD,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,IAAI,CAAC,KAAK;YAAE,OAAO,MAAM,CAAC;QAC1B,OAAO,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF,CAAA;AAxES;IADP,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC;;sDACN;AAGtB;IADP,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,CAAC;;4DACF;AAPpC,mBAAmB;IAD/B,WAAW,CAAC,iBAAiB,CAAC,qBAAqB,CAAC;GACxC,mBAAmB,CA4E/B"}
1
+ {"version":3,"file":"PrepareEventService.js","sourceRoot":"","sources":["../../../../../lib/server/src/services/PrepareEventService.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD;;;;;;;;;;;;;;;;;GAiBG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACd,WAAW,GAAG,qBAAqB,CAAC;IAG5C,SAAS,CAAa;IAGtB,eAAe,CAAwB;IAE/C;;OAEG;IACI,KAAK,CAAC,OAAO;QAClB,gCAAgC;QAChC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAM,aAAa,CAAC,KAAK,CAAC,CAAC;QAEhF,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,sCAAsC;YACtC,OAAO;QACT,CAAC;QAED,gCAAgC;QAChC,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,OAAY;QAC7C,0BAA0B;QAC1B,MAAM,MAAM,GAAG,gBAAgB,CAAS,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAEtG,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,gBAAgB,CAC/B,kBAAkB,CAAC,gBAAgB,EACnC,OAAO,CAAC,WAAW,CACpB,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,wBAAwB;YACxB,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9D,4BAA4B;YAC5B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAClB,SAAS;YACX,CAAC;YAED,4BAA4B;YAC5B,wEAAwE;YACxE,8DAA8D;YAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;YAEjG,kCAAkC;YAClC,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEvD,6BAA6B;YAC7B,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACK,iBAAiB,CAAC,MAAc,EAAE,KAAa,EAAE,WAAoB;QAC3E,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QAC/B,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,IAAI,CAAC,KAAK;YAAE,OAAO,MAAM,CAAC;QAC1B,OAAO,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF,CAAA;AA7ES;IADP,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC;;sDACN;AAGtB;IADP,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,CAAC;;4DACF;AAPpC,mBAAmB;IAD/B,WAAW,CAAC,iBAAiB,CAAC,qBAAqB,CAAC;GACxC,mBAAmB,CAiF/B"}
@@ -3,6 +3,7 @@ export interface PreparedHTMLRoute {
3
3
  path: string;
4
4
  htmlBundle: unknown;
5
5
  controllerName: string;
6
+ controllerBasePath: string;
6
7
  }
7
8
  /**
8
9
  * @description Core service for preparing FrontendController components.
@@ -47,7 +47,7 @@ let PrepareFrontendControllerService = class PrepareFrontendControllerService {
47
47
  if (!htmlBundle) {
48
48
  throw new Error(`@Page method ${controllerName}.${methodName}() returned null/undefined. Must return a Bun HTMLBundle.`);
49
49
  }
50
- routes.push({ path: fullPath, htmlBundle, controllerName });
50
+ routes.push({ path: fullPath, htmlBundle, controllerName, controllerBasePath: basePath });
51
51
  }
52
52
  return routes;
53
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PrepareFrontendControllerService.js","sourceRoot":"","sources":["../../../../../lib/server/src/services/PrepareFrontendControllerService.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAQlC;;;;GAIG;AAEI,IAAM,gCAAgC,GAAtC,MAAM,gCAAgC;IACpC,WAAW,GAAG,kCAAkC,CAAC;IAGhD,SAAS,CAAa;IAEvB,KAAK,CAAC,OAAO;QAClB,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAQ,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAEtG,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAAwB,EAAE,CAAC;QAE3C,KAAK,MAAM,UAAU,IAAI,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAExD,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,UAAiB;QAC/C,MAAM,UAAU,GACd,mBAAmB,CAAY,kBAAkB,CAAC,aAAa,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAEjG,MAAM,cAAc,GAClB,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC;QAE9G,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GACZ,mBAAmB,CAAS,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC;QAEzF,MAAM,MAAM,GAAwB,EAAE,CAAC;QAEvC,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAE9C,mFAAmF;YACnF,MAAM,UAAU,GAAG,MAAM,EAAE,OAAO,IAAI,MAAM,CAAC;YAE7C,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CACb,gBAAgB,cAAc,IAAI,UAAU,2DAA2D,CACxG,CAAC;YACJ,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;AAtDS;IADP,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC;;mEACN;AAJnB,gCAAgC;IAD5C,WAAW,CAAC,iBAAiB,CAAC,mCAAmC,CAAC;GACtD,gCAAgC,CA0D5C"}
1
+ {"version":3,"file":"PrepareFrontendControllerService.js","sourceRoot":"","sources":["../../../../../lib/server/src/services/PrepareFrontendControllerService.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AASlC;;;;GAIG;AAEI,IAAM,gCAAgC,GAAtC,MAAM,gCAAgC;IACpC,WAAW,GAAG,kCAAkC,CAAC;IAGhD,SAAS,CAAa;IAEvB,KAAK,CAAC,OAAO;QAClB,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAQ,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAEtG,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAAwB,EAAE,CAAC;QAE3C,KAAK,MAAM,UAAU,IAAI,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAExD,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,UAAiB;QAC/C,MAAM,UAAU,GAAG,mBAAmB,CAAY,kBAAkB,CAAC,aAAa,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAElH,MAAM,cAAc,GAClB,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC;QAE9G,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAW,mBAAmB,CAAS,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC;QAEhH,MAAM,MAAM,GAAwB,EAAE,CAAC;QAEvC,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAE9C,mFAAmF;YACnF,MAAM,UAAU,GAAG,MAAM,EAAE,OAAO,IAAI,MAAM,CAAC;YAE7C,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CACb,gBAAgB,cAAc,IAAI,UAAU,2DAA2D,CACxG,CAAC;YACJ,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;AApDS;IADP,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC;;mEACN;AAJnB,gCAAgC;IAD5C,WAAW,CAAC,iBAAiB,CAAC,mCAAmC,CAAC;GACtD,gCAAgC,CAwD5C"}
@@ -0,0 +1,66 @@
1
+ import type { ICoreService } from '../../../ioc';
2
+ import type { MessagingInterceptor } from '../../microservice/types';
3
+ import type { DestroyOptions, MicroserviceTransport } from '../../microservice/MicroserviceTransport';
4
+ /**
5
+ * @description PrepareMicroserviceService - Registers microservice message handlers during bootstrap
6
+ *
7
+ * Scan Process:
8
+ * 1. Resolve all ComponentType.MESSAGE_CONTROLLER from container
9
+ * 2. Extract prefix + transport binding metadata from class
10
+ * 3. Extract handler metadata (@MessagePattern/@EventPattern methods)
11
+ * 4. Build final pattern: the controller prefix is joined onto BOTH message and event
12
+ * patterns, unless the handler opted out with prefix: false
13
+ * 5. Bind method to instance, wrap with interceptor onReceive chain
14
+ * 6. Register into the bound transport, then init() + listen() every transport
15
+ * 7. Wire transports into Ulak (send/emit client side)
16
+ *
17
+ * Rules:
18
+ * - Controllers found but no transport configured → throw (fail fast)
19
+ * - Transport configured but no controllers → still init + wire Ulak (client-only mode);
20
+ * the transport contract guarantees no consumer loop starts with zero handlers
21
+ * - Controller bound to an unknown named transport → throw listing available names
22
+ * - A handler with prefix: false registers its pattern verbatim (external topics,
23
+ * another service's event vocabulary, global catch-alls)
24
+ * - A prefix containing '*' is a boot error - the prefix must be a literal path segment
25
+ */
26
+ export declare class PrepareMicroserviceService implements ICoreService {
27
+ readonly serviceName = "PrepareMicroserviceService";
28
+ private container;
29
+ private logger;
30
+ private ulak;
31
+ private transports;
32
+ /**
33
+ * Prepare microservice handlers - Called during bootstrap (before the HTTP adapter starts)
34
+ *
35
+ * @param transports - Named transports from the transport() config hook
36
+ * @param interceptors - Messaging interceptors applied to all transports
37
+ */
38
+ prepare(transports?: Map<string, MicroserviceTransport>, interceptors?: MessagingInterceptor[]): Promise<void>;
39
+ /**
40
+ * Gracefully shut down all transports - Called from AsenaServer.stop()
41
+ */
42
+ destroy(options?: DestroyOptions): Promise<void>;
43
+ /**
44
+ * Register all handlers from a single message controller
45
+ */
46
+ private registerController;
47
+ /**
48
+ * Build the final pattern from the controller prefix and the handler pattern
49
+ *
50
+ * Rules (identical for @MessagePattern and @EventPattern, and identical to
51
+ * UlakMessages.buildPattern on the outbound side and PrepareEventService
52
+ * .buildEventPattern for the in-process event system):
53
+ * - Handler opted out (prefix: false) → pattern
54
+ * - No prefix → pattern
55
+ * - No pattern → prefix
56
+ * - Both → prefix.pattern
57
+ */
58
+ private buildPattern;
59
+ /**
60
+ * Log one line per controller with the RESOLVED patterns
61
+ *
62
+ * Asena 0.8 changed the prefix rule for @EventPattern, so the joined result
63
+ * must be visible at boot - but per-handler lines would drown the startup output.
64
+ */
65
+ private logResolved;
66
+ }
@@ -0,0 +1,193 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { ComponentConstants, ComponentType, CoreService, ICoreServiceNames } from '../../../ioc';
11
+ import { Inject } from '../../../ioc/component';
12
+ import { getTypedMetadata } from '../../../utils';
13
+ import { blue, yellow } from '../../../logger';
14
+ import { DEFAULT_TRANSPORT_NAME } from '../../microservice/types';
15
+ import { composeOnReceive } from '../../microservice/interceptorChain';
16
+ /**
17
+ * @description PrepareMicroserviceService - Registers microservice message handlers during bootstrap
18
+ *
19
+ * Scan Process:
20
+ * 1. Resolve all ComponentType.MESSAGE_CONTROLLER from container
21
+ * 2. Extract prefix + transport binding metadata from class
22
+ * 3. Extract handler metadata (@MessagePattern/@EventPattern methods)
23
+ * 4. Build final pattern: the controller prefix is joined onto BOTH message and event
24
+ * patterns, unless the handler opted out with prefix: false
25
+ * 5. Bind method to instance, wrap with interceptor onReceive chain
26
+ * 6. Register into the bound transport, then init() + listen() every transport
27
+ * 7. Wire transports into Ulak (send/emit client side)
28
+ *
29
+ * Rules:
30
+ * - Controllers found but no transport configured → throw (fail fast)
31
+ * - Transport configured but no controllers → still init + wire Ulak (client-only mode);
32
+ * the transport contract guarantees no consumer loop starts with zero handlers
33
+ * - Controller bound to an unknown named transport → throw listing available names
34
+ * - A handler with prefix: false registers its pattern verbatim (external topics,
35
+ * another service's event vocabulary, global catch-alls)
36
+ * - A prefix containing '*' is a boot error - the prefix must be a literal path segment
37
+ */
38
+ let PrepareMicroserviceService = class PrepareMicroserviceService {
39
+ serviceName = 'PrepareMicroserviceService';
40
+ container;
41
+ logger;
42
+ ulak;
43
+ transports = new Map();
44
+ /**
45
+ * Prepare microservice handlers - Called during bootstrap (before the HTTP adapter starts)
46
+ *
47
+ * @param transports - Named transports from the transport() config hook
48
+ * @param interceptors - Messaging interceptors applied to all transports
49
+ */
50
+ async prepare(transports = new Map(), interceptors = []) {
51
+ const controllers = await this.container.resolveAll(ComponentType.MESSAGE_CONTROLLER);
52
+ const hasControllers = controllers !== null && controllers.length > 0;
53
+ if (transports.size === 0) {
54
+ if (hasControllers) {
55
+ throw new Error('@MessageController components found but no microservice transport configured - configure a microservice transport in your @Config transport()');
56
+ }
57
+ // No transports, no controllers - nothing to do
58
+ return;
59
+ }
60
+ this.transports = transports;
61
+ if (hasControllers) {
62
+ for (const controller of controllers) {
63
+ this.registerController(controller, interceptors);
64
+ }
65
+ }
66
+ // Connect and start consuming (transports with zero handlers start no consumer)
67
+ for (const [name, transport] of transports) {
68
+ await transport.init();
69
+ await transport.listen();
70
+ this.logger.info(`${blue('[Microservice]')} Transport "${name}" (${transport.name}) ready`);
71
+ }
72
+ // Wire the client side (Ulak.send/emit)
73
+ this.ulak.setMicroserviceTransports(transports, interceptors);
74
+ }
75
+ /**
76
+ * Gracefully shut down all transports - Called from AsenaServer.stop()
77
+ */
78
+ async destroy(options) {
79
+ for (const [name, transport] of this.transports) {
80
+ try {
81
+ await transport.destroy(options);
82
+ }
83
+ catch (error) {
84
+ this.logger.error(`${blue('[Microservice]')} Transport "${name}" destroy failed`, error);
85
+ }
86
+ }
87
+ this.transports = new Map();
88
+ }
89
+ /**
90
+ * Register all handlers from a single message controller
91
+ */
92
+ registerController(controller, interceptors) {
93
+ const prefix = getTypedMetadata(ComponentConstants.MessagePrefixKey, controller.constructor) || '';
94
+ const transportName = getTypedMetadata(ComponentConstants.MessageTransportKey, controller.constructor) ||
95
+ DEFAULT_TRANSPORT_NAME;
96
+ const transport = this.transports.get(transportName);
97
+ if (!transport) {
98
+ const available = Array.from(this.transports.keys()).join(', ');
99
+ throw new Error(`@MessageController "${controller.constructor.name}" is bound to transport "${transportName}" but it is not configured - available transports: ${available}`);
100
+ }
101
+ const handlers = getTypedMetadata(ComponentConstants.MessageHandlersKey, controller.constructor);
102
+ if (!handlers) {
103
+ // No @MessagePattern/@EventPattern methods - skip
104
+ return;
105
+ }
106
+ const resolved = [];
107
+ for (const [methodName, metadata] of Object.entries(handlers)) {
108
+ if (metadata.skip) {
109
+ continue;
110
+ }
111
+ // `!== false`: metadata written by a pre-0.8 decorator build carries no
112
+ // flag and must follow the current default (apply the prefix)
113
+ const applyPrefix = metadata.prefix !== false;
114
+ // A wildcard prefix is nonsense in every direction: it produced a loud
115
+ // transport error on the message side and would now silently produce a
116
+ // bizarre event subscription ('order.*.created')
117
+ if (applyPrefix && prefix.includes('*')) {
118
+ throw new Error(`@MessageController "${controller.constructor.name}" has a wildcard prefix "${prefix}" - ` +
119
+ 'the prefix is joined onto @MessagePattern and @EventPattern patterns and must be a literal ' +
120
+ 'path segment (use prefix: false on a handler that must keep its pattern verbatim)');
121
+ }
122
+ const bound = controller[methodName].bind(controller);
123
+ const wrapped = (data, context) => composeOnReceive(interceptors, context, () => Promise.resolve(bound(data, context)));
124
+ const finalPattern = this.buildPattern(prefix, metadata.pattern, applyPrefix);
125
+ if (metadata.type === 'message') {
126
+ transport.registerMessageHandler(finalPattern, wrapped);
127
+ resolved.push({ kind: 'msg', pattern: finalPattern });
128
+ }
129
+ else {
130
+ transport.registerEventHandler(finalPattern, wrapped);
131
+ resolved.push({ kind: 'evt', pattern: finalPattern });
132
+ }
133
+ }
134
+ this.logResolved(controller.constructor.name, transportName, prefix, resolved);
135
+ }
136
+ /**
137
+ * Build the final pattern from the controller prefix and the handler pattern
138
+ *
139
+ * Rules (identical for @MessagePattern and @EventPattern, and identical to
140
+ * UlakMessages.buildPattern on the outbound side and PrepareEventService
141
+ * .buildEventPattern for the in-process event system):
142
+ * - Handler opted out (prefix: false) → pattern
143
+ * - No prefix → pattern
144
+ * - No pattern → prefix
145
+ * - Both → prefix.pattern
146
+ */
147
+ buildPattern(prefix, pattern, applyPrefix) {
148
+ if (!applyPrefix)
149
+ return pattern;
150
+ if (!prefix)
151
+ return pattern;
152
+ if (!pattern)
153
+ return prefix;
154
+ return `${prefix}.${pattern}`;
155
+ }
156
+ /**
157
+ * Log one line per controller with the RESOLVED patterns
158
+ *
159
+ * Asena 0.8 changed the prefix rule for @EventPattern, so the joined result
160
+ * must be visible at boot - but per-handler lines would drown the startup output.
161
+ */
162
+ logResolved(controllerName, transportName, prefix, resolved) {
163
+ if (!resolved.length) {
164
+ return;
165
+ }
166
+ const parts = [];
167
+ const messages = resolved.filter((entry) => entry.kind === 'msg').map((entry) => entry.pattern);
168
+ const events = resolved.filter((entry) => entry.kind === 'evt').map((entry) => entry.pattern);
169
+ if (messages.length)
170
+ parts.push(`msg: ${messages.join(', ')}`);
171
+ if (events.length)
172
+ parts.push(`evt: ${events.join(', ')}`);
173
+ this.logger.info(`${blue('[Microservice]')} ${yellow(controllerName)} → "${transportName}"` +
174
+ `${prefix ? ` (prefix "${prefix}")` : ''} ${parts.join(' | ')}`);
175
+ }
176
+ };
177
+ __decorate([
178
+ Inject(ICoreServiceNames.CONTAINER),
179
+ __metadata("design:type", Function)
180
+ ], PrepareMicroserviceService.prototype, "container", void 0);
181
+ __decorate([
182
+ Inject(ICoreServiceNames.SERVER_LOGGER),
183
+ __metadata("design:type", Object)
184
+ ], PrepareMicroserviceService.prototype, "logger", void 0);
185
+ __decorate([
186
+ Inject(ICoreServiceNames.__ULAK__),
187
+ __metadata("design:type", Function)
188
+ ], PrepareMicroserviceService.prototype, "ulak", void 0);
189
+ PrepareMicroserviceService = __decorate([
190
+ CoreService(ICoreServiceNames.PREPARE_MICROSERVICE_SERVICE)
191
+ ], PrepareMicroserviceService);
192
+ export { PrepareMicroserviceService };
193
+ //# sourceMappingURL=PrepareMicroserviceService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrepareMicroserviceService.js","sourceRoot":"","sources":["../../../../../lib/server/src/services/PrepareMicroserviceService.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PrepareScheduleService.js","sourceRoot":"","sources":["../../../../../lib/server/src/services/PrepareScheduleService.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIlD;;;;;;;;GAQG;AAEI,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjB,WAAW,GAAG,wBAAwB,CAAC;IAG/C,SAAS,CAAa;IAGtB,MAAM,CAAgB;IAGtB,UAAU,CAAc;IAEhC;;OAEG;IACI,KAAK,CAAC,OAAO;QAClB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE/E,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,QAAa;QACpC,MAAM,cAAc,GAAG,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;QAElG,MAAM,IAAI,GACR,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;QAE1G,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,IAAI,aAAa,CAAC,CAAC;YAE1E,OAAO;QACT,CAAC;QAED,kCAAkC;QAClC,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACb,oBAAoB,IAAI,qEAAqE,CAC9F,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrF,CAAC;CACF,CAAA;AA5CS;IADP,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC;;yDACN;AAGtB;IADP,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC;;sDACV;AAGtB;IADP,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC;;0DACN;AAVrB,sBAAsB;IADlC,WAAW,CAAC,iBAAiB,CAAC,wBAAwB,CAAC;GAC3C,sBAAsB,CAgDlC"}
1
+ {"version":3,"file":"PrepareScheduleService.js","sourceRoot":"","sources":["../../../../../lib/server/src/services/PrepareScheduleService.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIlD;;;;;;;;GAQG;AAEI,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjB,WAAW,GAAG,wBAAwB,CAAC;IAG/C,SAAS,CAAa;IAGtB,MAAM,CAAgB;IAGtB,UAAU,CAAc;IAEhC;;OAEG;IACI,KAAK,CAAC,OAAO;QAClB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE/E,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,QAAa;QACpC,MAAM,cAAc,GAAG,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;QAElG,MAAM,IAAI,GACR,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;QAE1G,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,IAAI,aAAa,CAAC,CAAC;YAE1E,OAAO;QACT,CAAC;QAED,kCAAkC;QAClC,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,qEAAqE,CAAC,CAAC;QACjH,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrF,CAAC;CACF,CAAA;AA1CS;IADP,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC;;yDACN;AAGtB;IADP,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC;;sDACV;AAGtB;IADP,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC;;0DACN;AAVrB,sBAAsB;IADlC,WAAW,CAAC,iBAAiB,CAAC,wBAAwB,CAAC;GAC3C,sBAAsB,CA8ClC"}
@@ -7,6 +7,14 @@ import { HttpMethod } from '../../types';
7
7
  */
8
8
  export function Connect(params) {
9
9
  const { path, middlewares, summary, description, staticServe, validator } = generateHandlerParams(params);
10
- return genericHandler({ method: HttpMethod.CONNECT, path, summary, middlewares, description, staticServe, validator });
10
+ return genericHandler({
11
+ method: HttpMethod.CONNECT,
12
+ path,
13
+ summary,
14
+ middlewares,
15
+ description,
16
+ staticServe,
17
+ validator,
18
+ });
11
19
  }
12
20
  //# sourceMappingURL=Connect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Connect.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,MAA0C;IAChE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE1G,OAAO,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;AACzH,CAAC"}
1
+ {"version":3,"file":"Connect.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,MAA0C;IAChE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE1G,OAAO,cAAc,CAAC;QACpB,MAAM,EAAE,UAAU,CAAC,OAAO;QAC1B,IAAI;QACJ,OAAO;QACP,WAAW;QACX,WAAW;QACX,WAAW;QACX,SAAS;KACV,CAAC,CAAC;AACL,CAAC"}
@@ -7,6 +7,14 @@ import { HttpMethod } from '../../types';
7
7
  */
8
8
  export function Options(params) {
9
9
  const { path, middlewares, summary, description, staticServe, validator } = generateHandlerParams(params);
10
- return genericHandler({ method: HttpMethod.OPTIONS, path, summary, middlewares, description, staticServe, validator });
10
+ return genericHandler({
11
+ method: HttpMethod.OPTIONS,
12
+ path,
13
+ summary,
14
+ middlewares,
15
+ description,
16
+ staticServe,
17
+ validator,
18
+ });
11
19
  }
12
20
  //# sourceMappingURL=Options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Options.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,MAA0C;IAChE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE1G,OAAO,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;AACzH,CAAC"}
1
+ {"version":3,"file":"Options.js","sourceRoot":"","sources":["../../../../../../lib/server/web/decorators/methods/Options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,MAA0C;IAChE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE1G,OAAO,cAAc,CAAC;QACpB,MAAM,EAAE,UAAU,CAAC,OAAO;QAC1B,IAAI;QACJ,OAAO;QACP,WAAW;QACX,WAAW;QACX,WAAW;QACX,SAAS;KACV,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AsenaSocket.js","sourceRoot":"","sources":["../../../../../lib/server/web/websocket/AsenaSocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AsenaSocket.js","sourceRoot":"","sources":["../../../../../lib/server/web/websocket/AsenaSocket.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,WAAW;IACb,aAAa,CAAW;IACjC;;;OAGG;IACK,EAAE,CAAoC;IAE9C;;;OAGG;IACK,cAAc,CAAS;IAE/B;;;OAGG;IACK,WAAW,CAAsB;IAEzC;;;OAGG;IACK,WAAW,CAA+C;IAElE;;;OAGG;IACK,KAAK,CAAmB;IAEhC;;;OAGG;IACK,GAAG,CAAS;IAEpB;;;OAGG;IACK,UAAU,CAAS;IAE3B;;;;OAIG;IACK,UAAU,CAAsB;IAExC;;;;;;OAMG;IACH,YAAmB,EAAqC,EAAE,SAAiB,EAAE,SAA8B;QACzG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,aAAa,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,aAAa,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACI,IAAI,CAAC,IAAyC,EAAE,QAAkB;QACvE,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;OAMG;IACI,QAAQ,CAAC,IAAY,EAAE,QAAkB;QAC9C,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACI,UAAU,CAAC,IAAgC,EAAE,QAAkB;QACpE,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,IAAa,EAAE,MAAe;QACzC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,SAAS;QACd,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;IACtB,CAAC;IAED;;;;;;OAMG;IACI,IAAI,CAAC,IAA0C;QACpD,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACI,IAAI,CAAC,IAA0C;QACpD,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACI,OAAO,CAAC,KAAa,EAAE,IAAyC,EAAE,QAAkB;QACzF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,IAA8C,CAAC,CAAC;QACnG,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACI,WAAW,CAAC,KAAa,EAAE,IAAY,EAAE,QAAkB;QAChE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACI,aAAa,CAAC,KAAa,EAAE,IAAgC,EAAE,QAAkB;QACtF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,IAAqC,CAAC,CAAC;QAC1F,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACI,SAAS,CAAC,KAAa;QAC5B,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;;;OAUG;IACI,WAAW,CAAC,KAAa;QAC9B,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;OAMG;IACI,YAAY,CAAC,KAAa;QAC/B,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACI,IAAI,CAAc,QAAuC;QAC9D,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAW,aAAa,CAAC,KAAa;QACpC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAW,UAAU,CAAC,KAAkD;QACtE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAW,UAAU,CAAC,KAA0B;QAC9C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI,CAAC,KAAuB;QACrC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAW,EAAE;QACX,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,IAAW,EAAE,CAAC,KAAa;QACzB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACI,iBAAiB;QACtB,OAAO,IAAI,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC;IACrC,CAAC;IAED;;;;;;;OAOG;IACK,WAAW,CAAC,KAAa;QAC/B,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC;IACtC,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Creates a deep mock object backed by native Proxy
3
+ *
4
+ * Any property access returns a memoized Bun mock function, and calling one
5
+ * returns another deep mock node - so arbitrary call chains work without any
6
+ * upfront shape definition. Used by mockComponent to evaluate @Inject expression
7
+ * transformations (e.g. the ulak() helper) without a running application.
8
+ *
9
+ * @returns Deep mock root node
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const deepMock = createDeepMock();
14
+ *
15
+ * // Any chain works out of the box
16
+ * const channel = deepMock.namespace('/chat');
17
+ * await channel.broadcast({ text: 'hello' });
18
+ *
19
+ * expect(channel.broadcast).toHaveBeenCalledWith({ text: 'hello' });
20
+ *
21
+ * // Mocks are configurable like any Bun mock
22
+ * channel.getSocketCount.mockReturnValue(5);
23
+ * ```
24
+ */
25
+ export declare function createDeepMock(): any;