@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 @@
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 'ws';
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 './interfaces';
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,21 @@ export declare class NatsClientManager extends EventEmitter implements MsgClient
17
16
  get jetStream(): JetStreamClient;
18
17
  get jetStreamManager(): JetStreamManager;
19
18
  /**
20
- *
21
- * @param servers
22
- * @returns
19
+ * Durable consumer name for a `(queueGroupName, subject)` pair. Shared by
20
+ * `subscribe`/`unsubscribe` so both sides resolve the SAME name (the subject is
21
+ * sanitised into the name because NATS consumer names cannot contain `.`/`*`/`>`).
23
22
  */
24
- connect(servers?: string[]): Promise<void>;
23
+ private consumerNameFor;
24
+ /** Local `subs` map key for a consumer on a stream. */
25
+ private subKey;
25
26
  /**
26
- *
27
+ * Connect to NATS and initialise the JetStream client + manager from the
28
+ * `servers`/`clientName` passed at construction. No-op when no server is
29
+ * configured (msg-only mode), so the transport can stay optional.
30
+ */
31
+ connect(): Promise<void>;
32
+ /**
33
+ * Close the NATS connection, if open.
27
34
  */
28
35
  disconnect(): Promise<void>;
29
36
  /**
@@ -39,9 +46,14 @@ export declare class NatsClientManager extends EventEmitter implements MsgClient
39
46
  maxMsgs?: number;
40
47
  }): Promise<void>;
41
48
  /**
49
+ * Create (or reuse) a durable, shared-name consumer on `streamName` filtered to
50
+ * `subject`, load-balancing one copy of each message across service instances
51
+ * (work-queue). Recreates the consumer if an existing one has a stale filter.
42
52
  *
43
- * @param {*} key
44
- * @param {*} method
53
+ * @param subject concrete subject filter
54
+ * @param streamName stream carrying that subject
55
+ * @param queueGroupName shared consumer name (durable) → work-queue group
56
+ * @param options optional `maxDeliver` / `ackWait` overrides
45
57
  */
46
58
  subscribe(subject: string, streamName: string, queueGroupName: string, options?: EventSubOptions): Promise<Consumer>;
47
59
  /**
@@ -64,23 +76,24 @@ export declare class NatsClientManager extends EventEmitter implements MsgClient
64
76
  lookbackMs?: number;
65
77
  }): Promise<Consumer>;
66
78
  /**
67
- *
68
- * @param {*} key
69
- * @param {*} data
79
+ * Publish `payload` on `subject` via JetStream (default timeout 5s, overridable
80
+ * through `options`), awaiting the server ack.
70
81
  */
71
82
  publish(subject: string, payload: string, options?: NxObject): Promise<void>;
72
83
  /**
73
- *
74
- * @param {*} id
84
+ * Delete the consumer for `subject` locally and from the JetStream manager. The
85
+ * durable consumer name is recomputed from `(subject, queueGroupName)` so it
86
+ * matches the one created by {@link subscribe} (both the local `subs` key and
87
+ * the JSM consumer name).
75
88
  */
76
89
  unsubscribe(subject: string, streamName: string, queueGroupName: string): Promise<void>;
77
90
  /**
78
- *
79
- * @param streamName
91
+ * Delete every consumer on `streamName` (best-effort, logs per-consumer errors).
80
92
  */
81
93
  cleanAllConsumers(streamName: string): Promise<void>;
82
94
  /**
83
- *
95
+ * Delete all consumers across all streams (maintenance helper); consumers are
96
+ * recreated on the next app start.
84
97
  */
85
98
  resetAndRecreateConsumers(): Promise<void>;
86
99
  }
