@nextage/era-lib 1.0.186 → 1.0.188

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/build/constants.d.ts +11 -0
  2. package/build/constants.d.ts.map +1 -1
  3. package/build/constants.js +11 -0
  4. package/build/constants.js.map +1 -1
  5. package/build/enums.d.ts +3 -0
  6. package/build/enums.d.ts.map +1 -1
  7. package/build/enums.js +3 -0
  8. package/build/enums.js.map +1 -1
  9. package/build/errors/app-error.d.ts +6 -0
  10. package/build/errors/app-error.d.ts.map +1 -1
  11. package/build/errors/app-error.js +6 -0
  12. package/build/errors/app-error.js.map +1 -1
  13. package/build/events/access-revoked-publisher.d.ts +1 -1
  14. package/build/events/access-revoked-publisher.d.ts.map +1 -1
  15. package/build/events/access-revoked-publisher.js +1 -1
  16. package/build/events/access-revoked-publisher.js.map +1 -1
  17. package/build/events/{base-event.controller.d.ts → base/base-event.controller.d.ts} +3 -3
  18. package/build/events/base/base-event.controller.d.ts.map +1 -0
  19. package/build/events/{base-event.controller.js → base/base-event.controller.js} +5 -5
  20. package/build/events/base/base-event.controller.js.map +1 -0
  21. package/build/events/{base-listener.d.ts → base/base-listener.d.ts} +2 -2
  22. package/build/events/base/base-listener.d.ts.map +1 -0
  23. package/build/events/base/base-listener.interfaces.d.ts.map +1 -0
  24. package/build/events/base/base-listener.interfaces.js.map +1 -0
  25. package/build/events/base/base-listener.js.map +1 -0
  26. package/build/events/{base-msg-listener.d.ts → base/base-msg-listener.d.ts} +15 -6
  27. package/build/events/base/base-msg-listener.d.ts.map +1 -0
  28. package/build/events/{base-msg-listener.js → base/base-msg-listener.js} +14 -5
  29. package/build/events/base/base-msg-listener.js.map +1 -0
  30. package/build/events/base/base-msg-publisher.d.ts +20 -0
  31. package/build/events/base/base-msg-publisher.d.ts.map +1 -0
  32. package/build/events/base/base-msg-publisher.js +24 -0
  33. package/build/events/base/base-msg-publisher.js.map +1 -0
  34. package/build/events/{base-nats-listener.d.ts → base/base-nats-listener.d.ts} +14 -9
  35. package/build/events/base/base-nats-listener.d.ts.map +1 -0
  36. package/build/events/{base-nats-listener.js → base/base-nats-listener.js} +15 -10
  37. package/build/events/base/base-nats-listener.js.map +1 -0
  38. package/build/events/base/base-nats-publisher.d.ts +23 -0
  39. package/build/events/base/base-nats-publisher.d.ts.map +1 -0
  40. package/build/events/base/base-nats-publisher.js +32 -0
  41. package/build/events/base/base-nats-publisher.js.map +1 -0
  42. package/build/events/base/base-publisher.d.ts +34 -0
  43. package/build/events/base/base-publisher.d.ts.map +1 -0
  44. package/build/events/base/base-publisher.js +41 -0
  45. package/build/events/base/base-publisher.js.map +1 -0
  46. package/build/events/dlq-manager.d.ts +1 -1
  47. package/build/events/dlq-manager.d.ts.map +1 -1
  48. package/build/events/event-subscription.d.ts +1 -1
  49. package/build/events/event-subscription.d.ts.map +1 -1
  50. package/build/events/event-subscription.js +2 -2
  51. package/build/events/event-subscription.js.map +1 -1
  52. package/build/events/index.d.ts +13 -11
  53. package/build/events/index.d.ts.map +1 -1
  54. package/build/events/index.js +14 -11
  55. package/build/events/index.js.map +1 -1
  56. package/build/events/interfaces.d.ts +22 -1
  57. package/build/events/interfaces.d.ts.map +1 -1
  58. package/build/events/revocation-listener.d.ts +1 -1
  59. package/build/events/revocation-listener.d.ts.map +1 -1
  60. package/build/events/transport/base-client-wrapper.d.ts +44 -0
  61. package/build/events/transport/base-client-wrapper.d.ts.map +1 -0
  62. package/build/events/transport/base-client-wrapper.js +47 -0
  63. package/build/events/transport/base-client-wrapper.js.map +1 -0
  64. package/build/events/transport/msg-client-manager.d.ts +37 -0
  65. package/build/events/transport/msg-client-manager.d.ts.map +1 -0
  66. package/build/events/{msg-client-manager.js → transport/msg-client-manager.js} +18 -39
  67. package/build/events/transport/msg-client-manager.js.map +1 -0
  68. package/build/events/transport/msg-wrapper.d.ts +15 -0
  69. package/build/events/transport/msg-wrapper.d.ts.map +1 -0
  70. package/build/events/transport/msg-wrapper.js +24 -0
  71. package/build/events/transport/msg-wrapper.js.map +1 -0
  72. package/build/events/{nats-client-manager.d.ts → transport/nats-client-manager.d.ts} +31 -18
  73. package/build/events/transport/nats-client-manager.d.ts.map +1 -0
  74. package/build/events/{nats-client-manager.js → transport/nats-client-manager.js} +53 -31
  75. package/build/events/transport/nats-client-manager.js.map +1 -0
  76. package/build/events/transport/nats-wrapper.d.ts +16 -0
  77. package/build/events/transport/nats-wrapper.d.ts.map +1 -0
  78. package/build/events/transport/nats-wrapper.js +30 -0
  79. package/build/events/transport/nats-wrapper.js.map +1 -0
  80. package/build/events/types/index.d.ts +1 -0
  81. package/build/events/types/index.d.ts.map +1 -1
  82. package/build/events/types/index.js +1 -0
  83. package/build/events/types/index.js.map +1 -1
  84. package/build/events/types/transport.constants.d.ts +18 -0
  85. package/build/events/types/transport.constants.d.ts.map +1 -0
  86. package/build/events/types/transport.constants.js +23 -0
  87. package/build/events/types/transport.constants.js.map +1 -0
  88. package/build/interfaces.d.ts +10 -0
  89. package/build/interfaces.d.ts.map +1 -1
  90. package/build/routes/validators.d.ts +4 -2
  91. package/build/routes/validators.d.ts.map +1 -1
  92. package/build/routes/validators.js +4 -2
  93. package/build/routes/validators.js.map +1 -1
  94. package/build/services/password.d.ts +19 -0
  95. package/build/services/password.d.ts.map +1 -1
  96. package/build/services/password.js +19 -0
  97. package/build/services/password.js.map +1 -1
  98. package/build/utils/functs.d.ts +54 -23
  99. package/build/utils/functs.d.ts.map +1 -1
  100. package/build/utils/functs.js +60 -25
  101. package/build/utils/functs.js.map +1 -1
  102. package/package.json +1 -1
  103. package/build/events/base-event.controller.d.ts.map +0 -1
  104. package/build/events/base-event.controller.js.map +0 -1
  105. package/build/events/base-listener.d.ts.map +0 -1
  106. package/build/events/base-listener.interfaces.d.ts.map +0 -1
  107. package/build/events/base-listener.interfaces.js.map +0 -1
  108. package/build/events/base-listener.js.map +0 -1
  109. package/build/events/base-msg-listener.d.ts.map +0 -1
  110. package/build/events/base-msg-listener.js.map +0 -1
  111. package/build/events/base-nats-listener.d.ts.map +0 -1
  112. package/build/events/base-nats-listener.js.map +0 -1
  113. package/build/events/base-nats-publisher.d.ts +0 -20
  114. package/build/events/base-nats-publisher.d.ts.map +0 -1
  115. package/build/events/base-nats-publisher.js +0 -35
  116. package/build/events/base-nats-publisher.js.map +0 -1
  117. package/build/events/base-publisher.d.ts +0 -18
  118. package/build/events/base-publisher.d.ts.map +0 -1
  119. package/build/events/base-publisher.js +0 -28
  120. package/build/events/base-publisher.js.map +0 -1
  121. package/build/events/msg-client-manager.d.ts +0 -38
  122. package/build/events/msg-client-manager.d.ts.map +0 -1
  123. package/build/events/msg-client-manager.js.map +0 -1
  124. package/build/events/msg-wrapper.d.ts +0 -10
  125. package/build/events/msg-wrapper.d.ts.map +0 -1
  126. package/build/events/msg-wrapper.js +0 -18
  127. package/build/events/msg-wrapper.js.map +0 -1
  128. package/build/events/nats-client-manager.d.ts.map +0 -1
  129. package/build/events/nats-client-manager.js.map +0 -1
  130. package/build/events/nats-client-manager.old.d.ts +0 -49
  131. package/build/events/nats-client-manager.old.d.ts.map +0 -1
  132. package/build/events/nats-client-manager.old.js +0 -108
  133. package/build/events/nats-client-manager.old.js.map +0 -1
  134. package/build/events/nats-wrapper.d.ts +0 -14
  135. package/build/events/nats-wrapper.d.ts.map +0 -1
  136. package/build/events/nats-wrapper.js +0 -24
  137. package/build/events/nats-wrapper.js.map +0 -1
  138. /package/build/events/{base-listener.interfaces.d.ts → base/base-listener.interfaces.d.ts} +0 -0
  139. /package/build/events/{base-listener.interfaces.js → base/base-listener.interfaces.js} +0 -0
  140. /package/build/events/{base-listener.js → base/base-listener.js} +0 -0
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NatsPublisher = void 0;
4
+ const base_publisher_1 = require("./base-publisher");
5
+ /**
6
+ * Durable (JetStream) publisher: inter-service delivery with retry/DLQ semantics
7
+ * on the consumer side.
8
+ *
9
+ * Emits the event wrapped in the shared in-band envelope (built by the abstract
10
+ * {@link Publisher}) and accepts optional JetStream publish options. The
11
+ * counterpart of {@link NatsListener}.
12
+ */
13
+ class NatsPublisher extends base_publisher_1.Publisher {
14
+ /**
15
+ * Publish the event on the durable JetStream bus.
16
+ *
17
+ * @param data the event payload
18
+ * @param meta optional cascade metadata (correlation / causation / depth)
19
+ * @param options optional JetStream publish options (msgID, expectations, ...)
20
+ */
21
+ async publish(data, meta, options) {
22
+ try {
23
+ await this.client.publish(this.subject, JSON.stringify(this.envelope(data, meta)), options);
24
+ }
25
+ catch (error) {
26
+ console.error(`❌ Failed to publish to '${this.subject}':`, error);
27
+ throw error;
28
+ }
29
+ }
30
+ }
31
+ exports.NatsPublisher = NatsPublisher;
32
+ //# sourceMappingURL=base-nats-publisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-nats-publisher.js","sourceRoot":"","sources":["../../../src/events/base/base-nats-publisher.ts"],"names":[],"mappings":";;;AAGA,qDAA2D;AAE3D;;;;;;;GAOG;AACH,MAAsB,aAA+B,SAAQ,0BAAY;IAEvE;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CAAC,IAAe,EAAE,IAAgB,EAAE,OAA0C;QAEzF,IAAI,CAAC;YAEH,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAE9F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,OAAO,IAAI,EAAE,KAAK,CAAC,CAAC;YAClE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AApBD,sCAoBC"}
@@ -0,0 +1,34 @@
1
+ import { ClientProvider, Event, MsgClientInterface } from '../interfaces';
2
+ import { EventMeta, EventEnvelope } from '../types/event-envelope.interfaces';
3
+ /**
4
+ * Abstract base shared by every publisher, regardless of transport.
5
+ *
6
+ * It owns the transport-agnostic concerns:
7
+ * - identity (`subject`),
8
+ * - lazy client resolution (`client`), so the transport may be connected AFTER
9
+ * this publisher (and its owning controller) is constructed,
10
+ * - the shared in-band envelope construction (`envelope`), so both buses carry
11
+ * the same cascade metadata (transport-agnostic tracing).
12
+ *
13
+ * Transport-specific concerns (the concrete `publish` signature, JetStream
14
+ * options, error handling) live in the concrete subclasses:
15
+ * - `MsgPublisher` — in-memory, best-effort intra-service delivery,
16
+ * - `NatsPublisher` — durable inter-service delivery (JetStream) with options.
17
+ */
18
+ export declare abstract class Publisher<T extends Event> {
19
+ private readonly provider;
20
+ abstract subject: T['subject'];
21
+ constructor(provider: ClientProvider);
22
+ /**
23
+ * Resolve the client only when actually publishing, so the transport may be
24
+ * connected AFTER this publisher (and its owning controller) is constructed.
25
+ */
26
+ protected get client(): MsgClientInterface;
27
+ /**
28
+ * Wrap the event in the shared in-band envelope (id / subject / data /
29
+ * timestamp / cascade meta), so the metadata rides in the payload and loop-guard
30
+ * and causation tracing stay transport agnostic.
31
+ */
32
+ protected envelope(data: T['data'], meta?: EventMeta): EventEnvelope;
33
+ }
34
+ //# sourceMappingURL=base-publisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-publisher.d.ts","sourceRoot":"","sources":["../../../src/events/base/base-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAuB,oCAAoC,CAAC;AAG/F;;;;;;;;;;;;;;GAcG;AACH,8BAAsB,SAAS,CAAC,CAAC,SAAS,KAAK;IAIjC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;gBAEF,QAAQ,EAAE,cAAc;IAErD;;;OAGG;IACH,SAAS,KAAK,MAAM,IAAI,kBAAkB,CAGzC;IAED;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,aAAa;CAIrE"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Publisher = void 0;
4
+ const cascade_1 = require("../cascade");
5
+ /**
6
+ * Abstract base shared by every publisher, regardless of transport.
7
+ *
8
+ * It owns the transport-agnostic concerns:
9
+ * - identity (`subject`),
10
+ * - lazy client resolution (`client`), so the transport may be connected AFTER
11
+ * this publisher (and its owning controller) is constructed,
12
+ * - the shared in-band envelope construction (`envelope`), so both buses carry
13
+ * the same cascade metadata (transport-agnostic tracing).
14
+ *
15
+ * Transport-specific concerns (the concrete `publish` signature, JetStream
16
+ * options, error handling) live in the concrete subclasses:
17
+ * - `MsgPublisher` — in-memory, best-effort intra-service delivery,
18
+ * - `NatsPublisher` — durable inter-service delivery (JetStream) with options.
19
+ */
20
+ class Publisher {
21
+ constructor(provider) {
22
+ this.provider = provider;
23
+ }
24
+ /**
25
+ * Resolve the client only when actually publishing, so the transport may be
26
+ * connected AFTER this publisher (and its owning controller) is constructed.
27
+ */
28
+ get client() {
29
+ return this.provider.client;
30
+ }
31
+ /**
32
+ * Wrap the event in the shared in-band envelope (id / subject / data /
33
+ * timestamp / cascade meta), so the metadata rides in the payload and loop-guard
34
+ * and causation tracing stay transport agnostic.
35
+ */
36
+ envelope(data, meta) {
37
+ return (0, cascade_1.buildEnvelope)(this.subject, data, meta);
38
+ }
39
+ }
40
+ exports.Publisher = Publisher;
41
+ //# sourceMappingURL=base-publisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-publisher.js","sourceRoot":"","sources":["../../../src/events/base/base-publisher.ts"],"names":[],"mappings":";;;AAEA,wCAAuE;AAEvE;;;;;;;;;;;;;;GAcG;AACH,MAAsB,SAAS;IAI7B,YAA6B,QAAwB;QAAxB,aAAQ,GAAR,QAAQ,CAAgB;IAAG,CAAC;IAEzD;;;OAGG;IACH,IAAc,MAAM;QAElB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACO,QAAQ,CAAC,IAAe,EAAE,IAAgB;QAElD,OAAO,IAAA,uBAAa,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;CACF;AAxBD,8BAwBC"}
@@ -1,4 +1,4 @@
1
- import { NatsClientManager } from './nats-client-manager';
1
+ import { NatsClientManager } from './transport/nats-client-manager';
2
2
  import { DlqDepth, DlqInspectItem } from './types/dlq.interfaces';
