@nextage/era-lib 1.0.186 → 1.0.187
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/constants.d.ts +11 -0
- package/build/constants.d.ts.map +1 -1
- package/build/constants.js +11 -0
- package/build/constants.js.map +1 -1
- package/build/enums.d.ts +3 -0
- package/build/enums.d.ts.map +1 -1
- package/build/enums.js +3 -0
- package/build/enums.js.map +1 -1
- package/build/errors/app-error.d.ts +6 -0
- package/build/errors/app-error.d.ts.map +1 -1
- package/build/errors/app-error.js +6 -0
- package/build/errors/app-error.js.map +1 -1
- package/build/events/access-revoked-publisher.d.ts +1 -1
- package/build/events/access-revoked-publisher.d.ts.map +1 -1
- package/build/events/access-revoked-publisher.js +1 -1
- package/build/events/access-revoked-publisher.js.map +1 -1
- package/build/events/{base-event.controller.d.ts → base/base-event.controller.d.ts} +3 -3
- package/build/events/base/base-event.controller.d.ts.map +1 -0
- package/build/events/{base-event.controller.js → base/base-event.controller.js} +5 -5
- package/build/events/base/base-event.controller.js.map +1 -0
- package/build/events/{base-listener.d.ts → base/base-listener.d.ts} +2 -2
- package/build/events/base/base-listener.d.ts.map +1 -0
- package/build/events/base/base-listener.interfaces.d.ts.map +1 -0
- package/build/events/base/base-listener.interfaces.js.map +1 -0
- package/build/events/base/base-listener.js.map +1 -0
- package/build/events/{base-msg-listener.d.ts → base/base-msg-listener.d.ts} +15 -6
- package/build/events/base/base-msg-listener.d.ts.map +1 -0
- package/build/events/{base-msg-listener.js → base/base-msg-listener.js} +14 -5
- package/build/events/base/base-msg-listener.js.map +1 -0
- package/build/events/base/base-msg-publisher.d.ts +20 -0
- package/build/events/base/base-msg-publisher.d.ts.map +1 -0
- package/build/events/base/base-msg-publisher.js +24 -0
- package/build/events/base/base-msg-publisher.js.map +1 -0
- package/build/events/{base-nats-listener.d.ts → base/base-nats-listener.d.ts} +14 -9
- package/build/events/base/base-nats-listener.d.ts.map +1 -0
- package/build/events/{base-nats-listener.js → base/base-nats-listener.js} +15 -10
- package/build/events/base/base-nats-listener.js.map +1 -0
- package/build/events/base/base-nats-publisher.d.ts +23 -0
- package/build/events/base/base-nats-publisher.d.ts.map +1 -0
- package/build/events/base/base-nats-publisher.js +32 -0
- package/build/events/base/base-nats-publisher.js.map +1 -0
- package/build/events/base/base-publisher.d.ts +34 -0
- package/build/events/base/base-publisher.d.ts.map +1 -0
- package/build/events/base/base-publisher.js +41 -0
- package/build/events/base/base-publisher.js.map +1 -0
- package/build/events/dlq-manager.d.ts +1 -1
- package/build/events/dlq-manager.d.ts.map +1 -1
- package/build/events/event-subscription.d.ts +1 -1
- package/build/events/event-subscription.d.ts.map +1 -1
- package/build/events/event-subscription.js +2 -2
- package/build/events/event-subscription.js.map +1 -1
- package/build/events/index.d.ts +13 -11
- package/build/events/index.d.ts.map +1 -1
- package/build/events/index.js +14 -11
- package/build/events/index.js.map +1 -1
- package/build/events/interfaces.d.ts +9 -0
- package/build/events/interfaces.d.ts.map +1 -1
- package/build/events/revocation-listener.d.ts +1 -1
- package/build/events/revocation-listener.d.ts.map +1 -1
- package/build/events/transport/base-client-wrapper.d.ts +44 -0
- package/build/events/transport/base-client-wrapper.d.ts.map +1 -0
- package/build/events/transport/base-client-wrapper.js +47 -0
- package/build/events/transport/base-client-wrapper.js.map +1 -0
- package/build/events/transport/msg-client-manager.d.ts +37 -0
- package/build/events/transport/msg-client-manager.d.ts.map +1 -0
- package/build/events/{msg-client-manager.js → transport/msg-client-manager.js} +18 -39
- package/build/events/transport/msg-client-manager.js.map +1 -0
- package/build/events/transport/msg-wrapper.d.ts +15 -0
- package/build/events/transport/msg-wrapper.d.ts.map +1 -0
- package/build/events/transport/msg-wrapper.js +24 -0
- package/build/events/transport/msg-wrapper.js.map +1 -0
- package/build/events/{nats-client-manager.d.ts → transport/nats-client-manager.d.ts} +20 -18
- package/build/events/transport/nats-client-manager.d.ts.map +1 -0
- package/build/events/{nats-client-manager.js → transport/nats-client-manager.js} +20 -18
- package/build/events/transport/nats-client-manager.js.map +1 -0
- package/build/events/transport/nats-wrapper.d.ts +16 -0
- package/build/events/transport/nats-wrapper.d.ts.map +1 -0
- package/build/events/transport/nats-wrapper.js +30 -0
- package/build/events/transport/nats-wrapper.js.map +1 -0
- package/build/interfaces.d.ts +10 -0
- package/build/interfaces.d.ts.map +1 -1
- package/build/routes/validators.d.ts +4 -2
- package/build/routes/validators.d.ts.map +1 -1
- package/build/routes/validators.js +4 -2
- package/build/routes/validators.js.map +1 -1
- package/build/services/password.d.ts +19 -0
- package/build/services/password.d.ts.map +1 -1
- package/build/services/password.js +19 -0
- package/build/services/password.js.map +1 -1
- package/build/utils/functs.d.ts +54 -23
- package/build/utils/functs.d.ts.map +1 -1
- package/build/utils/functs.js +60 -25
- package/build/utils/functs.js.map +1 -1
- package/package.json +1 -1
- package/build/events/base-event.controller.d.ts.map +0 -1
- package/build/events/base-event.controller.js.map +0 -1
- package/build/events/base-listener.d.ts.map +0 -1
- package/build/events/base-listener.interfaces.d.ts.map +0 -1
- package/build/events/base-listener.interfaces.js.map +0 -1
- package/build/events/base-listener.js.map +0 -1
- package/build/events/base-msg-listener.d.ts.map +0 -1
- package/build/events/base-msg-listener.js.map +0 -1
- package/build/events/base-nats-listener.d.ts.map +0 -1
- package/build/events/base-nats-listener.js.map +0 -1
- package/build/events/base-nats-publisher.d.ts +0 -20
- package/build/events/base-nats-publisher.d.ts.map +0 -1
- package/build/events/base-nats-publisher.js +0 -35
- package/build/events/base-nats-publisher.js.map +0 -1
- package/build/events/base-publisher.d.ts +0 -18
- package/build/events/base-publisher.d.ts.map +0 -1
- package/build/events/base-publisher.js +0 -28
- package/build/events/base-publisher.js.map +0 -1
- package/build/events/msg-client-manager.d.ts +0 -38
- package/build/events/msg-client-manager.d.ts.map +0 -1
- package/build/events/msg-client-manager.js.map +0 -1
- package/build/events/msg-wrapper.d.ts +0 -10
- package/build/events/msg-wrapper.d.ts.map +0 -1
- package/build/events/msg-wrapper.js +0 -18
- package/build/events/msg-wrapper.js.map +0 -1
- package/build/events/nats-client-manager.d.ts.map +0 -1
- package/build/events/nats-client-manager.js.map +0 -1
- package/build/events/nats-client-manager.old.d.ts +0 -49
- package/build/events/nats-client-manager.old.d.ts.map +0 -1
- package/build/events/nats-client-manager.old.js +0 -108
- package/build/events/nats-client-manager.old.js.map +0 -1
- package/build/events/nats-wrapper.d.ts +0 -14
- package/build/events/nats-wrapper.d.ts.map +0 -1
- package/build/events/nats-wrapper.js +0 -24
- package/build/events/nats-wrapper.js.map +0 -1
- /package/build/events/{base-listener.interfaces.d.ts → base/base-listener.interfaces.d.ts} +0 -0
- /package/build/events/{base-listener.interfaces.js → base/base-listener.interfaces.js} +0 -0
- /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,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-subscription.d.ts","sourceRoot":"","sources":["../../src/events/event-subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAS,
|
|
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
|
|
4
|
+
const node_events_1 = require("node:events");
|
|
5
5
|
const nx_frame_be_1 = require("@nextage/nx-frame-be");
|
|
6
|
-
class EventSubscription extends
|
|
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,
|
|
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"}
|
package/build/events/index.d.ts
CHANGED
|
@@ -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 './
|
|
14
|
-
export * from './msg-
|
|
15
|
-
export * from './
|
|
16
|
-
export * from './base-listener
|
|
17
|
-
export * from './base-
|
|
18
|
-
export * from './base-
|
|
19
|
-
export * from './
|
|
20
|
-
export * from './
|
|
21
|
-
export * from './
|
|
22
|
-
export * from './
|
|
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,
|
|
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"}
|
package/build/events/index.js
CHANGED
|
@@ -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
|
|
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"}
|
|
@@ -21,6 +21,15 @@ export interface EventSubOptions {
|
|
|
21
21
|
maxDeliver?: number;
|
|
22
22
|
ackWait?: number;
|
|
23
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Connection config consumed by the NATS wrapper. Centralised here (instead of
|
|
26
|
+
* an inline shape in `nats-wrapper.ts`) so the transport config lives beside the
|
|
27
|
+
* other event contracts.
|
|
28
|
+
*/
|
|
29
|
+
export interface NatsWrapperConfig {
|
|
30
|
+
servers: string[] | string;
|
|
31
|
+
clientName?: string;
|
|
32
|
+
}
|
|
24
33
|
export interface Event {
|
|
25
34
|
subject: Subjects;
|
|
26
35
|
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,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;;;;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,
|
|
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
|
|
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("
|
|
7
|
-
const event_subscription_1 = require("
|
|
8
|
-
class MsgClientManager extends
|
|
9
|
-
constructor(clientId
|
|
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
|
|
26
|
-
* @param
|
|
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
|
-
*
|
|
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 =
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"msg-wrapper.js","sourceRoot":"","sources":["../../../src/events/transport/msg-wrapper.ts"],"names":[],"mappings":";;;AACA,6DAAwD;AACxD,+DAAyD;AAEzD;;;;GAIG;AACH,MAAM,UAAW,SAAQ,mCAA4C;IAEnE;QAEE,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,KAAkB,EAAE;QAE1C,oEAAoE;QACpE,IAAI,IAAI,CAAC,OAAO;YACd,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAE1B,IAAI,CAAC,OAAO,GAAG,IAAI,qCAAgB,CAAC,QAAQ,CAAC,CAAC;QAE9C,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;CACF;AAEY,QAAA,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC"}
|