@@ -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;AAM1F,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;IACH,OAAO,CAAC,eAAe;IAKvB,uDAAuD;IACvD,OAAO,CAAC,MAAM;IAKd;;;;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;;;;;OAKG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB7F;;OAEG;IACG,iBAAiB,CAAC,UAAU,EAAE,MAAM;IAqB1C;;;OAGG;IACG,yBAAyB;CAwBhC"}
@@ -1,18 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NatsClientManager = void 0;
4
- const ws_1 = require("ws");
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 ws_1.EventEmitter {
9
+ const transport_constants_1 = require("../types/transport.constants");
10
+ const transport_constants_2 = require("../types/transport.constants");
11
+ const transport_constants_3 = require("../types/transport.constants");
12
+ const transport_constants_4 = require("../types/transport.constants");
13
+ class NatsClientManager extends node_events_1.EventEmitter {
10
14
  constructor(servers, clientName) {
11
15
  super();
12
16
  this.servers = servers;
13
17
  this.clientName = clientName;
14
18
  this.subs = {};
15
- this.opts = {};
16
19
  }
17
20
  get connection() {
18
21
  if (!this.nc)
@@ -29,11 +32,23 @@ class NatsClientManager extends ws_1.EventEmitter {
29
32
  return this.jsm;
30
33
  }
31
34
  /**
32
- *
33
- * @param servers
34
- * @returns
35
+ * Durable consumer name for a `(queueGroupName, subject)` pair. Shared by
36
+ * `subscribe`/`unsubscribe` so both sides resolve the SAME name (the subject is
37
+ * sanitised into the name because NATS consumer names cannot contain `.`/`*`/`>`).
38
+ */
39
+ consumerNameFor(subject, queueGroupName) {
40
+ return `${queueGroupName}_${subject.replace(/[.*>]/g, '_')}`;
41
+ }
42
+ /** Local `subs` map key for a consumer on a stream. */
43
+ subKey(streamName, consumerName) {
44
+ return `${streamName}.${consumerName}`;
45
+ }
46
+ /**
47
+ * Connect to NATS and initialise the JetStream client + manager from the
48
+ * `servers`/`clientName` passed at construction. No-op when no server is
49
+ * configured (msg-only mode), so the transport can stay optional.
35
50
  */
36
- async connect(servers = ['nats://localhost:4222']) {
51
+ async connect() {
37
52
  if (!this.servers.length) {
38
53
  nx_frame_be_1.APP.logger.info('📪 NATS not defined');
39
54
  return;
@@ -41,10 +56,10 @@ class NatsClientManager extends ws_1.EventEmitter {
41
56
  try {
42
57
  this.nc = await (0, nats_1.connect)({
43
58
  servers: this.servers,
44
- name: this.clientName ?? 'nx-nats-client',
59
+ name: this.clientName ?? transport_constants_1.DEFAULT_NATS_CLIENT_NAME,
45
60
  reconnect: true,
46
- maxReconnectAttempts: 10,
47
- reconnectTimeWait: 2000
61
+ maxReconnectAttempts: transport_constants_1.DEFAULT_NATS_MAX_RECONNECT_ATTEMPTS,
62
+ reconnectTimeWait: transport_constants_2.DEFAULT_NATS_RECONNECT_TIME_WAIT_MS
48
63
  });
49
64
  this.js = this.nc.jetstream();
50
65
  this.jsm = await this.nc.jetstreamManager();
@@ -63,7 +78,7 @@ class NatsClientManager extends ws_1.EventEmitter {
63
78
  }
64
79
  }
65
80
  /**
66
- *
81
+ * Close the NATS connection, if open.
67
82
  */
68
83
  async disconnect() {
69
84
  if (this.nc) {
@@ -80,8 +95,8 @@ class NatsClientManager extends ws_1.EventEmitter {
80
95
  * survive long enough to be inspected and replayed.
81
96
  */
82
97
  async createStream(streamName, subjects, opts) {
83
- const maxAgeNs = (opts?.maxAgeMs ?? 24 * 60 * 60 * 1000) * 1000000; // ms → nanoseconds
84
- const maxMsgs = opts?.maxMsgs ?? 1000;
98
+ const maxAgeNs = (opts?.maxAgeMs ?? transport_constants_2.DEFAULT_STREAM_MAX_AGE_MS) * transport_constants_4.NS_PER_MS; // ms → nanoseconds
99
+ const maxMsgs = opts?.maxMsgs ?? transport_constants_3.DEFAULT_STREAM_MAX_MSGS;
85
100
  try {
86
101
  await this.jsm.streams.add({
87
102
  name: streamName,
@@ -111,15 +126,20 @@ class NatsClientManager extends ws_1.EventEmitter {
111
126
  }
112
127
  }
113
128
  /**
129
+ * Create (or reuse) a durable, shared-name consumer on `streamName` filtered to
130
+ * `subject`, load-balancing one copy of each message across service instances
131
+ * (work-queue). Recreates the consumer if an existing one has a stale filter.
114
132
  *
115
- * @param {*} key
116
- * @param {*} method
133
+ * @param subject concrete subject filter
134
+ * @param streamName stream carrying that subject
135
+ * @param queueGroupName shared consumer name (durable) → work-queue group
136
+ * @param options optional `maxDeliver` / `ackWait` overrides
117
137
  */
118
138
  async subscribe(subject, streamName, queueGroupName, options) {
119
139
  var _a;
120
140
  // Crea consumer se non esiste
121
141
  try {
122
- const consumerName = `${queueGroupName}_${subject.replace(/[.*>]/g, '_')}`;
142
+ const consumerName = this.consumerNameFor(subject, queueGroupName);
123
143
  const consumerConfig = {
124
144
  name: consumerName,
125
145
  durable_name: consumerName,
@@ -149,7 +169,7 @@ class NatsClientManager extends ws_1.EventEmitter {
149
169
  // Ottieni il consumer per il consumo dei messaggi
150
170
  const consumer = await this.js.consumers.get(streamName, consumerName);
151
171
  (_a = this.subs)[subject] ?? (_a[subject] = {});
152
- this.subs[subject][`${streamName}.${consumerName}`] = consumer;
172
+ this.subs[subject][this.subKey(streamName, consumerName)] = consumer;
153
173
  nx_frame_be_1.APP.logger.info(`👂 Listening on '${subject}' with consumer '${consumerName}'`);
154
174
  return consumer;
155
175
  }
@@ -184,7 +204,7 @@ class NatsClientManager extends ws_1.EventEmitter {
184
204
  name: consumerName,
185
205
  ack_policy: nats_1.AckPolicy.Explicit,
186
206
  filter_subject: subject,
187
- inactive_threshold: 5 * 60 * 1000000000, // 5 min in ns → auto-reap when the instance dies
207
+ inactive_threshold: transport_constants_4.BROADCAST_CONSUMER_INACTIVE_MS * transport_constants_4.NS_PER_MS, // auto-reap when the instance dies
188
208
  ...(lookbackMs > 0
189
209
  ? { deliver_policy: nats_3.DeliverPolicy.StartTime, opt_start_time: new Date(Date.now() - lookbackMs).toISOString() }
190
210
  : { deliver_policy: nats_3.DeliverPolicy.New }),
@@ -202,13 +222,12 @@ class NatsClientManager extends ws_1.EventEmitter {
202
222
  }
203
223
  }
204
224
  /**
205
- *
206
- * @param {*} key
207
- * @param {*} data
225
+ * Publish `payload` on `subject` via JetStream (default timeout 5s, overridable
226
+ * through `options`), awaiting the server ack.
208
227
  */
209
228
  async publish(subject, payload, options) {
210
229
  try {
211
- const defaultOptions = { timeout: 5000 };
230
+ const defaultOptions = { timeout: transport_constants_3.DEFAULT_PUBLISH_TIMEOUT_MS };
212
231
  const publishOptions = { ...defaultOptions, ...options };
213
232
  const ack = await this.js.publish(subject, payload, publishOptions);
214
233
  nx_frame_be_1.APP.logger.info(`📤 Published event on [${subject}]: message: ${payload.substring(0, 30)}, stream: ${ack.stream}, seq: ${ack.seq}`);
@@ -219,24 +238,26 @@ class NatsClientManager extends ws_1.EventEmitter {
219
238
  }
220
239
  }
221
240
  /**
222
- *
223
- * @param {*} id
241
+ * Delete the consumer for `subject` locally and from the JetStream manager. The
242
+ * durable consumer name is recomputed from `(subject, queueGroupName)` so it
243
+ * matches the one created by {@link subscribe} (both the local `subs` key and
244
+ * the JSM consumer name).
224
245
  */
225
246
  async unsubscribe(subject, streamName, queueGroupName) {
247
+ const consumerName = this.consumerNameFor(subject, queueGroupName);
226
248
  try {
227
249
  // delete consumer reference from stack
228
- delete this.subs[subject][`${streamName}.${queueGroupName}`];
229
- // delete consumer form jetstream manager
230
- await this.jsm.consumers.delete(streamName, queueGroupName);
231
- nx_frame_be_1.APP.logger.info(`🛑 Stopped and deleted consumer '${queueGroupName}' for '${subject}'`);
250
+ delete this.subs[subject]?.[this.subKey(streamName, consumerName)];
251
+ // delete consumer from jetstream manager
252
+ await this.jsm.consumers.delete(streamName, consumerName);
253
+ nx_frame_be_1.APP.logger.info(`🛑 Stopped and deleted consumer '${consumerName}' for '${subject}'`);
232
254
  }
233
255
  catch (error) {
234
256
  nx_frame_be_1.APP.logger.info(`🛑 Stopped listening on '${subject}' (consumer may have been already deleted)`);
235
257
  }
236
258
  }
237
259
  /**
238
- *
239
- * @param streamName
260
+ * Delete every consumer on `streamName` (best-effort, logs per-consumer errors).
240
261
  */
241
262
  async cleanAllConsumers(streamName) {
242
263
  try {
@@ -257,7 +278,8 @@ class NatsClientManager extends ws_1.EventEmitter {
257
278
  }
258
279
  }
259
280
  /**
260
- *
281
+ * Delete all consumers across all streams (maintenance helper); consumers are
282
+ * recreated on the next app start.
261
283
  */
262
284
  async resetAndRecreateConsumers() {
263
285
  try {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-client-manager.js","sourceRoot":"","sources":["../../../src/events/transport/nats-client-manager.ts"],"names":[],"mappings":";;;AAAA,6CAAwF;AACxF,+BAAiF;AACjF,+BAAiF;AACjF,+BAAiF;AACjF,sDAAiG;AAEjG,sEAA6G;AAC7G,sEAA8G;AAC9G,sEAA6G;AAC7G,sEAA6G;AAE7G,MAAa,iBAAkB,SAAQ,0BAAY;IAQjD,YAA6B,OAA8B,EAC9B,UAAmB;QAE9C,KAAK,EAAE,CAAC;QAHmB,YAAO,GAAP,OAAO,CAAuB;QAC9B,eAAU,GAAV,UAAU,CAAS;QAPhD,SAAI,GAAyC,EAAE,CAAC;IAUhD,CAAC;IAED,IAAI,UAAU;QAEZ,IAAI,CAAC,IAAI,CAAC,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAEjE,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAEC,6BAA6B;IAC/B,IAAI,SAAS;QAEX,IAAI,CAAC,IAAI,CAAC,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAEtD,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACK,eAAe,CAAC,OAAe,EAAE,cAAsB;QAE7D,OAAO,GAAG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED,uDAAuD;IAC/C,MAAM,CAAC,UAAkB,EAAE,YAAoB;QAErD,OAAO,GAAG,UAAU,IAAI,YAAY,EAAE,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO;QAEX,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAEzB,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,GAAG,MAAM,IAAA,cAAO,EAAC;gBACtB,OAAO,EAAe,IAAI,CAAC,OAAO;gBAClC,IAAI,EAAkB,IAAI,CAAC,UAAU,IAAI,8CAAwB;gBACjE,SAAS,EAAa,IAAI;gBAC1B,oBAAoB,EAAE,yDAAmC;gBACzD,iBAAiB,EAAK,yDAAmC;aAC1D,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,GAAI,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC;YAE5C,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAEzE,uBAAuB;YACvB,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC5B,IAAI,GAAG;oBAAE,iBAAG,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;;oBAC9D,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YAEb,iBAAG,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;YACxE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QAEd,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YACtB,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAAC,UAAkB,EAAE,QAAkB,EAAE,IAA8C;QAEvG,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,+CAAyB,CAAC,GAAG,+BAAS,CAAC,CAAC,mBAAmB;QAC/F,MAAM,OAAO,GAAI,IAAI,EAAE,OAAO,IAAI,6CAAuB,CAAC;QAE1D,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;gBACzB,IAAI,EAAO,UAAU;gBACrB,QAAQ;gBACR,SAAS,EAAE,sBAAe,CAAC,MAAM;gBACjC,OAAO,EAAI,QAAQ;gBACnB,QAAQ,EAAG,OAAO;gBAClB,OAAO,EAAI,kBAAW,CAAC,IAAI;aAC5B,CAAC,CAAC;YACH,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,UAAU,mBAAmB,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,4BAA4B,CAAC,EAAE,CAAC;gBAG1D,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,UAAU,kBAAkB,CAAC,CAAC;gBAE5D,2CAA2C;gBAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE;oBACxC,QAAQ;oBACR,OAAO,EAAE,QAAQ;oBACjB,QAAQ,EAAE,OAAO;iBAClB,CAAC,CAAC;gBAEH,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,UAAU,WAAW,CAAC,CAAC;YACvD,CAAC;iBAEI,CAAC;gBACJ,iBAAG,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,UAAU,IAAI,EAAE,KAAK,CAAC,CAAC;gBACtE,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE,UAAkB,EAAE,cAAsB,EAAE,OAAyB;;QAEpG,8BAA8B;QAC9B,IAAI,CAAC;YAEH,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACnE,MAAM,cAAc,GAA4B;gBAC9C,IAAI,EAAY,YAAY;gBAC5B,YAAY,EAAI,YAAY;gBAC5B,cAAc,EAAE,oBAAa,CAAC,GAAG;gBACjC,UAAU,EAAM,gBAAS,CAAC,QAAQ;gBAClC,WAAW,EAAK,OAAO,EAAE,UAAU;gBACnC,QAAQ,EAAQ,OAAO,EAAE,OAAO;gBAChC,cAAc,EAAE,OAAO;aACxB,CAAC;YAEF,wCAAwC;YACxC,IAAI,CAAC;gBAEH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;gBAE7E,IAAI,YAAY,CAAC,MAAM,CAAC,cAAc,KAAK,OAAO,EAAE,CAAC;oBAEnD,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,YAAY,mCAAmC,CAAC,CAAC;oBACjF,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;oBAC1D,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;gBAC3D,CAAC;qBACI,CAAC;oBACJ,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,YAAY,sCAAsC,CAAC,CAAC;oBACpF,+FAA+F;gBACjG,CAAC;YACH,CAAC;YACD,OAAO,KAAK,EAAE,CAAC;gBAEb,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,cAAc,iBAAiB,UAAU,GAAG,CAAC,CAAC;gBACvF,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YAC3D,CAAC;YAED,kDAAkD;YAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YAEvE,MAAA,IAAI,CAAC,IAAI,EAAC,OAAO,SAAP,OAAO,IAAM,EAAE,EAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,GAAG,QAAQ,CAAC;YAErE,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,OAAO,oBAAoB,YAAY,GAAG,CAAC,CAAC;YAEhF,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YAEb,iBAAG,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,OAAO,IAAI,EAAE,KAAK,CAAC,CAAC;YACxE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,kBAAkB,CAAC,OAAe,EAAE,UAAkB,EAAE,IAA8B;;QAE1F,IAAI,CAAC;YAEH,MAAM,MAAM,GAAS,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAChF,MAAM,YAAY,GAAG,aAAa,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;YAC7E,MAAM,UAAU,GAAK,IAAI,EAAE,UAAU,IAAI,CAAC,CAAC;YAE3C,MAAM,cAAc,GAA4B;gBAC9C,IAAI,EAAgB,YAAY;gBAChC,UAAU,EAAU,gBAAS,CAAC,QAAQ;gBACtC,cAAc,EAAM,OAAO;gBAC3B,kBAAkB,EAAE,oDAA8B,GAAG,+BAAS,EAAE,mCAAmC;gBACnG,GAAG,CAAC,UAAU,GAAG,CAAC;oBAChB,CAAC,CAAC,EAAE,cAAc,EAAE,oBAAa,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE;oBAC9G,CAAC,CAAC,EAAE,cAAc,EAAE,oBAAa,CAAC,GAAG,EAAE,CAAC;aAC3C,CAAC;YAEF,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YAEzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YAEvE,MAAA,IAAI,CAAC,IAAI,EAAC,OAAO,SAAP,OAAO,IAAM,EAAE,EAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,UAAU,IAAI,YAAY,EAAE,CAAC,GAAG,QAAQ,CAAC;YAE/D,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,OAAO,8BAA8B,YAAY,GAAG,CAAC,CAAC;YAEpG,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YAEb,iBAAG,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,OAAO,IAAI,EAAE,KAAK,CAAC,CAAC;YAClF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,OAAe,EAAE,OAAkB;QAEhE,IAAI,CAAC;YAEH,MAAM,cAAc,GAAqC,EAAE,OAAO,EAAE,gDAA0B,EAAE,CAAC;YACjG,MAAM,cAAc,GAAqC,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAA6B,CAAC;YAEtH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAC/B,OAAO,EACP,OAAO,EACP,cAAc,CACf,CAAC;YAEF,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,OAAO,eAAe,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,CAAC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACtI,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YAEb,iBAAG,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,OAAO,OAAO,EAAE,KAAK,CAAC,CAAC;YACnE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,UAAkB,EAAE,cAAsB;QAE3E,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAEnE,IAAI,CAAC;YAEH,uCAAuC;YACvC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;YACnE,yCAAyC;YACzC,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YAC1D,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,YAAY,UAAU,OAAO,GAAG,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YAEb,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,OAAO,4CAA4C,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,UAAkB;QAExC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YAEnE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBAEjC,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAC3D,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;gBAC7D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,iBAAG,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,QAAQ,CAAC,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;YAED,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,UAAU,GAAG,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iBAAG,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,yBAAyB;QAE7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YAErD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAE7B,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACtC,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,UAAU,EAAE,CAAC,CAAC;gBAEvD,2BAA2B;gBAC3B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;gBACnE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACjC,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAC3D,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;YAED,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACb,iBAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF;AA/WD,8CA+WC"}
@@ -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"}
@@ -17,6 +17,7 @@ export * from './dlq.constants';
17
17
  export * from './event-envelope.constants';
18
18
  export * from './relay.constants';
19
19
  export * from './revocation.constants';
20
+ export * from './transport.constants';
20
21
  export * from './asset.interfaces';
21
22
  export * from './control.interfaces';
22
23
  export * from './dlq.interfaces';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/events/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAExB,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AAEvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/events/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAExB,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,kBAAkB,CAAC"}
@@ -33,6 +33,7 @@ __exportStar(require("./dlq.constants"), exports);
33
33
  __exportStar(require("./event-envelope.constants"), exports);
34
34
  __exportStar(require("./relay.constants"), exports);
35
35
  __exportStar(require("./revocation.constants"), exports);
36
+ __exportStar(require("./transport.constants"), exports);
36
37
  __exportStar(require("./asset.interfaces"), exports);
37
38
  __exportStar(require("./control.interfaces"), exports);
38
39
  __exportStar(require("./dlq.interfaces"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/events/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AAExB,wDAAsC;AACtC,gDAA8B;AAC9B,sDAAoC;AACpC,wDAAsC;AACtC,uDAAqC;AACrC,kDAAgC;AAChC,4DAA0C;AAC1C,iDAA+B;AAC/B,uDAAqC;AACrC,wDAAsC;AACtC,iDAA+B;AAC/B,oDAAkC;AAClC,wDAAsC;AAEtC,oDAAkC;AAClC,kDAAgC;AAChC,6DAA2C;AAC3C,oDAAkC;AAClC,yDAAuC;AAEvC,qDAAmC;AACnC,uDAAqC;AACrC,mDAAiC;AACjC,8DAA4C;AAC5C,sDAAoC;AACpC,sDAAoC;AACpC,qDAAmC;AACnC,0DAAwC;AACxC,6DAA2C;AAC3C,sDAAoC;AACpC,6DAA2C;AAE3C,YAAY;AACZ,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/events/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AAExB,wDAAsC;AACtC,gDAA8B;AAC9B,sDAAoC;AACpC,wDAAsC;AACtC,uDAAqC;AACrC,kDAAgC;AAChC,4DAA0C;AAC1C,iDAA+B;AAC/B,uDAAqC;AACrC,wDAAsC;AACtC,iDAA+B;AAC/B,oDAAkC;AAClC,wDAAsC;AAEtC,oDAAkC;AAClC,kDAAgC;AAChC,6DAA2C;AAC3C,oDAAkC;AAClC,yDAAuC;AACvC,wDAAsC;AAEtC,qDAAmC;AACnC,uDAAqC;AACrC,mDAAiC;AACjC,8DAA4C;AAC5C,sDAAoC;AACpC,sDAAoC;AACpC,qDAAmC;AACnC,0DAAwC;AACxC,6DAA2C;AAC3C,sDAAoC;AACpC,6DAA2C;AAE3C,YAAY;AACZ,mDAAiC"}
@@ -0,0 +1,18 @@
1
+ /** Fallback client name when the service does not pass one. */
2
+ export declare const DEFAULT_NATS_CLIENT_NAME = "nx-nats-client";
3
+ /** Reconnection policy for the NATS connection. */
4
+ export declare const DEFAULT_NATS_MAX_RECONNECT_ATTEMPTS = 10;
5
+ export declare const DEFAULT_NATS_RECONNECT_TIME_WAIT_MS = 2000;
6
+ /** Default stream retention when no override is passed to `createStream`. */
7
+ export declare const DEFAULT_STREAM_MAX_AGE_MS: number;
8
+ export declare const DEFAULT_STREAM_MAX_MSGS = 1000;
9
+ /** Default JetStream publish ack timeout. */
10
+ export declare const DEFAULT_PUBLISH_TIMEOUT_MS = 5000;
11
+ /**
12
+ * Idle window after which the server auto-reaps an ephemeral broadcast consumer
13
+ * (the instance died). Kept in ms here; converted to ns at the call site.
14
+ */
15
+ export declare const BROADCAST_CONSUMER_INACTIVE_MS: number;
16
+ /** Nanoseconds per millisecond — JetStream durations are expressed in ns. */
17
+ export declare const NS_PER_MS = 1000000;
18
+ //# sourceMappingURL=transport.constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.constants.d.ts","sourceRoot":"","sources":["../../../src/events/types/transport.constants.ts"],"names":[],"mappings":"AAGA,+DAA+D;AAC/D,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AAEzD,mDAAmD;AACnD,eAAO,MAAM,mCAAmC,KAAK,CAAC;AACtD,eAAO,MAAM,mCAAmC,OAAQ,CAAC;AAEzD,6EAA6E;AAC7E,eAAO,MAAM,yBAAyB,QAAuB,CAAC;AAC9D,eAAO,MAAM,uBAAuB,OAAU,CAAC;AAE/C,6CAA6C;AAC7C,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,8BAA8B,QAAiB,CAAC;AAE7D,6EAA6E;AAC7E,eAAO,MAAM,SAAS,UAAY,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ // NATS transport tuning defaults, extracted from the client manager so the
3
+ // magic numbers live in one documented place.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.NS_PER_MS = exports.BROADCAST_CONSUMER_INACTIVE_MS = exports.DEFAULT_PUBLISH_TIMEOUT_MS = exports.DEFAULT_STREAM_MAX_MSGS = exports.DEFAULT_STREAM_MAX_AGE_MS = exports.DEFAULT_NATS_RECONNECT_TIME_WAIT_MS = exports.DEFAULT_NATS_MAX_RECONNECT_ATTEMPTS = exports.DEFAULT_NATS_CLIENT_NAME = void 0;
6
+ /** Fallback client name when the service does not pass one. */
7
+ exports.DEFAULT_NATS_CLIENT_NAME = 'nx-nats-client';
8
+ /** Reconnection policy for the NATS connection. */
9
+ exports.DEFAULT_NATS_MAX_RECONNECT_ATTEMPTS = 10;
10
+ exports.DEFAULT_NATS_RECONNECT_TIME_WAIT_MS = 2000;
11
+ /** Default stream retention when no override is passed to `createStream`. */
12
+ exports.DEFAULT_STREAM_MAX_AGE_MS = 24 * 60 * 60 * 1000; // 24h
13
+ exports.DEFAULT_STREAM_MAX_MSGS = 1000;
14
+ /** Default JetStream publish ack timeout. */
15
+ exports.DEFAULT_PUBLISH_TIMEOUT_MS = 5000;
16
+ /**
17
+ * Idle window after which the server auto-reaps an ephemeral broadcast consumer
18
+ * (the instance died). Kept in ms here; converted to ns at the call site.
19
+ */
20
+ exports.BROADCAST_CONSUMER_INACTIVE_MS = 5 * 60 * 1000; // 5min
21
+ /** Nanoseconds per millisecond — JetStream durations are expressed in ns. */
22
+ exports.NS_PER_MS = 1000000;
23
+ //# sourceMappingURL=transport.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.constants.js","sourceRoot":"","sources":["../../../src/events/types/transport.constants.ts"],"names":[],"mappings":";AAAA,2EAA2E;AAC3E,8CAA8C;;;AAE9C,+DAA+D;AAClD,QAAA,wBAAwB,GAAG,gBAAgB,CAAC;AAEzD,mDAAmD;AACtC,QAAA,mCAAmC,GAAG,EAAE,CAAC;AACzC,QAAA,mCAAmC,GAAG,IAAK,CAAC;AAEzD,6EAA6E;AAChE,QAAA,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAK,CAAC,CAAC,MAAM;AACxD,QAAA,uBAAuB,GAAK,IAAK,CAAC;AAE/C,6CAA6C;AAChC,QAAA,0BAA0B,GAAG,IAAK,CAAC;AAEhD;;;GAGG;AACU,QAAA,8BAA8B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAK,CAAC,CAAC,OAAO;AAErE,6EAA6E;AAChE,QAAA,SAAS,GAAG,OAAS,CAAC"}
@@ -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 {*} errors
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;;;;GAIG;AACF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,kBAAkB,CAGjF"}
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 {*} errors
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":";;;AAiBC,oCAGA;AAhBD,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;;;;GAIG;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
+ {"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;WAEN,MAAM,CAAC,QAAQ,EAAE,MAAM;WAQvB,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;CAMtE"}
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;AAhBD,4BAgBC"}
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"}