@nextage/era-lib 1.0.185 → 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} +17 -4
- 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-listener.js → base/base-listener.js} +34 -10
- 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
|
@@ -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"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { EventEmitter } from '
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
2
|
import { Consumer } from 'nats';
|
|
3
3
|
import { NatsConnection } from 'nats';
|
|
4
4
|
import { JetStreamClient, JetStreamManager } from 'nats';
|
|
5
5
|
import { NxObject, NxTypeObject } from '@nextage/nx-frame-be';
|
|
6
|
-
import { MsgClientInterface, EventSubOptions } from '
|
|
6
|
+
import { MsgClientInterface, EventSubOptions } from '../interfaces';
|
|
7
7
|
export declare class NatsClientManager extends EventEmitter implements MsgClientInterface {
|
|
8
8
|
private readonly servers;
|
|
9
9
|
private readonly clientName?;
|
|
10
10
|
subs: NxTypeObject<NxTypeObject<Consumer>>;
|
|
11
|
-
private readonly opts;
|
|
12
11
|
private nc;
|
|
13
12
|
private js;
|
|
14
13
|
private jsm;
|
|
@@ -17,13 +16,13 @@ export declare class NatsClientManager extends EventEmitter implements MsgClient
|
|
|
17
16
|
get jetStream(): JetStreamClient;
|
|
18
17
|
get jetStreamManager(): JetStreamManager;
|
|
19
18
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
19
|
+
* Connect to NATS and initialise the JetStream client + manager from the
|
|
20
|
+
* `servers`/`clientName` passed at construction. No-op when no server is
|
|
21
|
+
* configured (msg-only mode), so the transport can stay optional.
|
|
23
22
|
*/
|
|
24
|
-
connect(
|
|
23
|
+
connect(): Promise<void>;
|
|
25
24
|
/**
|
|
26
|
-
*
|
|
25
|
+
* Close the NATS connection, if open.
|
|
27
26
|
*/
|
|
28
27
|
disconnect(): Promise<void>;
|
|
29
28
|
/**
|
|
@@ -39,9 +38,14 @@ export declare class NatsClientManager extends EventEmitter implements MsgClient
|
|
|
39
38
|
maxMsgs?: number;
|
|
40
39
|
}): Promise<void>;
|
|
41
40
|
/**
|
|
41
|
+
* Create (or reuse) a durable, shared-name consumer on `streamName` filtered to
|
|
42
|
+
* `subject`, load-balancing one copy of each message across service instances
|
|
43
|
+
* (work-queue). Recreates the consumer if an existing one has a stale filter.
|
|
42
44
|
*
|
|
43
|
-
* @param
|
|
44
|
-
* @param
|
|
45
|
+
* @param subject concrete subject filter
|
|
46
|
+
* @param streamName stream carrying that subject
|
|
47
|
+
* @param queueGroupName shared consumer name (durable) → work-queue group
|
|
48
|
+
* @param options optional `maxDeliver` / `ackWait` overrides
|
|
45
49
|
*/
|
|
46
50
|
subscribe(subject: string, streamName: string, queueGroupName: string, options?: EventSubOptions): Promise<Consumer>;
|
|
47
51
|
/**
|
|
@@ -64,23 +68,21 @@ export declare class NatsClientManager extends EventEmitter implements MsgClient
|
|
|
64
68
|
lookbackMs?: number;
|
|
65
69
|
}): Promise<Consumer>;
|
|
66
70
|
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
* @param {*} data
|
|
71
|
+
* Publish `payload` on `subject` via JetStream (default timeout 5s, overridable
|
|
72
|
+
* through `options`), awaiting the server ack.
|
|
70
73
|
*/
|
|
71
74
|
publish(subject: string, payload: string, options?: NxObject): Promise<void>;
|
|
72
75
|
/**
|
|
73
|
-
*
|
|
74
|
-
* @param {*} id
|
|
76
|
+
* Delete the consumer for `subject` locally and from the JetStream manager.
|
|
75
77
|
*/
|
|
76
78
|
unsubscribe(subject: string, streamName: string, queueGroupName: string): Promise<void>;
|
|
77
79
|
/**
|
|
78
|
-
*
|
|
79
|
-
* @param streamName
|
|
80
|
+
* Delete every consumer on `streamName` (best-effort, logs per-consumer errors).
|
|
80
81
|
*/
|
|
81
82
|
cleanAllConsumers(streamName: string): Promise<void>;
|
|
82
83
|
/**
|
|
83
|
-
*
|
|
84
|
+
* Delete all consumers across all streams (maintenance helper); consumers are
|
|
85
|
+
* recreated on the next app start.
|
|
84
86
|
*/
|
|
85
87
|
resetAndRecreateConsumers(): Promise<void>;
|
|
86
88
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nats-client-manager.d.ts","sourceRoot":"","sources":["../../../src/events/transport/nats-client-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAmD,aAAa,CAAC;AACxF,OAAO,EAAsB,QAAQ,EAA+B,MAAM,MAAM,CAAC;AACjF,OAAO,EAA2B,cAAc,EAAmB,MAAO,MAAM,CAAC;AACjF,OAAO,EAAiB,eAAe,EAAE,gBAAgB,EAAE,MAAe,MAAM,CAAC;AACjF,OAAO,EAAO,QAAQ,EAAE,YAAY,EAAE,MAAoC,sBAAsB,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAA4B,eAAe,CAAC;AAE1F,qBAAa,iBAAkB,SAAQ,YAAa,YAAW,kBAAkB;IAQnE,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAPxC,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAM;IAEhD,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,GAAG,CAAoB;gBAEF,OAAO,EAAM,MAAM,EAAE,GAAG,MAAM,EAC9B,UAAU,CAAC,EAAE,MAAM,YAAA;IAKhD,IAAI,UAAU,IAAI,cAAc,CAM/B;IAGD,IAAI,SAAS,IAAI,eAAe,CAM/B;IAED,IAAI,gBAAgB,IAAI,gBAAgB,CAEvC;IAED;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmC9B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQjC;;;;;;;OAOG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCzH;;;;;;;;;OASG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IAuD1H;;;;;;;;;;;;;;;OAeG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAoChH;;;OAGG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBlF;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB7F;;OAEG;IACG,iBAAiB,CAAC,UAAU,EAAE,MAAM;IAqB1C;;;OAGG;IACG,yBAAyB;CAwBhC"}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NatsClientManager = void 0;
|
|
4
|
-
const
|
|
4
|
+
const node_events_1 = require("node:events");
|
|
5
5
|
const nats_1 = require("nats");
|
|
6
6
|
const nats_2 = require("nats");
|
|
7
7
|
const nats_3 = require("nats");
|
|
8
8
|
const nx_frame_be_1 = require("@nextage/nx-frame-be");
|
|
9
|
-
class NatsClientManager extends
|
|
9
|
+
class NatsClientManager extends node_events_1.EventEmitter {
|
|
10
10
|
constructor(servers, clientName) {
|
|
11
11
|
super();
|
|
12
12
|
this.servers = servers;
|
|
13
13
|
this.clientName = clientName;
|
|
14
14
|
this.subs = {};
|
|
15
|
-
this.opts = {};
|
|
16
15
|
}
|
|
17
16
|
get connection() {
|
|
18
17
|
if (!this.nc)
|
|
@@ -29,11 +28,11 @@ class NatsClientManager extends ws_1.EventEmitter {
|
|
|
29
28
|
return this.jsm;
|
|
30
29
|
}
|
|
31
30
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
31
|
+
* Connect to NATS and initialise the JetStream client + manager from the
|
|
32
|
+
* `servers`/`clientName` passed at construction. No-op when no server is
|
|
33
|
+
* configured (msg-only mode), so the transport can stay optional.
|
|
35
34
|
*/
|
|
36
|
-
async connect(
|
|
35
|
+
async connect() {
|
|
37
36
|
if (!this.servers.length) {
|
|
38
37
|
nx_frame_be_1.APP.logger.info('📪 NATS not defined');
|
|
39
38
|
return;
|
|
@@ -63,7 +62,7 @@ class NatsClientManager extends ws_1.EventEmitter {
|
|
|
63
62
|
}
|
|
64
63
|
}
|
|
65
64
|
/**
|
|
66
|
-
*
|
|
65
|
+
* Close the NATS connection, if open.
|
|
67
66
|
*/
|
|
68
67
|
async disconnect() {
|
|
69
68
|
if (this.nc) {
|
|
@@ -111,9 +110,14 @@ class NatsClientManager extends ws_1.EventEmitter {
|
|
|
111
110
|
}
|
|
112
111
|
}
|
|
113
112
|
/**
|
|
113
|
+
* Create (or reuse) a durable, shared-name consumer on `streamName` filtered to
|
|
114
|
+
* `subject`, load-balancing one copy of each message across service instances
|
|
115
|
+
* (work-queue). Recreates the consumer if an existing one has a stale filter.
|
|
114
116
|
*
|
|
115
|
-
* @param
|
|
116
|
-
* @param
|
|
117
|
+
* @param subject concrete subject filter
|
|
118
|
+
* @param streamName stream carrying that subject
|
|
119
|
+
* @param queueGroupName shared consumer name (durable) → work-queue group
|
|
120
|
+
* @param options optional `maxDeliver` / `ackWait` overrides
|
|
117
121
|
*/
|
|
118
122
|
async subscribe(subject, streamName, queueGroupName, options) {
|
|
119
123
|
var _a;
|
|
@@ -202,9 +206,8 @@ class NatsClientManager extends ws_1.EventEmitter {
|
|
|
202
206
|
}
|
|
203
207
|
}
|
|
204
208
|
/**
|
|
205
|
-
*
|
|
206
|
-
*
|
|
207
|
-
* @param {*} data
|
|
209
|
+
* Publish `payload` on `subject` via JetStream (default timeout 5s, overridable
|
|
210
|
+
* through `options`), awaiting the server ack.
|
|
208
211
|
*/
|
|
209
212
|
async publish(subject, payload, options) {
|
|
210
213
|
try {
|
|
@@ -219,8 +222,7 @@ class NatsClientManager extends ws_1.EventEmitter {
|
|
|
219
222
|
}
|
|
220
223
|
}
|
|
221
224
|
/**
|
|
222
|
-
*
|
|
223
|
-
* @param {*} id
|
|
225
|
+
* Delete the consumer for `subject` locally and from the JetStream manager.
|
|
224
226
|
*/
|
|
225
227
|
async unsubscribe(subject, streamName, queueGroupName) {
|
|
226
228
|
try {
|
|
@@ -235,8 +237,7 @@ class NatsClientManager extends ws_1.EventEmitter {
|
|
|
235
237
|
}
|
|
236
238
|
}
|
|
237
239
|
/**
|
|
238
|
-
*
|
|
239
|
-
* @param streamName
|
|
240
|
+
* Delete every consumer on `streamName` (best-effort, logs per-consumer errors).
|
|
240
241
|
*/
|
|
241
242
|
async cleanAllConsumers(streamName) {
|
|
242
243
|
try {
|
|
@@ -257,7 +258,8 @@ class NatsClientManager extends ws_1.EventEmitter {
|
|
|
257
258
|
}
|
|
258
259
|
}
|
|
259
260
|
/**
|
|
260
|
-
*
|
|
261
|
+
* Delete all consumers across all streams (maintenance helper); consumers are
|
|
262
|
+
* recreated on the next app start.
|
|
261
263
|
*/
|
|
262
264
|
async resetAndRecreateConsumers() {
|
|
263
265
|
try {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nats-client-manager.js","sourceRoot":"","sources":["../../../src/events/transport/nats-client-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { NatsClientManager } from './nats-client-manager';
|
|
2
|
+
import { ClientWrapper } from './base-client-wrapper';
|
|
3
|
+
import { NatsWrapperConfig } from '../interfaces';
|
|
4
|
+
/**
|
|
5
|
+
* NATS JetStream wrapper. Durable inter-service delivery: exposes the concrete
|
|
6
|
+
* {@link NatsClientManager} so callers reach transport-specific methods
|
|
7
|
+
* (`createStream`, `subscribeBroadcast`, …).
|
|
8
|
+
*/
|
|
9
|
+
declare class NatsWrapper extends ClientWrapper<NatsClientManager, NatsWrapperConfig> {
|
|
10
|
+
constructor();
|
|
11
|
+
connect({ servers, clientName }: NatsWrapperConfig): Promise<void>;
|
|
12
|
+
disconnect(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
export declare const natsWrapper: NatsWrapper;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=nats-wrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nats-wrapper.d.ts","sourceRoot":"","sources":["../../../src/events/transport/nats-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAU,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD;;;;GAIG;AACH,cAAM,WAAY,SAAQ,aAAa,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;;IAQrE,OAAO,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAazD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAI3C;AAED,eAAO,MAAM,WAAW,aAAoB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.natsWrapper = void 0;
|
|
4
|
+
const nats_client_manager_1 = require("./nats-client-manager");
|
|
5
|
+
const base_client_wrapper_1 = require("./base-client-wrapper");
|
|
6
|
+
/**
|
|
7
|
+
* NATS JetStream wrapper. Durable inter-service delivery: exposes the concrete
|
|
8
|
+
* {@link NatsClientManager} so callers reach transport-specific methods
|
|
9
|
+
* (`createStream`, `subscribeBroadcast`, …).
|
|
10
|
+
*/
|
|
11
|
+
class NatsWrapper extends base_client_wrapper_1.ClientWrapper {
|
|
12
|
+
constructor() {
|
|
13
|
+
super('NATS');
|
|
14
|
+
}
|
|
15
|
+
// Connessione a NATS + JetStream
|
|
16
|
+
async connect({ servers, clientName }) {
|
|
17
|
+
// Reconnect guard: close a previous connection before replacing it, so we
|
|
18
|
+
// never orphan a live NATS connection.
|
|
19
|
+
if (this._client)
|
|
20
|
+
await this.disconnect();
|
|
21
|
+
this._client = new nats_client_manager_1.NatsClientManager(servers, clientName);
|
|
22
|
+
await this._client.connect();
|
|
23
|
+
}
|
|
24
|
+
// Disconnessione pulita
|
|
25
|
+
async disconnect() {
|
|
26
|
+
await this._client?.disconnect();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.natsWrapper = new NatsWrapper();
|
|
30
|
+
//# sourceMappingURL=nats-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nats-wrapper.js","sourceRoot":"","sources":["../../../src/events/transport/nats-wrapper.ts"],"names":[],"mappings":";;;AAAA,+DAA0D;AAC1D,+DAA0D;AAG1D;;;;GAIG;AACH,MAAM,WAAY,SAAQ,mCAAmD;IAE3E;QAEE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED,iCAAiC;IACjC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,UAAU,EAAqB;QAEtD,0EAA0E;QAC1E,uCAAuC;QACvC,IAAI,IAAI,CAAC,OAAO;YACd,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAE1B,IAAI,CAAC,OAAO,GAAG,IAAI,uCAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAE1D,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED,wBAAwB;IACf,KAAK,CAAC,UAAU;QAEvB,MAAM,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;IACnC,CAAC;CACF;AAEY,QAAA,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
|
package/build/interfaces.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { BaseDBItem, BaseUser, ModelCrudEventType, NxTypeObject } from '@nextage/nx-frame-be';
|
|
2
2
|
import { SecurityLogLevel, UserCrudEventType } from './enums';
|
|
3
3
|
export type NxCallback<T> = (err: Error | null, res?: T) => void;
|
|
4
|
+
/**
|
|
5
|
+
* Payload recorded by the security logger for an auditable event.
|
|
6
|
+
*/
|
|
4
7
|
export interface SecurityLogData {
|
|
5
8
|
userId: string;
|
|
6
9
|
module: string;
|
|
@@ -13,11 +16,18 @@ export interface EmailResult {
|
|
|
13
16
|
success: boolean;
|
|
14
17
|
statusCode?: number;
|
|
15
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Base shape for a versioned MongoDB entity with a plain-string `name`.
|
|
21
|
+
*/
|
|
16
22
|
export interface BaseEntity extends BaseDBItem {
|
|
17
23
|
code?: string;
|
|
18
24
|
name?: string;
|
|
19
25
|
version?: number;
|
|
20
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Base shape for a versioned MongoDB entity whose `name`/`description` are
|
|
29
|
+
* internationalised (per-language map or plain string).
|
|
30
|
+
*/
|
|
21
31
|
export interface BaseI18nEntity extends BaseDBItem {
|
|
22
32
|
code?: string;
|
|
23
33
|
name?: NxTypeObject<string> | string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAyB,SAAS,CAAC;AAEjF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,CAAA;AAEhE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAI,MAAM,CAAC;IACjB,MAAM,EAAI,MAAM,CAAC;IACjB,MAAM,EAAI,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAI,gBAAgB,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAG,MAAM,CAAC;IACpB,OAAO,EAAM,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAW,SAAQ,UAAU;IAC5C,IAAI,CAAC,EAAK,MAAM,CAAC;IACjB,IAAI,CAAC,EAAK,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,IAAI,CAAC,EAAS,MAAM,CAAC;IACrB,IAAI,CAAC,EAAS,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAC5C,WAAW,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAC5C,OAAO,CAAC,EAAM,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAM,MAAM,CAAC;IACnB,IAAI,EAAQ,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAK,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAW,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAa,MAAM,CAAC;IACxB,MAAM,CAAC,EAAU,MAAM,CAAC;IACxB,MAAM,CAAC,EAAU,MAAM,CAAC;IACxB,MAAM,CAAC,EAAU,MAAM,CAAC;IACxB,OAAO,CAAC,EAAS,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAG,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAW,QAAQ,CAAC;IACzB,OAAO,CAAC,EAAQ,GAAG,CAAC;IACpB,OAAO,CAAC,EAAQ,kBAAkB,GAAG,iBAAiB,CAAC;IACvD,SAAS,CAAC,EAAM,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAyB,SAAS,CAAC;AAEjF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,CAAA;AAEhE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAI,MAAM,CAAC;IACjB,MAAM,EAAI,MAAM,CAAC;IACjB,MAAM,EAAI,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAI,gBAAgB,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAG,MAAM,CAAC;IACpB,OAAO,EAAM,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,UAAU;IAC5C,IAAI,CAAC,EAAK,MAAM,CAAC;IACjB,IAAI,CAAC,EAAK,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,IAAI,CAAC,EAAS,MAAM,CAAC;IACrB,IAAI,CAAC,EAAS,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAC5C,WAAW,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAC5C,OAAO,CAAC,EAAM,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAM,MAAM,CAAC;IACnB,IAAI,EAAQ,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAK,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAW,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAa,MAAM,CAAC;IACxB,MAAM,CAAC,EAAU,MAAM,CAAC;IACxB,MAAM,CAAC,EAAU,MAAM,CAAC;IACxB,MAAM,CAAC,EAAU,MAAM,CAAC;IACxB,OAAO,CAAC,EAAS,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAG,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAW,QAAQ,CAAC;IACzB,OAAO,CAAC,EAAQ,GAAG,CAAC;IACpB,OAAO,CAAC,EAAQ,kBAAkB,GAAG,iBAAiB,CAAC;IACvD,SAAS,CAAC,EAAM,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -3,9 +3,11 @@ import { Result, Schema, ValidationError } from 'express-validator';
|
|
|
3
3
|
import { DefaultSchemaKeys } from 'express-validator/lib/middlewares/schema';
|
|
4
4
|
export declare const idSchema: Schema<DefaultSchemaKeys>;
|
|
5
5
|
/**
|
|
6
|
+
* Formats express-validator errors into the app's standard error result.
|
|
6
7
|
*
|
|
7
|
-
* @param
|
|
8
|
-
* @returns
|
|
8
|
+
* @param errors the express-validator result set
|
|
9
|
+
* @returns an {@link ExpressErrorResult} carrying the offending fields plus the
|
|
10
|
+
* `INCORRECT_DATA` response code
|
|
9
11
|
*/
|
|
10
12
|
export declare function formatErrors(errors: Result<ValidationError>): ExpressErrorResult;
|
|
11
13
|
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/routes/validators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAmB,sBAAsB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAoB,0CAA0C,CAAC;AAG3F,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,iBAAiB,CAE9C,CAAC;AAIF
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/routes/validators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAmB,sBAAsB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAoB,0CAA0C,CAAC;AAG3F,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,iBAAiB,CAE9C,CAAC;AAIF;;;;;;GAMG;AACF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,kBAAkB,CAGjF"}
|
|
@@ -7,9 +7,11 @@ exports.idSchema = {
|
|
|
7
7
|
id: { in: ['body', 'params', 'query'], isMongoId: true }
|
|
8
8
|
};
|
|
9
9
|
/**
|
|
10
|
+
* Formats express-validator errors into the app's standard error result.
|
|
10
11
|
*
|
|
11
|
-
* @param
|
|
12
|
-
* @returns
|
|
12
|
+
* @param errors the express-validator result set
|
|
13
|
+
* @returns an {@link ExpressErrorResult} carrying the offending fields plus the
|
|
14
|
+
* `INCORRECT_DATA` response code
|
|
13
15
|
*/
|
|
14
16
|
function formatErrors(errors) {
|
|
15
17
|
return { result: Object.assign({ fields: errors.array().map((e) => e.params) }, constants_1.RES_CODE.INCORRECT_DATA) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/routes/validators.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/routes/validators.ts"],"names":[],"mappings":";;;AAmBC,oCAGA;AAlBD,4CAA+D;AAElD,QAAA,QAAQ,GAA8B;IACjD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE;CACzD,CAAC;AAIF;;;;;;GAMG;AACF,SAAgB,YAAY,CAAC,MAA+B;IAE3D,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,oBAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;AAClH,CAAC"}
|
|
@@ -1,5 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Password hashing helper (scrypt with a per-password random salt).
|
|
3
|
+
*
|
|
4
|
+
* Stored form is `<hashHex>.<saltHex>`; {@link Password.compare} re-derives the
|
|
5
|
+
* hash with the embedded salt to verify a candidate.
|
|
6
|
+
*/
|
|
1
7
|
export declare class Password {
|
|
8
|
+
/**
|
|
9
|
+
* Hashes a plaintext password with a fresh random salt.
|
|
10
|
+
*
|
|
11
|
+
* @param password the plaintext password
|
|
12
|
+
* @returns the stored representation `<hashHex>.<saltHex>`
|
|
13
|
+
*/
|
|
2
14
|
static toHash(password: string): Promise<string>;
|
|
15
|
+
/**
|
|
16
|
+
* Verifies a candidate password against a stored `<hash>.<salt>` value.
|
|
17
|
+
*
|
|
18
|
+
* @param storedPassword the stored `<hashHex>.<saltHex>` value
|
|
19
|
+
* @param suppliedPassword the plaintext candidate to check
|
|
20
|
+
* @returns `true` when the candidate matches
|
|
21
|
+
*/
|
|
3
22
|
static compare(storedPassword: string, suppliedPassword: string): Promise<boolean>;
|
|
4
23
|
}
|
|
5
24
|
//# sourceMappingURL=password.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../src/services/password.ts"],"names":[],"mappings":"AAKA,qBAAa,QAAQ;
|
|
1
|
+
{"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../src/services/password.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,qBAAa,QAAQ;IAEnB;;;;;OAKG;WACU,MAAM,CAAC,QAAQ,EAAE,MAAM;IAQpC;;;;;;OAMG;WACU,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;CAMtE"}
|
|
@@ -4,12 +4,31 @@ exports.Password = void 0;
|
|
|
4
4
|
const crypto_1 = require("crypto");
|
|
5
5
|
const util_1 = require("util");
|
|
6
6
|
const scriptAsync = (0, util_1.promisify)(crypto_1.scrypt);
|
|
7
|
+
/**
|
|
8
|
+
* Password hashing helper (scrypt with a per-password random salt).
|
|
9
|
+
*
|
|
10
|
+
* Stored form is `<hashHex>.<saltHex>`; {@link Password.compare} re-derives the
|
|
11
|
+
* hash with the embedded salt to verify a candidate.
|
|
12
|
+
*/
|
|
7
13
|
class Password {
|
|
14
|
+
/**
|
|
15
|
+
* Hashes a plaintext password with a fresh random salt.
|
|
16
|
+
*
|
|
17
|
+
* @param password the plaintext password
|
|
18
|
+
* @returns the stored representation `<hashHex>.<saltHex>`
|
|
19
|
+
*/
|
|
8
20
|
static async toHash(password) {
|
|
9
21
|
const salt = (0, crypto_1.randomBytes)(8).toString('hex');
|
|
10
22
|
const buf = (await scriptAsync(password, salt, 64));
|
|
11
23
|
return `${buf.toString('hex')}.${salt}`;
|
|
12
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Verifies a candidate password against a stored `<hash>.<salt>` value.
|
|
27
|
+
*
|
|
28
|
+
* @param storedPassword the stored `<hashHex>.<saltHex>` value
|
|
29
|
+
* @param suppliedPassword the plaintext candidate to check
|
|
30
|
+
* @returns `true` when the candidate matches
|
|
31
|
+
*/
|
|
13
32
|
static async compare(storedPassword, suppliedPassword) {
|
|
14
33
|
const [hashedPassword, salt] = storedPassword.split('.');
|
|
15
34
|
const buf = (await scriptAsync(suppliedPassword, salt, 64));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password.js","sourceRoot":"","sources":["../../src/services/password.ts"],"names":[],"mappings":";;;AAAA,mCAA6C;AAC7C,+BAA2C;AAE3C,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAC,eAAM,CAAC,CAAC;AAEtC,MAAa,QAAQ;IAEnB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAgB;QAElC,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAI,CAAC,MAAM,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAW,CAAC;QAE/D,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAsB,EAAE,gBAAwB;QACnE,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzD,MAAM,GAAG,GAAsB,CAAC,MAAM,WAAW,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAW,CAAC;QAEzF,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC;IAChD,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"password.js","sourceRoot":"","sources":["../../src/services/password.ts"],"names":[],"mappings":";;;AAAA,mCAA6C;AAC7C,+BAA2C;AAE3C,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAC,eAAM,CAAC,CAAC;AAEtC;;;;;GAKG;AACH,MAAa,QAAQ;IAEnB;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAgB;QAElC,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAI,CAAC,MAAM,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAW,CAAC;QAE/D,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAsB,EAAE,gBAAwB;QACnE,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzD,MAAM,GAAG,GAAsB,CAAC,MAAM,WAAW,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAW,CAAC;QAEzF,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC;IAChD,CAAC;CACF;AA7BD,4BA6BC"}
|