@nextage/era-lib 1.0.170 → 1.0.172
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/events/base-nats-listener.d.ts +35 -2
- package/build/events/base-nats-listener.d.ts.map +1 -1
- package/build/events/base-nats-listener.js +93 -18
- package/build/events/base-nats-listener.js.map +1 -1
- package/build/events/dlq.d.ts +23 -0
- package/build/events/dlq.d.ts.map +1 -0
- package/build/events/dlq.js +16 -0
- package/build/events/dlq.js.map +1 -0
- package/build/events/event-message.d.ts.map +1 -1
- package/build/events/event-message.js +2 -1
- package/build/events/event-message.js.map +1 -1
- package/build/events/index.d.ts +1 -0
- package/build/events/index.d.ts.map +1 -1
- package/build/events/index.js +1 -0
- package/build/events/index.js.map +1 -1
- package/build/events/nats-client-manager.d.ts +7 -1
- package/build/events/nats-client-manager.d.ts.map +1 -1
- package/build/events/nats-client-manager.js +10 -5
- package/build/events/nats-client-manager.js.map +1 -1
- package/build/utils/env.constants.js +1 -1
- package/build/utils/env.constants.js.map +1 -1
- package/build/utils/functs.d.ts.map +1 -1
- package/build/utils/functs.js +5 -1
- package/build/utils/functs.js.map +1 -1
- package/build/utils/index.d.ts +2 -0
- package/build/utils/index.d.ts.map +1 -1
- package/build/utils/index.js +2 -0
- package/build/utils/index.js.map +1 -1
- package/build/utils/jwt.constants.d.ts +33 -0
- package/build/utils/jwt.constants.d.ts.map +1 -1
- package/build/utils/jwt.constants.js +34 -1
- package/build/utils/jwt.constants.js.map +1 -1
- package/build/utils/jwt.d.ts +19 -12
- package/build/utils/jwt.d.ts.map +1 -1
- package/build/utils/jwt.interfaces.d.ts +23 -0
- package/build/utils/jwt.interfaces.d.ts.map +1 -0
- package/build/utils/jwt.interfaces.js +10 -0
- package/build/utils/jwt.interfaces.js.map +1 -0
- package/build/utils/jwt.js +60 -9
- package/build/utils/jwt.js.map +1 -1
- package/build/utils/start-service.constants.d.ts +20 -0
- package/build/utils/start-service.constants.d.ts.map +1 -0
- package/build/utils/start-service.constants.js +23 -0
- package/build/utils/start-service.constants.js.map +1 -0
- package/build/utils/start-service.d.ts.map +1 -1
- package/build/utils/start-service.js +22 -1
- package/build/utils/start-service.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,6 +9,7 @@ export declare abstract class NatsListener<T extends Event> {
|
|
|
9
9
|
private isListening;
|
|
10
10
|
protected ackWait: number;
|
|
11
11
|
protected maxDeliver: number;
|
|
12
|
+
protected nakBackoffMs: number[];
|
|
12
13
|
abstract onMessage(data: T['data'], msg: JsMsg): Promise<void>;
|
|
13
14
|
constructor(client: MsgClientInterface);
|
|
14
15
|
/**
|
|
@@ -21,15 +22,47 @@ export declare abstract class NatsListener<T extends Event> {
|
|
|
21
22
|
*/
|
|
22
23
|
listen(): Promise<void>;
|
|
23
24
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
25
|
+
* Consume loop. Owns the message iteration and lifecycle; the per-message
|
|
26
|
+
* ack/nak/term decision lives in `handleMessage` so it can be unit-tested in
|
|
27
|
+
* isolation and so subclasses never have to ack again (that was E6).
|
|
26
28
|
*/
|
|
27
29
|
private processMessages;
|
|
30
|
+
/**
|
|
31
|
+
* Processes a single message with durable failure handling:
|
|
32
|
+
* - success → `ack()`
|
|
33
|
+
* - failure, retriable → `nak(backoff)` (redelivery until maxDeliver)
|
|
34
|
+
* - failure, exhausted → park on DLQ then `term()` (drop from source stream)
|
|
35
|
+
*
|
|
36
|
+
* If the DLQ publish itself fails we deliberately fall back to `nak()` rather
|
|
37
|
+
* than `term()`, so an unreachable DLQ never causes silent message loss.
|
|
38
|
+
*/
|
|
39
|
+
protected handleMessage(msg: JsMsg): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Parks a failed message on the DLQ stream. Returns `true` on success so the
|
|
42
|
+
* caller can safely `term()` the original; returns `false` if the DLQ could
|
|
43
|
+
* not be reached (caller must then keep the message via `nak`).
|
|
44
|
+
*/
|
|
45
|
+
protected sendToDeadLetter(msg: JsMsg, error: unknown): Promise<boolean>;
|
|
28
46
|
/**
|
|
29
47
|
*
|
|
30
48
|
* @returns
|
|
31
49
|
*/
|
|
32
50
|
stop(): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Current delivery attempt (1 on first delivery). Defaults to 1 when the
|
|
53
|
+
* transport does not expose `info` (e.g. tests with a minimal mock).
|
|
54
|
+
*/
|
|
55
|
+
private deliveryCount;
|
|
56
|
+
/**
|
|
57
|
+
* Backoff (ms) for the given attempt, clamped to the last table entry.
|
|
58
|
+
*/
|
|
59
|
+
private backoffFor;
|
|
60
|
+
/**
|
|
61
|
+
*
|
|
62
|
+
* @param msg
|
|
63
|
+
* @returns
|
|
64
|
+
*/
|
|
65
|
+
private decode;
|
|
33
66
|
/**
|
|
34
67
|
*
|
|
35
68
|
* @param msg
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-nats-listener.d.ts","sourceRoot":"","sources":["../../src/events/base-nats-listener.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"base-nats-listener.d.ts","sourceRoot":"","sources":["../../src/events/base-nats-listener.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE1E,OAAO,EAAY,KAAK,EAAE,MAAiC,MAAM,CAAC;AAElE,8BAAsB,YAAY,CAAC,CAAC,SAAS,KAAK;IAqBnC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAnBpC,QAAQ,CAAC,OAAO,EAAS,CAAC,CAAC,SAAS,CAAC,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAM,MAAM,CAAC;IAEhC,OAAO,CAAC,QAAQ,CAAC,CAAiB;IAClC,OAAO,CAAC,WAAW,CAAsB;IAEzC,SAAS,CAAC,OAAO,EAAQ,MAAM,CAAuB;IACtD,SAAS,CAAC,UAAU,EAAK,MAAM,CAAK;IAMpC,SAAS,CAAC,YAAY,EAAG,MAAM,EAAE,CAAuB;IAGxD,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;gBAEhC,MAAM,EAAE,kBAAkB;IAExD;;;OAGG;IACH,mBAAmB,IAAI,eAAe;IAKtC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB7B;;;;OAIG;YACW,eAAe;IAqB7B;;;;;;;;OAQG;cACa,aAAa,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCxD;;;;OAIG;cACa,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAyB9E;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAKrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAMlB;;;;OAIG;IACH,OAAO,CAAC,MAAM;IAKd;;;;OAIG;IACH,OAAO,CAAC,YAAY;CAYrB"}
|
|
@@ -2,12 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NatsListener = void 0;
|
|
4
4
|
const nx_frame_be_1 = require("@nextage/nx-frame-be");
|
|
5
|
+
const dlq_1 = require("./dlq");
|
|
5
6
|
class NatsListener {
|
|
6
7
|
constructor(client) {
|
|
7
8
|
this.client = client;
|
|
8
9
|
this.isListening = false;
|
|
9
10
|
this.ackWait = 30 * 1000 * 1000000; // 30 secondi in nanosecondi;
|
|
10
11
|
this.maxDeliver = 3;
|
|
12
|
+
// Redelivery backoff (ms) indexed by delivery attempt. Bounded well under
|
|
13
|
+
// `ackWait` so a nak never races the ack-wait expiry. The last entry is
|
|
14
|
+
// reused if attempts ever exceed the table (defensive; cannot happen with
|
|
15
|
+
// maxDeliver = 3).
|
|
16
|
+
this.nakBackoffMs = [1000, 5000, 15000];
|
|
11
17
|
}
|
|
12
18
|
/**
|
|
13
19
|
*
|
|
@@ -29,13 +35,14 @@ class NatsListener {
|
|
|
29
35
|
this.processMessages();
|
|
30
36
|
}
|
|
31
37
|
catch (error) {
|
|
32
|
-
|
|
38
|
+
nx_frame_be_1.APP.logger.error(`❌ Failed to setup consumer for '${this.subject}': %o`, error);
|
|
33
39
|
throw error;
|
|
34
40
|
}
|
|
35
41
|
}
|
|
36
42
|
/**
|
|
37
|
-
*
|
|
38
|
-
*
|
|
43
|
+
* Consume loop. Owns the message iteration and lifecycle; the per-message
|
|
44
|
+
* ack/nak/term decision lives in `handleMessage` so it can be unit-tested in
|
|
45
|
+
* isolation and so subclasses never have to ack again (that was E6).
|
|
39
46
|
*/
|
|
40
47
|
async processMessages() {
|
|
41
48
|
if (!this.consumer)
|
|
@@ -45,27 +52,74 @@ class NatsListener {
|
|
|
45
52
|
for await (const msg of messages) {
|
|
46
53
|
if (!this.isListening)
|
|
47
54
|
break;
|
|
48
|
-
|
|
49
|
-
nx_frame_be_1.APP.logger.info(`📥 Received message on '${this.subject}'`);
|
|
50
|
-
const parsedData = this.parseMessage(msg);
|
|
51
|
-
await this.onMessage(parsedData.data, msg);
|
|
52
|
-
msg.ack();
|
|
53
|
-
nx_frame_be_1.APP.logger.info(`✅ Message acknowledged on '${this.subject}'`);
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
console.error(`❌ Error processing message on '${this.subject}':`, error);
|
|
57
|
-
msg.nak();
|
|
58
|
-
}
|
|
55
|
+
await this.handleMessage(msg);
|
|
59
56
|
}
|
|
60
57
|
}
|
|
61
58
|
catch (error) {
|
|
62
59
|
if (this.isListening) {
|
|
63
|
-
|
|
60
|
+
nx_frame_be_1.APP.logger.error(`❌ Consumer error on '${this.subject}': %o`, error);
|
|
64
61
|
// Riprova dopo un breve delay
|
|
65
62
|
setTimeout(() => this.processMessages(), 5000);
|
|
66
63
|
}
|
|
67
64
|
}
|
|
68
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Processes a single message with durable failure handling:
|
|
68
|
+
* - success → `ack()`
|
|
69
|
+
* - failure, retriable → `nak(backoff)` (redelivery until maxDeliver)
|
|
70
|
+
* - failure, exhausted → park on DLQ then `term()` (drop from source stream)
|
|
71
|
+
*
|
|
72
|
+
* If the DLQ publish itself fails we deliberately fall back to `nak()` rather
|
|
73
|
+
* than `term()`, so an unreachable DLQ never causes silent message loss.
|
|
74
|
+
*/
|
|
75
|
+
async handleMessage(msg) {
|
|
76
|
+
try {
|
|
77
|
+
nx_frame_be_1.APP.logger.info(`📥 Received message on '${this.subject}'`);
|
|
78
|
+
const parsed = this.parseMessage(msg);
|
|
79
|
+
await this.onMessage(parsed.data, msg);
|
|
80
|
+
msg.ack();
|
|
81
|
+
nx_frame_be_1.APP.logger.info(`✅ Message acknowledged on '${this.subject}'`);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
const deliveries = this.deliveryCount(msg);
|
|
85
|
+
nx_frame_be_1.APP.logger.error(`❌ Error processing '${this.subject}' (delivery ${deliveries}/${this.maxDeliver}): %o`, error);
|
|
86
|
+
if (deliveries >= this.maxDeliver) {
|
|
87
|
+
const parked = await this.sendToDeadLetter(msg, error);
|
|
88
|
+
if (parked)
|
|
89
|
+
msg.term();
|
|
90
|
+
else
|
|
91
|
+
msg.nak(this.backoffFor(deliveries)); // could not park → retry, never lose
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
msg.nak(this.backoffFor(deliveries));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Parks a failed message on the DLQ stream. Returns `true` on success so the
|
|
100
|
+
* caller can safely `term()` the original; returns `false` if the DLQ could
|
|
101
|
+
* not be reached (caller must then keep the message via `nak`).
|
|
102
|
+
*/
|
|
103
|
+
async sendToDeadLetter(msg, error) {
|
|
104
|
+
const envelope = {
|
|
105
|
+
originalSubject: this.subject,
|
|
106
|
+
streamName: this.streamName,
|
|
107
|
+
queueGroupName: this.queueGroupName,
|
|
108
|
+
redeliveryCount: this.deliveryCount(msg),
|
|
109
|
+
error: error instanceof Error ? error.message : String(error),
|
|
110
|
+
data: this.decode(msg),
|
|
111
|
+
timestamp: new Date().toISOString(),
|
|
112
|
+
};
|
|
113
|
+
try {
|
|
114
|
+
await this.client.publish(`${dlq_1.DLQ_SUBJECT_PREFIX}${this.subject}`, JSON.stringify(envelope));
|
|
115
|
+
nx_frame_be_1.APP.logger.warn(`☠️ Message dead-lettered from '${this.subject}' after ${envelope.redeliveryCount} deliveries`);
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
catch (dlqError) {
|
|
119
|
+
nx_frame_be_1.APP.logger.error(`❌ Failed to dead-letter message from '${this.subject}': %o`, dlqError);
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
69
123
|
/**
|
|
70
124
|
*
|
|
71
125
|
* @returns
|
|
@@ -82,6 +136,28 @@ class NatsListener {
|
|
|
82
136
|
nx_frame_be_1.APP.logger.info(`🛑 Stopped listening on '${this.subject}' (consumer may have been already deleted)`);
|
|
83
137
|
}
|
|
84
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Current delivery attempt (1 on first delivery). Defaults to 1 when the
|
|
141
|
+
* transport does not expose `info` (e.g. tests with a minimal mock).
|
|
142
|
+
*/
|
|
143
|
+
deliveryCount(msg) {
|
|
144
|
+
return msg.info?.redeliveryCount ?? 1;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Backoff (ms) for the given attempt, clamped to the last table entry.
|
|
148
|
+
*/
|
|
149
|
+
backoffFor(deliveries) {
|
|
150
|
+
const idx = Math.min(Math.max(deliveries - 1, 0), this.nakBackoffMs.length - 1);
|
|
151
|
+
return this.nakBackoffMs[idx];
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
*
|
|
155
|
+
* @param msg
|
|
156
|
+
* @returns
|
|
157
|
+
*/
|
|
158
|
+
decode(msg) {
|
|
159
|
+
return new TextDecoder().decode(msg.data);
|
|
160
|
+
}
|
|
85
161
|
/**
|
|
86
162
|
*
|
|
87
163
|
* @param msg
|
|
@@ -89,11 +165,10 @@ class NatsListener {
|
|
|
89
165
|
*/
|
|
90
166
|
parseMessage(msg) {
|
|
91
167
|
try {
|
|
92
|
-
|
|
93
|
-
return JSON.parse(decoded);
|
|
168
|
+
return JSON.parse(this.decode(msg));
|
|
94
169
|
}
|
|
95
170
|
catch (error) {
|
|
96
|
-
|
|
171
|
+
nx_frame_be_1.APP.logger.error(`❌ Failed to parse message on '${this.subject}': %o`, error);
|
|
97
172
|
throw new Error('Invalid message format');
|
|
98
173
|
}
|
|
99
174
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-nats-listener.js","sourceRoot":"","sources":["../../src/events/base-nats-listener.ts"],"names":[],"mappings":";;;AAAA,sDAAkF;
|
|
1
|
+
{"version":3,"file":"base-nats-listener.js","sourceRoot":"","sources":["../../src/events/base-nats-listener.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dead-letter queue (DLQ) constants shared between the NATS transport layer
|
|
3
|
+
* (base listener that parks poison/failed messages) and the app bootstrap that
|
|
4
|
+
* provisions the DLQ stream. Keeping them in one place prevents the producer
|
|
5
|
+
* (`NatsListener.sendToDeadLetter`) and the stream config from drifting apart.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DLQ_STREAM = "DLQ_EVENTS";
|
|
8
|
+
export declare const DLQ_SUBJECT_PREFIX = "dlq.";
|
|
9
|
+
export declare const DLQ_SUBJECT_FILTER = "dlq.>";
|
|
10
|
+
/**
|
|
11
|
+
* Envelope stored on the DLQ stream. Carries enough context to diagnose the
|
|
12
|
+
* failure and, later (step 3.9), to replay the original message.
|
|
13
|
+
*/
|
|
14
|
+
export interface DeadLetterEnvelope {
|
|
15
|
+
originalSubject: string;
|
|
16
|
+
streamName: string;
|
|
17
|
+
queueGroupName: string;
|
|
18
|
+
redeliveryCount: number;
|
|
19
|
+
error: string;
|
|
20
|
+
data: string;
|
|
21
|
+
timestamp: string;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=dlq.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dlq.d.ts","sourceRoot":"","sources":["../../src/events/dlq.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,eAAO,MAAM,UAAU,eAAe,CAAC;AAGvC,eAAO,MAAM,kBAAkB,SAAS,CAAC;AAGzC,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAO,MAAM,CAAC;IACxB,cAAc,EAAG,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAY,MAAM,CAAC;IACxB,IAAI,EAAa,MAAM,CAAC;IACxB,SAAS,EAAQ,MAAM,CAAC;CACzB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dead-letter queue (DLQ) constants shared between the NATS transport layer
|
|
4
|
+
* (base listener that parks poison/failed messages) and the app bootstrap that
|
|
5
|
+
* provisions the DLQ stream. Keeping them in one place prevents the producer
|
|
6
|
+
* (`NatsListener.sendToDeadLetter`) and the stream config from drifting apart.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.DLQ_SUBJECT_FILTER = exports.DLQ_SUBJECT_PREFIX = exports.DLQ_STREAM = void 0;
|
|
10
|
+
// JetStream stream that durably retains dead-lettered messages.
|
|
11
|
+
exports.DLQ_STREAM = 'DLQ_EVENTS';
|
|
12
|
+
// Subject prefix; a failed message on `<subject>` is parked on `dlq.<subject>`.
|
|
13
|
+
exports.DLQ_SUBJECT_PREFIX = 'dlq.';
|
|
14
|
+
// Wildcard filter that binds every `dlq.*` subject to the DLQ stream.
|
|
15
|
+
exports.DLQ_SUBJECT_FILTER = 'dlq.>';
|
|
16
|
+
//# sourceMappingURL=dlq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dlq.js","sourceRoot":"","sources":["../../src/events/dlq.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,gEAAgE;AACnD,QAAA,UAAU,GAAG,YAAY,CAAC;AAEvC,gFAAgF;AACnE,QAAA,kBAAkB,GAAG,MAAM,CAAC;AAEzC,sEAAsE;AACzD,QAAA,kBAAkB,GAAG,OAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-message.d.ts","sourceRoot":"","sources":["../../src/events/event-message.ts"],"names":[],"mappings":"AAAA,qBAAa,OAAO;IAElB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;gBAEd,IAAI,EAAE,GAAG;IAKtB,OAAO,IAAI,GAAG;IAId,GAAG,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"event-message.d.ts","sourceRoot":"","sources":["../../src/events/event-message.ts"],"names":[],"mappings":"AAAA,qBAAa,OAAO;IAElB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;gBAEd,IAAI,EAAE,GAAG;IAKtB,OAAO,IAAI,GAAG;IAId,GAAG,IAAI,IAAI;CAKZ"}
|
|
@@ -9,7 +9,8 @@ class Message {
|
|
|
9
9
|
return this.data;
|
|
10
10
|
}
|
|
11
11
|
ack() {
|
|
12
|
-
|
|
12
|
+
// No-op: the in-memory transport is fire-and-forget (no delivery guarantee).
|
|
13
|
+
// Durable ack/nak/DLQ semantics live in the NATS transport (NatsListener).
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
16
|
exports.Message = Message;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-message.js","sourceRoot":"","sources":["../../src/events/event-message.ts"],"names":[],"mappings":";;;AAAA,MAAa,OAAO;IAIlB,YAAa,IAAS;QAEpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,GAAG;QAED,
|
|
1
|
+
{"version":3,"file":"event-message.js","sourceRoot":"","sources":["../../src/events/event-message.ts"],"names":[],"mappings":";;;AAAA,MAAa,OAAO;IAIlB,YAAa,IAAS;QAEpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,GAAG;QAED,6EAA6E;QAC7E,2EAA2E;IAC7E,CAAC;CACF;AAlBD,0BAkBC"}
|
package/build/events/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AAExB,cAAc,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AAExB,cAAc,yBAAyB,CAAC;AAExC,cAAc,OAAO,CAAC;AAGtB,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AAGvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAGhC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
|
package/build/events/index.js
CHANGED
|
@@ -18,6 +18,7 @@ __exportStar(require("./types/enums"), exports);
|
|
|
18
18
|
__exportStar(require("./interfaces"), exports);
|
|
19
19
|
__exportStar(require("./types"), exports);
|
|
20
20
|
__exportStar(require("./base-event.controller"), exports);
|
|
21
|
+
__exportStar(require("./dlq"), exports);
|
|
21
22
|
// messages on memory
|
|
22
23
|
__exportStar(require("./msg-client-manager"), exports);
|
|
23
24
|
__exportStar(require("./msg-wrapper"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,+CAA6B;AAC7B,0CAAwB;AAExB,0DAAwC;AAExC,qBAAqB;AACrB,uDAAqC;AACrC,gDAA8B;AAC9B,kDAAgC;AAChC,mDAAiC;AAEjC,mBAAmB;AACnB,wDAAsC;AACtC,iDAA+B;AAC/B,uDAAqC;AACrC,wDAAsC;AAEtC,YAAY;AACZ,iDAA+B;AAC/B,yCAAuB;AAEvB,aAAa;AACb,kDAAgC;AAChC,gDAA8B;AAC9B,6CAA2B;AAC3B,mDAAiC;AACjC,iDAA+B;AAC/B,4CAA0B;AAC1B,sDAAoC;AACpC,2CAAyB;AACzB,kDAAgC;AAEhC,cAAc;AACd,4CAA0B;AAC1B,kDAAgC;AAChC,oDAAkC;AAClC,qDAAmC;AACnC,qDAAmC;AACnC,oDAAkC;AAClC,iDAA+B;AAC/B,mDAAiC;AAEjC,oBAAoB;AACpB,kDAAgC;AAChC,+CAA6B;AAE7B,kBAAkB;AAClB,mCAAmC;AAEnC,cAAc"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,+CAA6B;AAC7B,0CAAwB;AAExB,0DAAwC;AAExC,wCAAsB;AAEtB,qBAAqB;AACrB,uDAAqC;AACrC,gDAA8B;AAC9B,kDAAgC;AAChC,mDAAiC;AAEjC,mBAAmB;AACnB,wDAAsC;AACtC,iDAA+B;AAC/B,uDAAqC;AACrC,wDAAsC;AAEtC,YAAY;AACZ,iDAA+B;AAC/B,yCAAuB;AAEvB,aAAa;AACb,kDAAgC;AAChC,gDAA8B;AAC9B,6CAA2B;AAC3B,mDAAiC;AACjC,iDAA+B;AAC/B,4CAA0B;AAC1B,sDAAoC;AACpC,2CAAyB;AACzB,kDAAgC;AAEhC,cAAc;AACd,4CAA0B;AAC1B,kDAAgC;AAChC,oDAAkC;AAClC,qDAAmC;AACnC,qDAAmC;AACnC,oDAAkC;AAClC,iDAA+B;AAC/B,mDAAiC;AAEjC,oBAAoB;AACpB,kDAAgC;AAChC,+CAA6B;AAE7B,kBAAkB;AAClB,mCAAmC;AAEnC,cAAc"}
|
|
@@ -30,8 +30,14 @@ export declare class NatsClientManager extends EventEmitter implements MsgClient
|
|
|
30
30
|
*
|
|
31
31
|
* @param streamName
|
|
32
32
|
* @param subjects
|
|
33
|
+
* @param opts optional retention overrides (defaults: 24h / 1000 msgs).
|
|
34
|
+
* The DLQ stream uses a longer retention so parked messages
|
|
35
|
+
* survive long enough to be inspected and replayed.
|
|
33
36
|
*/
|
|
34
|
-
createStream(streamName: string, subjects: string[]
|
|
37
|
+
createStream(streamName: string, subjects: string[], opts?: {
|
|
38
|
+
maxAgeMs?: number;
|
|
39
|
+
maxMsgs?: number;
|
|
40
|
+
}): Promise<void>;
|
|
35
41
|
/**
|
|
36
42
|
*
|
|
37
43
|
* @param {*} key
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nats-client-manager.d.ts","sourceRoot":"","sources":["../../src/events/nats-client-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAmD,IAAI,CAAC;AAC/E,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,cAAc,CAAC;AAEzF,qBAAa,iBAAkB,SAAQ,YAAa,YAAW,kBAAkB;IAWnE,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAVxC,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAM;IAEhD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IAGrC,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,CAAC,OAAO,GAAE,MAAM,EAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC3E;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQjC
|
|
1
|
+
{"version":3,"file":"nats-client-manager.d.ts","sourceRoot":"","sources":["../../src/events/nats-client-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAmD,IAAI,CAAC;AAC/E,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,cAAc,CAAC;AAEzF,qBAAa,iBAAkB,SAAQ,YAAa,YAAW,kBAAkB;IAWnE,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAVxC,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAM;IAEhD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IAGrC,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,CAAC,OAAO,GAAE,MAAM,EAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC3E;;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;;;;OAIG;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;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBlF;;;OAGG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB7F;;;OAGG;IACG,iBAAiB,CAAC,UAAU,EAAE,MAAM;IAqB1C;;OAEG;IACG,yBAAyB;CAwBhC"}
|
|
@@ -75,15 +75,20 @@ class NatsClientManager extends ws_1.EventEmitter {
|
|
|
75
75
|
*
|
|
76
76
|
* @param streamName
|
|
77
77
|
* @param subjects
|
|
78
|
+
* @param opts optional retention overrides (defaults: 24h / 1000 msgs).
|
|
79
|
+
* The DLQ stream uses a longer retention so parked messages
|
|
80
|
+
* survive long enough to be inspected and replayed.
|
|
78
81
|
*/
|
|
79
|
-
async createStream(streamName, subjects) {
|
|
82
|
+
async createStream(streamName, subjects, opts) {
|
|
83
|
+
const maxAgeNs = (opts?.maxAgeMs ?? 24 * 60 * 60 * 1000) * 1000000; // ms → nanoseconds
|
|
84
|
+
const maxMsgs = opts?.maxMsgs ?? 1000;
|
|
80
85
|
try {
|
|
81
86
|
await this.jsm.streams.add({
|
|
82
87
|
name: streamName,
|
|
83
88
|
subjects,
|
|
84
89
|
retention: nats_2.RetentionPolicy.Limits,
|
|
85
|
-
max_age:
|
|
86
|
-
max_msgs:
|
|
90
|
+
max_age: maxAgeNs,
|
|
91
|
+
max_msgs: maxMsgs,
|
|
87
92
|
storage: nats_1.StorageType.File,
|
|
88
93
|
});
|
|
89
94
|
nx_frame_be_1.APP.logger.info(`✅ Stream '${streamName}' created/updated`);
|
|
@@ -94,8 +99,8 @@ class NatsClientManager extends ws_1.EventEmitter {
|
|
|
94
99
|
// UPDATE: ora aggiorni realmente lo stream
|
|
95
100
|
await this.jsm.streams.update(streamName, {
|
|
96
101
|
subjects,
|
|
97
|
-
max_age:
|
|
98
|
-
max_msgs:
|
|
102
|
+
max_age: maxAgeNs,
|
|
103
|
+
max_msgs: maxMsgs
|
|
99
104
|
});
|
|
100
105
|
nx_frame_be_1.APP.logger.info(`🔄 Stream '${streamName}' updated`);
|
|
101
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nats-client-manager.js","sourceRoot":"","sources":["../../src/events/nats-client-manager.ts"],"names":[],"mappings":";;;AAAA,2BAA+E;AAC/E,+BAAiF;AACjF,+BAAiF;AACjF,+BAAiF;AACjF,sDAAiG;AAGjG,MAAa,iBAAkB,SAAQ,iBAAY;IAWjD,YAA6B,OAA8B,EAC9B,UAAmB;QAE9C,KAAK,EAAE,CAAC;QAHmB,YAAO,GAAP,OAAO,CAAuB;QAC9B,eAAU,GAAV,UAAU,CAAS;QAVhD,SAAI,GAAyC,EAAE,CAAC;QAE/B,SAAI,GAAa,EAAE,CAAC;IAWrC,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;IACH,KAAK,CAAC,OAAO,CAAC,UAAoB,CAAC,uBAAuB,CAAC;QAEzD,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,gBAAgB;gBACzD,SAAS,EAAa,IAAI;gBAC1B,oBAAoB,EAAE,EAAE;gBACxB,iBAAiB,EAAK,IAAI;aAC3B,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
|
|
1
|
+
{"version":3,"file":"nats-client-manager.js","sourceRoot":"","sources":["../../src/events/nats-client-manager.ts"],"names":[],"mappings":";;;AAAA,2BAA+E;AAC/E,+BAAiF;AACjF,+BAAiF;AACjF,+BAAiF;AACjF,sDAAiG;AAGjG,MAAa,iBAAkB,SAAQ,iBAAY;IAWjD,YAA6B,OAA8B,EAC9B,UAAmB;QAE9C,KAAK,EAAE,CAAC;QAHmB,YAAO,GAAP,OAAO,CAAuB;QAC9B,eAAU,GAAV,UAAU,CAAS;QAVhD,SAAI,GAAyC,EAAE,CAAC;QAE/B,SAAI,GAAa,EAAE,CAAC;IAWrC,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;IACH,KAAK,CAAC,OAAO,CAAC,UAAoB,CAAC,uBAAuB,CAAC;QAEzD,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,gBAAgB;gBACzD,SAAS,EAAa,IAAI;gBAC1B,oBAAoB,EAAE,EAAE;gBACxB,iBAAiB,EAAK,IAAI;aAC3B,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,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,mBAAmB;QACvF,MAAM,OAAO,GAAI,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;QAEvC,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;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE,UAAkB,EAAE,cAAsB,EAAE,OAAyB;;QAEpG,8BAA8B;QAC9B,IAAI,CAAC;YAEH,MAAM,YAAY,GAAG,GAAG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;YAC3E,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,GAAG,UAAU,IAAI,YAAY,EAAE,CAAC,GAAG,QAAQ,CAAC;YAE/D,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;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,OAAe,EAAE,OAAkB;QAEhE,IAAI,CAAC;YAEH,MAAM,cAAc,GAAqC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3E,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;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,UAAkB,EAAE,cAAsB;QAE3E,IAAI,CAAC;YAEH,uCAAuC;YACvC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,UAAU,IAAI,cAAc,EAAE,CAAC,CAAC;YAC7D,yCAAyC;YACzC,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YAC5D,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,cAAc,UAAU,OAAO,GAAG,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YAEb,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,OAAO,4CAA4C,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;IAED;;;OAGG;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;;OAEG;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;AAtSD,8CAsSC"}
|
|
@@ -22,7 +22,7 @@ exports.ENV_DEFAULTS = {
|
|
|
22
22
|
SERVER_PORT: '5000',
|
|
23
23
|
LOG_DIR: './logs',
|
|
24
24
|
MORGAN_FORMAT: '',
|
|
25
|
-
JWT_ALGORITHM:
|
|
25
|
+
JWT_ALGORITHM: jwt_constants_1.DEFAULT_ACCESS_ALGORITHM,
|
|
26
26
|
JWT_VALIDITY: jwt_constants_1.DEFAULT_ACCESS_VALIDITY, // 15m — was missing (fell back to TOKEN_VALIDITY_DAYS = 6 days)
|
|
27
27
|
REFRESH_VALIDITY: jwt_constants_1.DEFAULT_REFRESH_VALIDITY, // 7d
|
|
28
28
|
MONGO_HOST: 'localhost',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.constants.js","sourceRoot":"","sources":["../../src/utils/env.constants.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"env.constants.js","sourceRoot":"","sources":["../../src/utils/env.constants.ts"],"names":[],"mappings":";;;AAAA,mDAA8G;AAE9G;;;;;;GAMG;AAEH;;;;;;;GAOG;AACU,QAAA,YAAY,GAA2B;IAClD,QAAQ,EAAa,OAAO;IAC5B,WAAW,EAAU,MAAM;IAC3B,OAAO,EAAc,QAAQ;IAC7B,aAAa,EAAQ,EAAE;IACvB,aAAa,EAAQ,wCAAwB;IAC7C,YAAY,EAAS,uCAAuB,EAAI,gEAAgE;IAChH,gBAAgB,EAAK,wCAAwB,EAAG,KAAK;IACrD,UAAU,EAAW,WAAW;IAChC,UAAU,EAAW,IAAI,EAAuB,sDAAsD;IACtG,UAAU,EAAW,IAAI;IACzB,SAAS,EAAY,EAAE;IACvB,aAAa,EAAQ,EAAE;IACvB,aAAa,EAAQ,EAAE;IACvB,QAAQ,EAAa,uBAAuB;IAC5C,mBAAmB,EAAE,GAAG;IACxB,mBAAmB,EAAE,GAAG;IACxB,mBAAmB,EAAE,IAAI;IACzB,OAAO,EAAc,EAAE;IACvB,cAAc,EAAO,EAAE;IACvB,aAAa,EAAQ,EAAE;IACvB,aAAa,EAAQ,WAAW;IAChC,gBAAgB,EAAK,cAAc;IACnC,iBAAiB,EAAI,eAAe,EAAY,mCAAmC;IACnF,mBAAmB,EAAE,gBAAgB;IACrC,eAAe,EAAM,MAAM;CAC5B,CAAC;AAEF,mFAAmF;AACtE,QAAA,WAAW,GAAG,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;AAE9D,uFAAuF;AAC1E,QAAA,QAAQ,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functs.d.ts","sourceRoot":"","sources":["../../src/utils/functs.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAe,UAAU,EAAE,MAAqB,sBAAsB,CAAC;AACvF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAiB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAyC,wDAAwD,CAAC;AAEzH,OAAO,EAAE,cAAc,EAAE,MAAuC,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"functs.d.ts","sourceRoot":"","sources":["../../src/utils/functs.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAe,UAAU,EAAE,MAAqB,sBAAsB,CAAC;AACvF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAiB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAyC,wDAAwD,CAAC;AAEzH,OAAO,EAAE,cAAc,EAAE,MAAuC,eAAe,CAAC;AAIhF;;GAEG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAmEjF;AA6BD;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,UAAU,CAAC,CA0B9D;AA8BD;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAgBzC;AA8BD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,GAAE,OAAc,GAAG,QAAQ,GAAG,IAAI,CASvF;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,IAAI,GAAE,MAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAYpE;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,GAAE,MAAiB,EAAE,KAAK,GAAE,MAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB3G;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBvE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAOvF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAMvF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAS9F;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAS5G;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,oBAAoB,UAAQ,GAAG,IAAI,CAc7F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAShE;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAM7D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAmBjD"}
|
package/build/utils/functs.js
CHANGED
|
@@ -58,6 +58,7 @@ const dotenv_1 = require("dotenv");
|
|
|
58
58
|
const nx_frame_be_1 = require("@nextage/nx-frame-be");
|
|
59
59
|
const constants_1 = require("../constants");
|
|
60
60
|
const env_constants_1 = require("./env.constants");
|
|
61
|
+
const jwt_1 = require("./jwt");
|
|
61
62
|
/**
|
|
62
63
|
* Init main application configuration stored in NxFrame APP Singleton
|
|
63
64
|
*/
|
|
@@ -77,8 +78,11 @@ async function initConfig(dir, appData) {
|
|
|
77
78
|
port: parseInt(process.env.SERVER_PORT)
|
|
78
79
|
};
|
|
79
80
|
// JWT management parameters (defaults resolved in readEnv()).
|
|
81
|
+
// `secret` holds the VERIFICATION key: the PUBLIC key for asymmetric algorithms
|
|
82
|
+
// (ES256 — Step 2.7 / S10) or the shared symmetric secret for HS*. It is what
|
|
83
|
+
// every `express-jwt` middleware and the WS `validateJwt` call verifies against.
|
|
80
84
|
APP.config.jwt = {
|
|
81
|
-
secret:
|
|
85
|
+
secret: (0, jwt_1.accessVerificationKey)(),
|
|
82
86
|
algorithm: process.env.JWT_ALGORITHM,
|
|
83
87
|
duration: process.env.JWT_VALIDITY
|
|
84
88
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functs.js","sourceRoot":"","sources":["../../src/utils/functs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"functs.js","sourceRoot":"","sources":["../../src/utils/functs.ts"],"names":[],"mappings":"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"}
|
package/build/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC"}
|
package/build/utils/index.js
CHANGED
|
@@ -18,5 +18,7 @@ __exportStar(require("./express"), exports);
|
|
|
18
18
|
__exportStar(require("./functs"), exports);
|
|
19
19
|
__exportStar(require("./jwt"), exports);
|
|
20
20
|
__exportStar(require("./jwt.constants"), exports);
|
|
21
|
+
__exportStar(require("./jwt.interfaces"), exports);
|
|
21
22
|
__exportStar(require("./start-service"), exports);
|
|
23
|
+
__exportStar(require("./start-service.constants"), exports);
|
|
22
24
|
//# sourceMappingURL=index.js.map
|
package/build/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,2CAAyB;AACzB,wCAAsB;AACtB,kDAAgC;AAChC,kDAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,2CAAyB;AACzB,wCAAsB;AACtB,kDAAgC;AAChC,mDAAiC;AACjC,kDAAgC;AAChC,4DAA0C"}
|
|
@@ -6,7 +6,40 @@
|
|
|
6
6
|
*/
|
|
7
7
|
/** Marker claim distinguishing a refresh token from an access token. */
|
|
8
8
|
export declare const REFRESH_TOKEN_TYPE = "refresh";
|
|
9
|
+
/**
|
|
10
|
+
* Known JWT signing algorithms used by the platform.
|
|
11
|
+
*
|
|
12
|
+
* Declared as a `const` object (not a TS `enum`) so each value is a string
|
|
13
|
+
* literal directly assignable to `jsonwebtoken`'s `Algorithm` union — no casts,
|
|
14
|
+
* with autocomplete. `HS*` are symmetric (shared secret); `ES*`/`RS*`/`PS*` and
|
|
15
|
+
* `EdDSA` are asymmetric (private key signs, public key verifies).
|
|
16
|
+
*/
|
|
17
|
+
export declare const JWT_ALG: {
|
|
18
|
+
readonly HS256: "HS256";
|
|
19
|
+
readonly HS512: "HS512";
|
|
20
|
+
readonly ES256: "ES256";
|
|
21
|
+
readonly ES384: "ES384";
|
|
22
|
+
readonly RS256: "RS256";
|
|
23
|
+
readonly PS256: "PS256";
|
|
24
|
+
readonly EdDSA: "EdDSA";
|
|
25
|
+
};
|
|
9
26
|
/** Default validity used when the matching env var is not set. */
|
|
10
27
|
export declare const DEFAULT_ACCESS_VALIDITY = "15m";
|
|
11
28
|
export declare const DEFAULT_REFRESH_VALIDITY = "7d";
|
|
29
|
+
/**
|
|
30
|
+
* Default ACCESS token algorithm when `JWT_ALGORITHM` is unset. Kept symmetric
|
|
31
|
+
* (HS512) for backward compatibility; production uses ES256 (asymmetric) via env
|
|
32
|
+
* so that only auth-srv (holding the private key) can sign — see Step 2.7 / S10.
|
|
33
|
+
*/
|
|
34
|
+
export declare const DEFAULT_ACCESS_ALGORITHM: "HS512";
|
|
35
|
+
/**
|
|
36
|
+
* Default signing algorithm for the REFRESH token.
|
|
37
|
+
*
|
|
38
|
+
* The refresh token is symmetric (HMAC) and NEVER leaves auth-srv, so it stays
|
|
39
|
+
* on HS512 regardless of the ACCESS token algorithm. This is DECOUPLED from
|
|
40
|
+
* `JWT_ALGORITHM` on purpose: when the access token moves to an asymmetric
|
|
41
|
+
* algorithm (Step 2.7, ES256), signing the refresh with an EC key would fail —
|
|
42
|
+
* the refresh keeps using a symmetric secret. Override with `REFRESH_ALGORITHM`.
|
|
43
|
+
*/
|
|
44
|
+
export declare const DEFAULT_REFRESH_ALGORITHM: "HS512";
|
|
12
45
|
//# sourceMappingURL=jwt.constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.constants.d.ts","sourceRoot":"","sources":["../../src/utils/jwt.constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"jwt.constants.d.ts","sourceRoot":"","sources":["../../src/utils/jwt.constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,YAAmB,CAAC;AAEnD;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO;;;;;;;;CAQV,CAAC;AAEX,kEAAkE;AAClE,eAAO,MAAM,uBAAuB,QAAU,CAAC;AAC/C,eAAO,MAAM,wBAAwB,OAAQ,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,SAAiB,CAAC;AAEvD;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,SAAgB,CAAC"}
|
|
@@ -6,10 +6,43 @@
|
|
|
6
6
|
* (type marker, default validities) can be reviewed and changed in one place.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.DEFAULT_REFRESH_VALIDITY = exports.DEFAULT_ACCESS_VALIDITY = exports.REFRESH_TOKEN_TYPE = void 0;
|
|
9
|
+
exports.DEFAULT_REFRESH_ALGORITHM = exports.DEFAULT_ACCESS_ALGORITHM = exports.DEFAULT_REFRESH_VALIDITY = exports.DEFAULT_ACCESS_VALIDITY = exports.JWT_ALG = exports.REFRESH_TOKEN_TYPE = void 0;
|
|
10
10
|
/** Marker claim distinguishing a refresh token from an access token. */
|
|
11
11
|
exports.REFRESH_TOKEN_TYPE = 'refresh';
|
|
12
|
+
/**
|
|
13
|
+
* Known JWT signing algorithms used by the platform.
|
|
14
|
+
*
|
|
15
|
+
* Declared as a `const` object (not a TS `enum`) so each value is a string
|
|
16
|
+
* literal directly assignable to `jsonwebtoken`'s `Algorithm` union — no casts,
|
|
17
|
+
* with autocomplete. `HS*` are symmetric (shared secret); `ES*`/`RS*`/`PS*` and
|
|
18
|
+
* `EdDSA` are asymmetric (private key signs, public key verifies).
|
|
19
|
+
*/
|
|
20
|
+
exports.JWT_ALG = {
|
|
21
|
+
HS256: 'HS256',
|
|
22
|
+
HS512: 'HS512',
|
|
23
|
+
ES256: 'ES256',
|
|
24
|
+
ES384: 'ES384',
|
|
25
|
+
RS256: 'RS256',
|
|
26
|
+
PS256: 'PS256',
|
|
27
|
+
EdDSA: 'EdDSA'
|
|
28
|
+
};
|
|
12
29
|
/** Default validity used when the matching env var is not set. */
|
|
13
30
|
exports.DEFAULT_ACCESS_VALIDITY = '15m';
|
|
14
31
|
exports.DEFAULT_REFRESH_VALIDITY = '7d';
|
|
32
|
+
/**
|
|
33
|
+
* Default ACCESS token algorithm when `JWT_ALGORITHM` is unset. Kept symmetric
|
|
34
|
+
* (HS512) for backward compatibility; production uses ES256 (asymmetric) via env
|
|
35
|
+
* so that only auth-srv (holding the private key) can sign — see Step 2.7 / S10.
|
|
36
|
+
*/
|
|
37
|
+
exports.DEFAULT_ACCESS_ALGORITHM = exports.JWT_ALG.HS512;
|
|
38
|
+
/**
|
|
39
|
+
* Default signing algorithm for the REFRESH token.
|
|
40
|
+
*
|
|
41
|
+
* The refresh token is symmetric (HMAC) and NEVER leaves auth-srv, so it stays
|
|
42
|
+
* on HS512 regardless of the ACCESS token algorithm. This is DECOUPLED from
|
|
43
|
+
* `JWT_ALGORITHM` on purpose: when the access token moves to an asymmetric
|
|
44
|
+
* algorithm (Step 2.7, ES256), signing the refresh with an EC key would fail —
|
|
45
|
+
* the refresh keeps using a symmetric secret. Override with `REFRESH_ALGORITHM`.
|
|
46
|
+
*/
|
|
47
|
+
exports.DEFAULT_REFRESH_ALGORITHM = exports.JWT_ALG.HS512;
|
|
15
48
|
//# sourceMappingURL=jwt.constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.constants.js","sourceRoot":"","sources":["../../src/utils/jwt.constants.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,wEAAwE;AAC3D,QAAA,kBAAkB,
|
|
1
|
+
{"version":3,"file":"jwt.constants.js","sourceRoot":"","sources":["../../src/utils/jwt.constants.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,wEAAwE;AAC3D,QAAA,kBAAkB,GAAU,SAAS,CAAC;AAEnD;;;;;;;GAOG;AACU,QAAA,OAAO,GAAG;IACrB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;CACN,CAAC;AAEX,kEAAkE;AACrD,QAAA,uBAAuB,GAAK,KAAK,CAAC;AAClC,QAAA,wBAAwB,GAAI,IAAI,CAAC;AAE9C;;;;GAIG;AACU,QAAA,wBAAwB,GAAI,eAAO,CAAC,KAAK,CAAC;AAEvD;;;;;;;;GAQG;AACU,QAAA,yBAAyB,GAAG,eAAO,CAAC,KAAK,CAAC"}
|
package/build/utils/jwt.d.ts
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
export interface RefreshTokenPayload extends JwtPayload {
|
|
4
|
-
/** Subject — the user id. */
|
|
5
|
-
sub: string;
|
|
6
|
-
/** JWT id — the `accesses` record id (session id). Mirrors the access token jti. */
|
|
7
|
-
jti: string;
|
|
8
|
-
/** Token type marker. */
|
|
9
|
-
typ: typeof REFRESH_TOKEN_TYPE;
|
|
10
|
-
/** Per-issuance nonce — guarantees each rotation yields a distinct token/hash. */
|
|
11
|
-
rti: string;
|
|
12
|
-
}
|
|
1
|
+
import { SignOptions } from 'jsonwebtoken';
|
|
2
|
+
import { RefreshTokenPayload } from './jwt.interfaces';
|
|
13
3
|
/**
|
|
14
4
|
* Sign a long-lived REFRESH token for a session.
|
|
15
5
|
*
|
|
@@ -40,4 +30,21 @@ export declare function tokenExpiry(token: string): Date | undefined;
|
|
|
40
30
|
* side-channels when validating a presented refresh token.
|
|
41
31
|
*/
|
|
42
32
|
export declare function verifyTokenHash(token: string, hash?: string | null): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Resolve the ACCESS token SIGNING key (auth-srv only).
|
|
35
|
+
*
|
|
36
|
+
* Asymmetric algorithms sign with the PRIVATE key (`JWT_PRIVATE_KEY`); symmetric
|
|
37
|
+
* ones use the shared `JWT_SECRET`. Passed explicitly to `generateJwt()` so the
|
|
38
|
+
* signer never depends on `JWT_SECRET` being (mis)used as the private key.
|
|
39
|
+
*/
|
|
40
|
+
export declare function accessSigningKey(): string | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Resolve the ACCESS token VERIFICATION key (every service).
|
|
43
|
+
*
|
|
44
|
+
* Asymmetric algorithms verify with the PUBLIC key (`JWT_PUBLIC_KEY`, which
|
|
45
|
+
* cannot forge tokens); symmetric ones use the shared `JWT_SECRET`. This value
|
|
46
|
+
* is what `initConfig` stores in `APP.config.jwt.secret`, consumed by every
|
|
47
|
+
* `express-jwt` middleware and the WS `validateJwt` call.
|
|
48
|
+
*/
|
|
49
|
+
export declare function accessVerificationKey(): string | undefined;
|
|
43
50
|
//# sourceMappingURL=jwt.d.ts.map
|
package/build/utils/jwt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../src/utils/jwt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../src/utils/jwt.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAc,WAAW,EAAE,MAAM,cAAc,CAAC;AAGvD,OAAO,EAAE,mBAAmB,EAAE,MAAU,kBAAkB,CAAC;AA+B3D;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAgB1G;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAQtF;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAK3D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAS5E;AA2BD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAKrD;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,SAAS,CAK1D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JWT token types & interfaces.
|
|
3
|
+
*
|
|
4
|
+
* Kept separate from the token helper logic in `jwt.ts` and from the values in
|
|
5
|
+
* `jwt.constants.ts` (house-style: types live in a dedicated `*.interfaces.ts`,
|
|
6
|
+
* never mixed with the logic that consumes them).
|
|
7
|
+
*/
|
|
8
|
+
import { JwtPayload } from 'jsonwebtoken';
|
|
9
|
+
import { JWT_ALG, REFRESH_TOKEN_TYPE } from './jwt.constants';
|
|
10
|
+
/** Union of the known JWT algorithms, derived from the `JWT_ALG` const object. */
|
|
11
|
+
export type JwtAlg = (typeof JWT_ALG)[keyof typeof JWT_ALG];
|
|
12
|
+
/** Decoded payload of a REFRESH token (ADR-0002). */
|
|
13
|
+
export interface RefreshTokenPayload extends JwtPayload {
|
|
14
|
+
/** Subject — the user id. */
|
|
15
|
+
sub: string;
|
|
16
|
+
/** JWT id — the `accesses` record id (session id). Mirrors the access token jti. */
|
|
17
|
+
jti: string;
|
|
18
|
+
/** Token type marker. */
|
|
19
|
+
typ: typeof REFRESH_TOKEN_TYPE;
|
|
20
|
+
/** Per-issuance nonce — guarantees each rotation yields a distinct token/hash. */
|
|
21
|
+
rti: string;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=jwt.interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.interfaces.d.ts","sourceRoot":"","sources":["../../src/utils/jwt.interfaces.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAO,cAAc,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE9D,kFAAkF;AAClF,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC;AAE5D,qDAAqD;AACrD,MAAM,WAAW,mBAAoB,SAAQ,UAAU;IACrD,6BAA6B;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,oFAAoF;IACpF,GAAG,EAAE,MAAM,CAAC;IACZ,yBAAyB;IACzB,GAAG,EAAE,OAAO,kBAAkB,CAAC;IAC/B,kFAAkF;IAClF,GAAG,EAAE,MAAM,CAAC;CACb"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* JWT token types & interfaces.
|
|
4
|
+
*
|
|
5
|
+
* Kept separate from the token helper logic in `jwt.ts` and from the values in
|
|
6
|
+
* `jwt.constants.ts` (house-style: types live in a dedicated `*.interfaces.ts`,
|
|
7
|
+
* never mixed with the logic that consumes them).
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
//# sourceMappingURL=jwt.interfaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.interfaces.js","sourceRoot":"","sources":["../../src/utils/jwt.interfaces.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}
|
package/build/utils/jwt.js
CHANGED
|
@@ -10,10 +10,11 @@
|
|
|
10
10
|
// │ • hashToken() → sha256 hex, stored on the `accesses` record so the │
|
|
11
11
|
// │ refresh can be rotated / revoked server-side. │
|
|
12
12
|
// │ │
|
|
13
|
-
// │ The ACCESS token is
|
|
14
|
-
// │
|
|
15
|
-
// │
|
|
16
|
-
// │
|
|
13
|
+
// │ The ACCESS token is signed by nx-frame-be `generateJwt()`. As of Step 2.7 it │
|
|
14
|
+
// │ uses ASYMMETRIC ES256 (auth-srv signs with the private key, every service │
|
|
15
|
+
// │ verifies with the public key). The REFRESH token below stays SYMMETRIC │
|
|
16
|
+
// │ (HS512): it never leaves auth-srv, so its algorithm is deliberately decoupled │
|
|
17
|
+
// │ from `JWT_ALGORITHM` (see DEFAULT_REFRESH_ALGORITHM in jwt.constants). │
|
|
17
18
|
// └────────────────────────────────────────────────────────────────────────────┘
|
|
18
19
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
19
20
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -24,6 +25,8 @@ exports.verifyRefreshToken = verifyRefreshToken;
|
|
|
24
25
|
exports.hashToken = hashToken;
|
|
25
26
|
exports.tokenExpiry = tokenExpiry;
|
|
26
27
|
exports.verifyTokenHash = verifyTokenHash;
|
|
28
|
+
exports.accessSigningKey = accessSigningKey;
|
|
29
|
+
exports.accessVerificationKey = accessVerificationKey;
|
|
27
30
|
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
28
31
|
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
29
32
|
const jwt_constants_1 = require("./jwt.constants");
|
|
@@ -40,9 +43,15 @@ function refreshSecret(secret) {
|
|
|
40
43
|
throw new Error('Missing refresh token secret (REFRESH_SECRET / JWT_SECRET)');
|
|
41
44
|
return resolved;
|
|
42
45
|
}
|
|
43
|
-
/**
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Resolve the REFRESH token algorithm. Symmetric (HS512) and DECOUPLED from the
|
|
48
|
+
* ACCESS token's `JWT_ALGORITHM`: the refresh never leaves auth-srv, so it keeps
|
|
49
|
+
* a symmetric secret even after the access token moves to ES256 (Step 2.7).
|
|
50
|
+
* Override with `REFRESH_ALGORITHM` (must stay symmetric — the refresh secret is
|
|
51
|
+
* a string, not a key pair).
|
|
52
|
+
*/
|
|
53
|
+
function refreshAlgorithm() {
|
|
54
|
+
return (process.env.REFRESH_ALGORITHM ?? jwt_constants_1.DEFAULT_REFRESH_ALGORITHM);
|
|
46
55
|
}
|
|
47
56
|
/**
|
|
48
57
|
* Sign a long-lived REFRESH token for a session.
|
|
@@ -53,7 +62,7 @@ function signAlgorithm() {
|
|
|
53
62
|
*/
|
|
54
63
|
function signRefreshToken(sub, jti, opts = {}, secret) {
|
|
55
64
|
const signOpts = {
|
|
56
|
-
algorithm:
|
|
65
|
+
algorithm: refreshAlgorithm(),
|
|
57
66
|
expiresIn: (process.env.REFRESH_VALIDITY ?? jwt_constants_1.DEFAULT_REFRESH_VALIDITY),
|
|
58
67
|
...opts
|
|
59
68
|
};
|
|
@@ -70,7 +79,7 @@ function signRefreshToken(sub, jti, opts = {}, secret) {
|
|
|
70
79
|
* TokenExpiredError) when the token is malformed, expired or not a refresh token.
|
|
71
80
|
*/
|
|
72
81
|
function verifyRefreshToken(token, secret) {
|
|
73
|
-
const payload = jsonwebtoken_1.default.verify(token, refreshSecret(secret), { algorithms: [
|
|
82
|
+
const payload = jsonwebtoken_1.default.verify(token, refreshSecret(secret), { algorithms: [refreshAlgorithm()] });
|
|
74
83
|
if (payload?.typ !== jwt_constants_1.REFRESH_TOKEN_TYPE)
|
|
75
84
|
throw new Error('Not a refresh token');
|
|
76
85
|
return payload;
|
|
@@ -103,4 +112,46 @@ function verifyTokenHash(token, hash) {
|
|
|
103
112
|
const b = Buffer.from(hash);
|
|
104
113
|
return a.length === b.length && node_crypto_1.default.timingSafeEqual(a, b);
|
|
105
114
|
}
|
|
115
|
+
// ── ACCESS token key resolution (asymmetric ES256 — Step 2.7 / S10) ──────────────
|
|
116
|
+
/**
|
|
117
|
+
* True when the ACCESS token algorithm uses an asymmetric key pair (private key
|
|
118
|
+
* to sign, public key to verify): the `ES`, `RS`, `PS` families and `EdDSA`.
|
|
119
|
+
* Everything else is treated as a symmetric HMAC secret.
|
|
120
|
+
*/
|
|
121
|
+
function isAsymmetricAlgorithm(alg) {
|
|
122
|
+
return /^(ES|RS|PS)\d{3}$/.test(alg) || alg === jwt_constants_1.JWT_ALG.EdDSA;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Decode a PEM key provided via env. Accepts either a base64-encoded PEM (the
|
|
126
|
+
* recommended single-line form for `app.env`) or a raw PEM whose newlines are
|
|
127
|
+
* escaped as `\n`. Returns `undefined` when the variable is unset.
|
|
128
|
+
*/
|
|
129
|
+
function readPemEnv(value) {
|
|
130
|
+
if (!value)
|
|
131
|
+
return undefined;
|
|
132
|
+
return value.includes('BEGIN') ? value.replace(/\\n/g, '\n') : Buffer.from(value, 'base64').toString('utf8');
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Resolve the ACCESS token SIGNING key (auth-srv only).
|
|
136
|
+
*
|
|
137
|
+
* Asymmetric algorithms sign with the PRIVATE key (`JWT_PRIVATE_KEY`); symmetric
|
|
138
|
+
* ones use the shared `JWT_SECRET`. Passed explicitly to `generateJwt()` so the
|
|
139
|
+
* signer never depends on `JWT_SECRET` being (mis)used as the private key.
|
|
140
|
+
*/
|
|
141
|
+
function accessSigningKey() {
|
|
142
|
+
const alg = process.env.JWT_ALGORITHM ?? jwt_constants_1.DEFAULT_ACCESS_ALGORITHM;
|
|
143
|
+
return isAsymmetricAlgorithm(alg) ? readPemEnv(process.env.JWT_PRIVATE_KEY) : process.env.JWT_SECRET;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Resolve the ACCESS token VERIFICATION key (every service).
|
|
147
|
+
*
|
|
148
|
+
* Asymmetric algorithms verify with the PUBLIC key (`JWT_PUBLIC_KEY`, which
|
|
149
|
+
* cannot forge tokens); symmetric ones use the shared `JWT_SECRET`. This value
|
|
150
|
+
* is what `initConfig` stores in `APP.config.jwt.secret`, consumed by every
|
|
151
|
+
* `express-jwt` middleware and the WS `validateJwt` call.
|
|
152
|
+
*/
|
|
153
|
+
function accessVerificationKey() {
|
|
154
|
+
const alg = process.env.JWT_ALGORITHM ?? jwt_constants_1.DEFAULT_ACCESS_ALGORITHM;
|
|
155
|
+
return isAsymmetricAlgorithm(alg) ? readPemEnv(process.env.JWT_PUBLIC_KEY) : process.env.JWT_SECRET;
|
|
156
|
+
}
|
|
106
157
|
//# sourceMappingURL=jwt.js.map
|
package/build/utils/jwt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../src/utils/jwt.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,mFAAmF;AACnF,mFAAmF;AACnF,mFAAmF;AACnF,mFAAmF;AACnF,mFAAmF;AACnF,mFAAmF;AACnF,mFAAmF;AACnF,oFAAoF;AACpF,oFAAoF;AACpF,mFAAmF;AACnF,mFAAmF;AACnF,oFAAoF;AACpF,
|
|
1
|
+
{"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../src/utils/jwt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants for the service bootstrap orchestrator (see `start-service.ts`).
|
|
3
|
+
*
|
|
4
|
+
* Kept separate from the orchestration logic so bootstrap tunables can be
|
|
5
|
+
* reviewed and changed in one place. Reusable across services / scaffolds.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Env var that overrides the graceful-shutdown timeout (in milliseconds).
|
|
9
|
+
*
|
|
10
|
+
* When set to a positive integer, `startService` applies it to the shared
|
|
11
|
+
* `ShutdownManager` (whose framework default is {@link DEFAULT_SHUTDOWN_TIMEOUT}).
|
|
12
|
+
* Leave it unset to keep the default — no service code change required.
|
|
13
|
+
*/
|
|
14
|
+
export declare const SHUTDOWN_TIMEOUT_ENV = "SHUTDOWN_TIMEOUT";
|
|
15
|
+
/**
|
|
16
|
+
* Framework default graceful-shutdown timeout (ms). Mirrors the value hardcoded
|
|
17
|
+
* in `@nextage/nx-frame-be`'s `ShutdownManager`; used only as a log reference.
|
|
18
|
+
*/
|
|
19
|
+
export declare const DEFAULT_SHUTDOWN_TIMEOUT = 3000;
|
|
20
|
+
//# sourceMappingURL=start-service.constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-service.constants.d.ts","sourceRoot":"","sources":["../../src/utils/start-service.constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Constants for the service bootstrap orchestrator (see `start-service.ts`).
|
|
4
|
+
*
|
|
5
|
+
* Kept separate from the orchestration logic so bootstrap tunables can be
|
|
6
|
+
* reviewed and changed in one place. Reusable across services / scaffolds.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.DEFAULT_SHUTDOWN_TIMEOUT = exports.SHUTDOWN_TIMEOUT_ENV = void 0;
|
|
10
|
+
/**
|
|
11
|
+
* Env var that overrides the graceful-shutdown timeout (in milliseconds).
|
|
12
|
+
*
|
|
13
|
+
* When set to a positive integer, `startService` applies it to the shared
|
|
14
|
+
* `ShutdownManager` (whose framework default is {@link DEFAULT_SHUTDOWN_TIMEOUT}).
|
|
15
|
+
* Leave it unset to keep the default — no service code change required.
|
|
16
|
+
*/
|
|
17
|
+
exports.SHUTDOWN_TIMEOUT_ENV = 'SHUTDOWN_TIMEOUT';
|
|
18
|
+
/**
|
|
19
|
+
* Framework default graceful-shutdown timeout (ms). Mirrors the value hardcoded
|
|
20
|
+
* in `@nextage/nx-frame-be`'s `ShutdownManager`; used only as a log reference.
|
|
21
|
+
*/
|
|
22
|
+
exports.DEFAULT_SHUTDOWN_TIMEOUT = 3000;
|
|
23
|
+
//# sourceMappingURL=start-service.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-service.constants.js","sourceRoot":"","sources":["../../src/utils/start-service.constants.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,kBAAkB,CAAC;AAEvD;;;GAGG;AACU,QAAA,wBAAwB,GAAG,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-service.d.ts","sourceRoot":"","sources":["../../src/utils/start-service.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"start-service.d.ts","sourceRoot":"","sources":["../../src/utils/start-service.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,MAAM,EAAE,MAAoB,SAAS,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAa,MAAQ,sBAAsB,CAAC;AAI5D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAG,MAAM,CAAC;IACf,GAAG,EAAK,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,GAAG,EAAS,OAAO,CAAC;IACpB,2EAA2E;IAC3E,MAAM,EAAM,cAAc,EAAE,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,EAAG,eAAe,EAAE,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,EAAG,OAAO,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAI,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC;CACrC;AAED;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C5E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,MAAM,CAsBjG"}
|
|
@@ -18,6 +18,7 @@ exports.startService = startService;
|
|
|
18
18
|
exports.createHealthRouter = createHealthRouter;
|
|
19
19
|
const express_1 = require("express");
|
|
20
20
|
const nx_frame_be_1 = require("@nextage/nx-frame-be");
|
|
21
|
+
const start_service_constants_1 = require("./start-service.constants");
|
|
21
22
|
/**
|
|
22
23
|
* Orchestrates a service startup as an ordered, fail-fast phase sequence.
|
|
23
24
|
*
|
|
@@ -91,7 +92,10 @@ function createHealthRouter(app, extra) {
|
|
|
91
92
|
* resources are torn down opposite to how they were created).
|
|
92
93
|
*/
|
|
93
94
|
function registerShutdown(app, handlers, logger) {
|
|
94
|
-
if (!
|
|
95
|
+
if (!app.shutdownMng)
|
|
96
|
+
return;
|
|
97
|
+
applyShutdownTimeout(app, logger);
|
|
98
|
+
if (!handlers?.length)
|
|
95
99
|
return;
|
|
96
100
|
for (const handler of [...handlers].reverse()) {
|
|
97
101
|
app.shutdownMng.addShutdownHandler(async () => {
|
|
@@ -104,6 +108,23 @@ function registerShutdown(app, handlers, logger) {
|
|
|
104
108
|
});
|
|
105
109
|
}
|
|
106
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Applies the optional `SHUTDOWN_TIMEOUT` env override to the shared
|
|
113
|
+
* ShutdownManager. Ignored (framework default kept) when the var is unset,
|
|
114
|
+
* non-numeric or not a positive integer.
|
|
115
|
+
*/
|
|
116
|
+
function applyShutdownTimeout(app, logger) {
|
|
117
|
+
const raw = process.env[start_service_constants_1.SHUTDOWN_TIMEOUT_ENV];
|
|
118
|
+
if (raw === undefined || raw === '')
|
|
119
|
+
return;
|
|
120
|
+
const ms = Number(raw);
|
|
121
|
+
if (!Number.isInteger(ms) || ms <= 0) {
|
|
122
|
+
logger.warn(`⚠ [${app.appName}] ignoring invalid ${start_service_constants_1.SHUTDOWN_TIMEOUT_ENV}="${raw}" (expected a positive integer)`);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
app.shutdownMng.shutdownTimeout = ms;
|
|
126
|
+
logger.info(`⚙ [${app.appName}] shutdown timeout set to ${ms}ms (via ${start_service_constants_1.SHUTDOWN_TIMEOUT_ENV})`);
|
|
127
|
+
}
|
|
107
128
|
/**
|
|
108
129
|
* Runs shutdown handlers inline (used on fail-fast, before the manager exists).
|
|
109
130
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-service.js","sourceRoot":"","sources":["../../src/utils/start-service.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;+EAa+E;;
|
|
1
|
+
{"version":3,"file":"start-service.js","sourceRoot":"","sources":["../../src/utils/start-service.ts"],"names":[],"mappings":"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"}
|