3
3
  import { DlqInspectOptions, DlqManagerOptions } from './types/dlq.interfaces';
4
4
  import { DlqReplayOptions, DlqReplayResult } from './types/dlq.interfaces';
@@ -1 +1 @@
1
- {"version":3,"file":"dlq-manager.d.ts","sourceRoot":"","sources":["../../src/events/dlq-manager.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,iBAAiB,EAAE,MAAuC,uBAAuB,CAAC;AAC3F,OAAO,EAAsB,QAAQ,EAAE,cAAc,EAAE,MAAY,wBAAwB,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAoB,wBAAwB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAuB,wBAAwB,CAAC;AAM5F,qBAAa,UAAU;IAST,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAY;IAC3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuD;IAE/E,OAAO,CAAC,KAAK,CAAC,CAAmC;IACjD,OAAO,CAAC,QAAQ,CAAS;gBAEI,MAAM,EAAE,iBAAiB,EAAE,IAAI,GAAE,iBAAsB;IAQpF;;;;;;OAMG;IACG,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAYhD;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAenC;;;OAGG;IACH,YAAY,IAAI,IAAI;IAapB,oDAAoD;IACpD,WAAW,IAAI,IAAI;IAOnB;;;;OAIG;IACG,OAAO,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAsCtE;;;;;OAKG;IACG,MAAM,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;IAoDnE;;;;;OAKG;YACW,iBAAiB;YAkBjB,cAAc;IAQ5B,OAAO,CAAC,iBAAiB;CAM1B"}
1
+ {"version":3,"file":"dlq-manager.d.ts","sourceRoot":"","sources":["../../src/events/dlq-manager.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,iBAAiB,EAAE,MAAuC,iCAAiC,CAAC;AACrG,OAAO,EAAsB,QAAQ,EAAE,cAAc,EAAE,MAAY,wBAAwB,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAoB,wBAAwB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAuB,wBAAwB,CAAC;AAM5F,qBAAa,UAAU;IAST,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAY;IAC3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuD;IAE/E,OAAO,CAAC,KAAK,CAAC,CAAmC;IACjD,OAAO,CAAC,QAAQ,CAAS;gBAEI,MAAM,EAAE,iBAAiB,EAAE,IAAI,GAAE,iBAAsB;IAQpF;;;;;;OAMG;IACG,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAYhD;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAenC;;;OAGG;IACH,YAAY,IAAI,IAAI;IAapB,oDAAoD;IACpD,WAAW,IAAI,IAAI;IAOnB;;;;OAIG;IACG,OAAO,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAsCtE;;;;;OAKG;IACG,MAAM,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;IAoDnE;;;;;OAKG;YACW,iBAAiB;YAkBjB,cAAc;IAQ5B,OAAO,CAAC,iBAAiB;CAM1B"}
@@ -1,4 +1,4 @@
1
- import { EventEmitter } from 'ws';
1
+ import { EventEmitter } from 'node:events';
2
2
  import { EventSubOptions } from './interfaces';
3
3
  export declare class EventSubscription extends EventEmitter {
4
4
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"event-subscription.d.ts","sourceRoot":"","sources":["../../src/events/event-subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAS,IAAI,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,qBAAa,iBAAkB,SAAQ,YAAY;IAEjD,EAAE,EAAe,MAAM,CAAC;IACxB,OAAO,EAAU,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAU,eAAe,CAAC;gBAErB,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe;CAQjE"}
1
+ {"version":3,"file":"event-subscription.d.ts","sourceRoot":"","sources":["../../src/events/event-subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAS,aAAa,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,qBAAa,iBAAkB,SAAQ,YAAY;IAEjD,EAAE,EAAe,MAAM,CAAC;IACxB,OAAO,EAAU,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAU,eAAe,CAAC;gBAErB,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe;CAQjE"}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EventSubscription = void 0;
4
- const ws_1 = require("ws");
4
+ const node_events_1 = require("node:events");
5
5
  const nx_frame_be_1 = require("@nextage/nx-frame-be");
6
- class EventSubscription extends ws_1.EventEmitter {
6
+ class EventSubscription extends node_events_1.EventEmitter {
7
7
  constructor(sub, qgName, opts) {
8
8
  super();
9
9
  this.id = (0, nx_frame_be_1.uuid)();
@@ -1 +1 @@
1
- {"version":3,"file":"event-subscription.js","sourceRoot":"","sources":["../../src/events/event-subscription.ts"],"names":[],"mappings":";;;AAAA,2BAAqC;AACrC,sDAAuD;AAGvD,MAAa,iBAAkB,SAAQ,iBAAY;IAOjD,YAAY,GAAW,EAAE,MAAe,EAAE,IAAsB;QAE9D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAe,IAAA,kBAAI,GAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAU,GAAG,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAU,IAAI,IAAI,EAAE,CAAC;IACnC,CAAC;CACF;AAfD,8CAeC"}
1
+ {"version":3,"file":"event-subscription.js","sourceRoot":"","sources":["../../src/events/event-subscription.ts"],"names":[],"mappings":";;;AAAA,6CAA8C;AAC9C,sDAAuD;AAGvD,MAAa,iBAAkB,SAAQ,0BAAY;IAOjD,YAAY,GAAW,EAAE,MAAe,EAAE,IAAsB;QAE9D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAe,IAAA,kBAAI,GAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAU,GAAG,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAU,IAAI,IAAI,EAAE,CAAC;IACnC,CAAC;CACF;AAfD,8CAeC"}
@@ -1,7 +1,7 @@
1
1
  export * from './types/enums';
2
2
  export * from './interfaces';
3
3
  export * from './types';
4
- export * from './base-event.controller';
4
+ export * from './base/base-event.controller';
5
5
  export * from './cascade';
6
6
  export * from './event-relay';
7
7
  export * from './field-map';
@@ -10,16 +10,18 @@ export * from './publisher-registry';
10
10
  export * from './revocation-denylist';
11
11
  export * from './revocation-listener';
12
12
  export * from './access-revoked-publisher';
13
- export * from './msg-client-manager';
14
- export * from './msg-wrapper';
15
- export * from './base-listener';
16
- export * from './base-listener.interfaces';
17
- export * from './base-msg-listener';
18
- export * from './base-publisher';
19
- export * from './nats-client-manager';
20
- export * from './nats-wrapper';
21
- export * from './base-nats-listener';
22
- export * from './base-nats-publisher';
13
+ export * from './transport/base-client-wrapper';
14
+ export * from './transport/msg-client-manager';
15
+ export * from './transport/msg-wrapper';
16
+ export * from './base/base-listener';
17
+ export * from './base/base-listener.interfaces';
18
+ export * from './base/base-msg-listener';
19
+ export * from './base/base-publisher';
20
+ export * from './base/base-msg-publisher';
21
+ export * from './transport/nats-client-manager';
22
+ export * from './transport/nats-wrapper';
23
+ export * from './base/base-nats-listener';
24
+ export * from './base/base-nats-publisher';
23
25
  export * from './dlq-manager';
24
26
  export * from './organization';
25
27
  export * from './user';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AAExB,cAAc,yBAAyB,CAAC;AACxC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAG9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AAGvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAGhC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AAExB,cAAc,8BAA8B,CAAC;AAC7C,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,iCAAiC,CAAC;AAGhD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,eAAe,CAAC;AAG9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AAGvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAGhC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
@@ -17,7 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./types/enums"), exports);
18
18
  __exportStar(require("./interfaces"), exports);
19
19
  __exportStar(require("./types"), exports);
20
- __exportStar(require("./base-event.controller"), exports);
20
+ __exportStar(require("./base/base-event.controller"), exports);
21
21
  __exportStar(require("./cascade"), exports);
22
22
  __exportStar(require("./event-relay"), exports);
23
23
  __exportStar(require("./field-map"), exports);
@@ -26,18 +26,21 @@ __exportStar(require("./publisher-registry"), exports);
26
26
  __exportStar(require("./revocation-denylist"), exports);
27
27
  __exportStar(require("./revocation-listener"), exports);
28
28
  __exportStar(require("./access-revoked-publisher"), exports);
29
+ // shared transport-agnostic base
30
+ __exportStar(require("./transport/base-client-wrapper"), exports);
29
31
  // messages on memory
30
- __exportStar(require("./msg-client-manager"), exports);
31
- __exportStar(require("./msg-wrapper"), exports);
32
- __exportStar(require("./base-listener"), exports);
33
- __exportStar(require("./base-listener.interfaces"), exports);
34
- __exportStar(require("./base-msg-listener"), exports);
35
- __exportStar(require("./base-publisher"), exports);
32
+ __exportStar(require("./transport/msg-client-manager"), exports);
33
+ __exportStar(require("./transport/msg-wrapper"), exports);
34
+ __exportStar(require("./base/base-listener"), exports);
35
+ __exportStar(require("./base/base-listener.interfaces"), exports);
36
+ __exportStar(require("./base/base-msg-listener"), exports);
37
+ __exportStar(require("./base/base-publisher"), exports);
38
+ __exportStar(require("./base/base-msg-publisher"), exports);
36
39
  // messages on nats
37
- __exportStar(require("./nats-client-manager"), exports);
38
- __exportStar(require("./nats-wrapper"), exports);
39
- __exportStar(require("./base-nats-listener"), exports);
40
- __exportStar(require("./base-nats-publisher"), exports);
40
+ __exportStar(require("./transport/nats-client-manager"), exports);
41
+ __exportStar(require("./transport/nats-wrapper"), exports);
42
+ __exportStar(require("./base/base-nats-listener"), exports);
43
+ __exportStar(require("./base/base-nats-publisher"), exports);
41
44
  __exportStar(require("./dlq-manager"), exports);
42
45
  // admin-mng
43
46
  __exportStar(require("./organization"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,+CAA6B;AAC7B,0CAAwB;AAExB,0DAAwC;AACxC,4CAA0B;AAC1B,gDAA8B;AAC9B,8CAA4B;AAC5B,2CAAyB;AACzB,uDAAqC;AACrC,wDAAsC;AACtC,wDAAsC;AACtC,6DAA2C;AAE3C,qBAAqB;AACrB,uDAAqC;AACrC,gDAA8B;AAC9B,kDAAgC;AAChC,6DAA2C;AAC3C,sDAAoC;AACpC,mDAAiC;AAEjC,mBAAmB;AACnB,wDAAsC;AACtC,iDAA+B;AAC/B,uDAAqC;AACrC,wDAAsC;AACtC,gDAA8B;AAE9B,YAAY;AACZ,iDAA+B;AAC/B,yCAAuB;AAEvB,aAAa;AACb,kDAAgC;AAChC,gDAA8B;AAC9B,6CAA2B;AAC3B,mDAAiC;AACjC,iDAA+B;AAC/B,4CAA0B;AAC1B,sDAAoC;AACpC,2CAAyB;AACzB,kDAAgC;AAEhC,cAAc;AACd,4CAA0B;AAC1B,kDAAgC;AAChC,oDAAkC;AAClC,qDAAmC;AACnC,qDAAmC;AACnC,oDAAkC;AAClC,iDAA+B;AAC/B,mDAAiC;AAEjC,oBAAoB;AACpB,kDAAgC;AAChC,+CAA6B;AAE7B,kBAAkB;AAClB,mCAAmC;AAEnC,cAAc"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,+CAA6B;AAC7B,0CAAwB;AAExB,+DAA6C;AAC7C,4CAA0B;AAC1B,gDAA8B;AAC9B,8CAA4B;AAC5B,2CAAyB;AACzB,uDAAqC;AACrC,wDAAsC;AACtC,wDAAsC;AACtC,6DAA2C;AAE3C,iCAAiC;AACjC,kEAAgD;AAEhD,qBAAqB;AACrB,iEAA+C;AAC/C,0DAAwC;AACxC,uDAAqC;AACrC,kEAAgD;AAChD,2DAAyC;AACzC,wDAAsC;AACtC,4DAA0C;AAE1C,mBAAmB;AACnB,kEAAgD;AAChD,2DAAyC;AACzC,4DAA0C;AAC1C,6DAA2C;AAC3C,gDAA8B;AAE9B,YAAY;AACZ,iDAA+B;AAC/B,yCAAuB;AAEvB,aAAa;AACb,kDAAgC;AAChC,gDAA8B;AAC9B,6CAA2B;AAC3B,mDAAiC;AACjC,iDAA+B;AAC/B,4CAA0B;AAC1B,sDAAoC;AACpC,2CAAyB;AACzB,kDAAgC;AAEhC,cAAc;AACd,4CAA0B;AAC1B,kDAAgC;AAChC,oDAAkC;AAClC,qDAAmC;AACnC,qDAAmC;AACnC,oDAAkC;AAClC,iDAA+B;AAC/B,mDAAiC;AAEjC,oBAAoB;AACpB,kDAAgC;AAChC,+CAA6B;AAE7B,kBAAkB;AAClB,mCAAmC;AAEnC,cAAc"}
@@ -1,8 +1,20 @@
1
1
  import { Subjects } from './types/enums';
2
2
  import { EventMeta } from './types/event-envelope.interfaces';
3
3
  import { NxObject } from '@nextage/nx-frame-be';
4
+ /**
5
+ * Minimal transport contract shared by both message-bus clients
6
+ * (`MsgClientManager` in-memory, `NatsClientManager` JetStream).
7
+ *
8
+ * `publish` is uniform across transports. `subscribe`/`unsubscribe` are
9
+ * **intentionally loose** (`any`): the two transports take genuinely different
10
+ * arguments — NATS `subscribe(subject, streamName, queueGroupName, opts)` →
11
+ * `Consumer` and `unsubscribe(subject, streamName, queueGroupName)`; the
12
+ * in-memory bus `subscribe(subject, queueGroupName?, opts)` → `EventSubscription`
13
+ * and `unsubscribe(sub)`. Each concrete listener (`NatsListener` / `MsgListener`)
14
+ * already knows its transport and calls the matching shape.
15
+ */
4
16
  export interface MsgClientInterface {
5
- publish: (subject: string, payload: string, options?: NxObject) => Promise<any>;
17
+ publish: (subject: string, payload: string, options?: NxObject) => Promise<void>;
6
18
  subscribe: (...args: any[]) => any;
7
19
  unsubscribe: (...args: any[]) => any;
8
20
  }
@@ -21,6 +33,15 @@ export interface EventSubOptions {
21
33
  maxDeliver?: number;
22
34
  ackWait?: number;
23
35
  }
36
+ /**
37
+ * Connection config consumed by the NATS wrapper. Centralised here (instead of
38
+ * an inline shape in `nats-wrapper.ts`) so the transport config lives beside the
39
+ * other event contracts.
40
+ */
41
+ export interface NatsWrapperConfig {
42
+ servers: string[] | string;
43
+ clientName?: string;
44
+ }
24
45
  export interface Event {
25
46
  subject: Subjects;
26
47
  data: any;
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/events/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAO,eAAe,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAO,sBAAsB,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACnF,SAAS,EAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IACrC,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;CACtC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAK,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,QAAQ,CAAC;IAClB,IAAI,EAAK,GAAG,CAAC;CACd;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,GAAG,SAAS;IACxD,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IACtB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/events/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAO,eAAe,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAO,sBAAsB,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpF,SAAS,EAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IACrC,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;CACtC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAK,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAM,MAAM,EAAE,GAAG,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,QAAQ,CAAC;IAClB,IAAI,EAAK,GAAG,CAAC;CACd;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,GAAG,SAAS;IACxD,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IACtB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE"}
@@ -1,5 +1,5 @@
1
1
  import { ClientProvider } from './interfaces';
2
- import { NatsClientManager } from './nats-client-manager';
2
+ import { NatsClientManager } from './transport/nats-client-manager';
3
3
  import { RevocationListenerOptions } from './types/revocation.interfaces';
4
4
  interface NatsProvider extends ClientProvider {
5
5
  readonly client: NatsClientManager;
@@ -1 +1 @@
1
- {"version":3,"file":"revocation-listener.d.ts","sourceRoot":"","sources":["../../src/events/revocation-listener.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,cAAc,EAAE,MAAoB,cAAc,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAiB,uBAAuB,CAAC;AAIrE,OAAO,EAAE,yBAAyB,EAAE,MAAS,+BAA+B,CAAC;AAM7E,UAAU,YAAa,SAAQ,cAAc;IAC3C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;CACpC;AAED,qBAAa,kBAAkB;IAQjB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IANrC,OAAO,CAAC,QAAQ,CAAC,CAAa;IAC9B,OAAO,CAAC,SAAS,CAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;gBAEvB,QAAQ,EAAE,YAAY,EAAE,IAAI,GAAE,yBAA8B;IAMzF;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAQf,OAAO;IA+BrB,OAAO,CAAC,MAAM;IAkBd,yDAAyD;IACnD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAc5B"}
1
+ {"version":3,"file":"revocation-listener.d.ts","sourceRoot":"","sources":["../../src/events/revocation-listener.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,cAAc,EAAE,MAAoB,cAAc,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAiB,iCAAiC,CAAC;AAI/E,OAAO,EAAE,yBAAyB,EAAE,MAAS,+BAA+B,CAAC;AAM7E,UAAU,YAAa,SAAQ,cAAc;IAC3C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;CACpC;AAED,qBAAa,kBAAkB;IAQjB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IANrC,OAAO,CAAC,QAAQ,CAAC,CAAa;IAC9B,OAAO,CAAC,SAAS,CAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;gBAEvB,QAAQ,EAAE,YAAY,EAAE,IAAI,GAAE,yBAA8B;IAMzF;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAQf,OAAO;IA+BrB,OAAO,CAAC,MAAM;IAkBd,yDAAyD;IACnD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAc5B"}
@@ -0,0 +1,44 @@
1
+ import { ClientProvider, MsgClientInterface } from '../interfaces';
2
+ /**
3
+ * Abstract base shared by every message-bus wrapper, regardless of transport.
4
+ *
5
+ * A wrapper is a lazy singleton holder for the underlying client manager: it is
6
+ * constructed at import time but only resolves a real client on `connect`, so
7
+ * publishers/listeners (and their controllers) can be built BEFORE the transport
8
+ * is connected without tripping the "client before connecting" guard (finding B8).
9
+ *
10
+ * By implementing {@link ClientProvider}, every concrete wrapper is a valid
11
+ * provider for publishers/listeners (compile-time check).
12
+ *
13
+ * Transport-specific concerns (how the client is built and connected) live in
14
+ * the concrete subclasses:
15
+ * - `MsgWrapper` — in-memory bus (best-effort intra-service delivery),
16
+ * - `NatsWrapper` — NATS JetStream (durable inter-service delivery).
17
+ *
18
+ * @typeParam TClient concrete client manager exposed by `client`
19
+ * @typeParam TConfig transport-specific connection config accepted by `connect`
20
+ */
21
+ export declare abstract class ClientWrapper<TClient extends MsgClientInterface, TConfig> implements ClientProvider {
22
+ private readonly label;
23
+ protected _client?: TClient;
24
+ constructor(label: string);
25
+ /**
26
+ * Resolve the client, guarding against access before `connect`. Concrete
27
+ * subclasses widen the return type to their client manager so callers keep
28
+ * access to transport-specific methods (e.g. `natsWrapper.client.createStream`).
29
+ */
30
+ get client(): TClient;
31
+ /**
32
+ * Connect the transport and populate `client`. Concrete subclasses build the
33
+ * client manager from their own config shape. Reconnecting an already-connected
34
+ * wrapper first tears down the previous client (see the concrete guard) so we
35
+ * never orphan a live connection.
36
+ */
37
+ abstract connect(config: TConfig): Promise<void>;
38
+ /**
39
+ * Tear down the transport. Default is a no-op so shutdown stays symmetric
40
+ * across wrappers; transports with a real connection (NATS) override it.
41
+ */
42
+ disconnect(): Promise<void>;
43
+ }
44
+ //# sourceMappingURL=base-client-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-client-wrapper.d.ts","sourceRoot":"","sources":["../../../src/events/transport/base-client-wrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnE;;;;;;;;;;;;;;;;;;GAkBG;AACH,8BAAsB,aAAa,CAAC,OAAO,SAAS,kBAAkB,EAAE,OAAO,CAC7E,YAAW,cAAc;IAIb,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFlC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;gBAEC,KAAK,EAAE,MAAM;IAE1C;;;;OAIG;IACH,IAAI,MAAM,IAAI,OAAO,CAMpB;IAED;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAEhD;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAIlC"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClientWrapper = void 0;
4
+ const nx_frame_be_1 = require("@nextage/nx-frame-be");
5
+ /**
6
+ * Abstract base shared by every message-bus wrapper, regardless of transport.
7
+ *
8
+ * A wrapper is a lazy singleton holder for the underlying client manager: it is
9
+ * constructed at import time but only resolves a real client on `connect`, so
10
+ * publishers/listeners (and their controllers) can be built BEFORE the transport
11
+ * is connected without tripping the "client before connecting" guard (finding B8).
12
+ *
13
+ * By implementing {@link ClientProvider}, every concrete wrapper is a valid
14
+ * provider for publishers/listeners (compile-time check).
15
+ *
16
+ * Transport-specific concerns (how the client is built and connected) live in
17
+ * the concrete subclasses:
18
+ * - `MsgWrapper` — in-memory bus (best-effort intra-service delivery),
19
+ * - `NatsWrapper` — NATS JetStream (durable inter-service delivery).
20
+ *
21
+ * @typeParam TClient concrete client manager exposed by `client`
22
+ * @typeParam TConfig transport-specific connection config accepted by `connect`
23
+ */
24
+ class ClientWrapper {
25
+ constructor(label) {
26
+ this.label = label;
27
+ }
28
+ /**
29
+ * Resolve the client, guarding against access before `connect`. Concrete
30
+ * subclasses widen the return type to their client manager so callers keep
31
+ * access to transport-specific methods (e.g. `natsWrapper.client.createStream`).
32
+ */
33
+ get client() {
34
+ if (!this._client)
35
+ throw new Error(`Cannot access ${this.label} client before connecting`);
36
+ return this._client;
37
+ }
38
+ /**
39
+ * Tear down the transport. Default is a no-op so shutdown stays symmetric
40
+ * across wrappers; transports with a real connection (NATS) override it.
41
+ */
42
+ async disconnect() {
43
+ nx_frame_be_1.APP.logger.info(`📪 ${this.label} client disconnected`);
44
+ }
45
+ }
46
+ exports.ClientWrapper = ClientWrapper;
47
+ //# sourceMappingURL=base-client-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-client-wrapper.js","sourceRoot":"","sources":["../../../src/events/transport/base-client-wrapper.ts"],"names":[],"mappings":";;;AAAA,sDAAsE;AAGtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAsB,aAAa;IAKjC,YAA6B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAE9C;;;;OAIG;IACH,IAAI,MAAM;QAER,IAAI,CAAC,IAAI,CAAC,OAAO;YACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,KAAK,2BAA2B,CAAC,CAAC;QAE1E,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAUD;;;OAGG;IACH,KAAK,CAAC,UAAU;QAEd,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,sBAAsB,CAAC,CAAC;IAC1D,CAAC;CACF;AApCD,sCAoCC"}
@@ -0,0 +1,37 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import { NxObject, NxTypeObject } from '@nextage/nx-frame-be';
3
+ import { EventSubscription } from '../event-subscription';
4
+ import { MsgClientInterface, EventSubOptions } from '../interfaces';
5
+ export declare class MsgClientManager extends EventEmitter implements MsgClientInterface {
6
+ subs: NxTypeObject<EventSubscription[]>;
7
+ private readonly clientId?;
8
+ constructor(clientId?: string);
9
+ /**
10
+ * No real connection to establish for the in-memory bus; logs readiness so the
11
+ * transport lifecycle stays symmetric with the NATS client.
12
+ */
13
+ connect(): Promise<void>;
14
+ /**
15
+ * Register a subscription for `subject` and return it so the caller can attach a
16
+ * `message` handler.
17
+ *
18
+ * @param subject subject to listen on
19
+ * @param queueGroupName optional group label (informational for the in-memory bus)
20
+ * @param options optional `maxDeliver` / `ackWait` (unused in-memory)
21
+ */
22
+ subscribe(subject: string, queueGroupName?: string, options?: EventSubOptions): EventSubscription;
23
+ /**
24
+ * Fan out `data` to every subscriber of `subject`; a no-op (with a log) when
25
+ * there is no subscription — the in-memory bus is best-effort.
26
+ */
27
+ publish(subject: string, data: string | Uint8Array<ArrayBufferLike>, options?: NxObject): Promise<void>;
28
+ /**
29
+ * Detach `cb` from `sub` and drop it from the subscription list.
30
+ */
31
+ unsubscribe(sub: EventSubscription, cb?: (...args: any[]) => void): void;
32
+ /**
33
+ * Return the subscription list for `subject`, throwing if none exists.
34
+ */
35
+ private getSubscriptions;
36
+ }
37
+ //# sourceMappingURL=msg-client-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"msg-client-manager.d.ts","sourceRoot":"","sources":["../../../src/events/transport/msg-client-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAkC,aAAa,CAAC;AACvE,OAAO,EAAoB,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEhF,OAAO,EAAE,iBAAiB,EAAE,MAA6B,uBAAuB,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAW,eAAe,CAAC;AAEzE,qBAAa,gBAAiB,SAAQ,YAAa,YAAW,kBAAkB;IAE9E,IAAI,EAAE,YAAY,CAAC,iBAAiB,EAAE,CAAC,CAAM;IAE7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;gBAEvB,QAAQ,CAAC,EAAE,MAAM;IAM7B;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;;;;;;OAOG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,iBAAiB;IAWjG;;;OAGG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7G;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,iBAAiB,EAAE,EAAE,GAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAe,GAAG,IAAI;IAWlF;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAOzB"}
@@ -1,29 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MsgClientManager = void 0;
4
- const ws_1 = require("ws");
4
+ const node_events_1 = require("node:events");
5
5
  const nx_frame_be_1 = require("@nextage/nx-frame-be");
6
- const event_message_1 = require("./event-message");
7
- const event_subscription_1 = require("./event-subscription");
8
- class MsgClientManager extends ws_1.EventEmitter {
9
- constructor(clientId, opts) {
6
+ const event_message_1 = require("../event-message");
7
+ const event_subscription_1 = require("../event-subscription");
8
+ class MsgClientManager extends node_events_1.EventEmitter {
9
+ constructor(clientId) {
10
10
  super();
11
11
  this.subs = {};
12
- this.opts = {};
13
12
  this.clientId = clientId;
14
- this.opts = opts ?? {};
15
13
  }
16
14
  /**
17
- *
15
+ * No real connection to establish for the in-memory bus; logs readiness so the
16
+ * transport lifecycle stays symmetric with the NATS client.
18
17
  */
19
18
  async connect() {
20
19
  nx_frame_be_1.APP.logger.info(`✅ Connected to Event Client Manager`);
21
- //setTimeout(() => this.emit('connect', true), 500);
22
20
  }
23
21
  /**
22
+ * Register a subscription for `subject` and return it so the caller can attach a
23
+ * `message` handler.
24
24
  *
25
- * @param {*} key
26
- * @param {*} method
25
+ * @param subject subject to listen on
26
+ * @param queueGroupName optional group label (informational for the in-memory bus)
27
+ * @param options optional `maxDeliver` / `ackWait` (unused in-memory)
27
28
  */
28
29
  subscribe(subject, queueGroupName, options) {
29
30
  var _a;
@@ -34,17 +35,14 @@ class MsgClientManager extends ws_1.EventEmitter {
34
35
  return sub;
35
36
  }
36
37
  /**
37
- *
38
- * @param {*} key
39
- * @param {*} data
38
+ * Fan out `data` to every subscriber of `subject`; a no-op (with a log) when
39
+ * there is no subscription — the in-memory bus is best-effort.
40
40
  */
41
41
  async publish(subject, data, options) {
42
42
  if (!this.subs[subject]) {
43
43
  nx_frame_be_1.APP.logger.info(`❌ Data won't be published, no subscription for subject: ${subject}`, (0, nx_frame_be_1.logClassCtx)(this));
44
44
  return;
45
45
  }
46
- //throw new Error('MsgClientManager : subject does not exist');
47
- //this.subs[subject] ??= [];
48
46
  this.subs[subject].forEach(sub => {
49
47
  const message = new event_message_1.Message(data);
50
48
  sub.emit('message', message);
@@ -52,36 +50,17 @@ class MsgClientManager extends ws_1.EventEmitter {
52
50
  });
53
51
  }
54
52
  /**
55
- *
56
- * @param {*} id
53
+ * Detach `cb` from `sub` and drop it from the subscription list.
57
54
  */
58
55
  unsubscribe(sub, cb = () => { }) {
59
56
  sub.off('message', cb);
60
- const subs = this.getSubscriptions(sub.subject) || [];
61
- const idx = this.getSubscriptions(sub.subject).findIndex(s => s.id === sub.id);
57
+ const subs = this.getSubscriptions(sub.subject);
58
+ const idx = subs.findIndex(s => s.id === sub.id);
62
59
  if (idx >= 0)
63
60
  subs.splice(idx, 1);
64
61
  }
65
- // /**
66
- // *
67
- // * @param data
68
- // * @returns
69
- // */
70
- // encodeData(data: string): string | Uint8Array {
71
- // return data;
72
- // }
73
- // /**
74
- // *
75
- // * @param data
76
- // * @returns
77
- // */
78
- // decodeData(data: string | Uint8Array): string {
79
- // return data as string;
80
- // }
81
62
  /**
82
- *
83
- * @param sub
84
- * @returns
63
+ * Return the subscription list for `subject`, throwing if none exists.
85
64
  */
86
65
  getSubscriptions(subject) {
87
66
  if (!this.subs[subject])
@@ -0,0 +1 @@
1
+ {"version":3,"file":"msg-client-manager.js","sourceRoot":"","sources":["../../../src/events/transport/msg-client-manager.ts"],"names":[],"mappings":";;;AAAA,6CAAuE;AACvE,sDAAgF;AAChF,oDAA4E;AAC5E,8DAAiF;AAGjF,MAAa,gBAAiB,SAAQ,0BAAY;IAMhD,YAAY,QAAiB;QAE3B,KAAK,EAAE,CAAC;QANV,SAAI,GAAsC,EAAE,CAAC;QAO3C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO;QAEX,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,OAAe,EAAE,cAAuB,EAAE,OAAyB;;QAE3E,MAAM,GAAG,GAAG,IAAI,sCAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAEpE,MAAA,IAAI,CAAC,IAAI,EAAC,OAAO,SAAP,OAAO,IAAM,EAAE,EAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE7B,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,OAAO,MAAM,cAAc,EAAE,EAAE,IAAA,yBAAW,EAAC,IAAI,CAAC,CAAC,CAAC;QACzF,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,IAA0C,EAAE,OAAkB;QAE3F,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAExB,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,2DAA2D,OAAO,EAAE,EAAE,IAAA,yBAAW,EAAC,IAAI,CAAC,CAAC,CAAC;YACzG,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAE/B,MAAM,OAAO,GAAG,IAAI,uBAAO,CAAC,IAAI,CAAC,CAAC;YAClC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAE7B,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,OAAO,EAAE,EAAE,IAAA,yBAAW,EAAC,IAAI,CAAC,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,GAAsB,EAAE,KAA+B,GAAG,EAAE,GAAE,CAAC;QAEzE,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAEvB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,GAAG,GAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;QAElD,IAAI,GAAG,IAAI,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,OAAe;QAEtC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAE/D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;CACF;AArFD,4CAqFC"}
@@ -0,0 +1,15 @@
1
+ import { AppMessages } from '@nextage/nx-frame-be';
2
+ import { MsgClientManager } from './msg-client-manager';
3
+ import { ClientWrapper } from './base-client-wrapper';
4
+ /**
5
+ * In-memory message bus wrapper. Emulates a queue client (NATS) for best-effort
6
+ * intra-service delivery, so publishers/listeners share the same contract across
7
+ * transports.
8
+ */
9
+ declare class MsgWrapper extends ClientWrapper<MsgClientManager, AppMessages> {
10
+ constructor();
11
+ connect({ clientId }?: AppMessages): Promise<void>;
12
+ }
13
+ export declare const msgWrapper: MsgWrapper;
14
+ export {};
15
+ //# sourceMappingURL=msg-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"msg-wrapper.d.ts","sourceRoot":"","sources":["../../../src/events/transport/msg-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAU,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAS,uBAAuB,CAAC;AAEzD;;;;GAIG;AACH,cAAM,UAAW,SAAQ,aAAa,CAAC,gBAAgB,EAAE,WAAW,CAAC;;IAO7D,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAU7D;AAED,eAAO,MAAM,UAAU,YAAmB,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.msgWrapper = void 0;
4
+ const msg_client_manager_1 = require("./msg-client-manager");
5
+ const base_client_wrapper_1 = require("./base-client-wrapper");
6
+ /**
7
+ * In-memory message bus wrapper. Emulates a queue client (NATS) for best-effort
8
+ * intra-service delivery, so publishers/listeners share the same contract across
9
+ * transports.
10
+ */
11
+ class MsgWrapper extends base_client_wrapper_1.ClientWrapper {
12
+ constructor() {
13
+ super('Event');
14
+ }
15
+ async connect({ clientId } = {}) {
16
+ // Reconnect guard: tear down a previous client before replacing it.
17
+ if (this._client)
18
+ await this.disconnect();
19
+ this._client = new msg_client_manager_1.MsgClientManager(clientId);
20
+ await this._client.connect();
21
+ }
22
+ }
23
+ exports.msgWrapper = new MsgWrapper();
24
+ //# sourceMappingURL=msg-wrapper.js.map