@nextage/era-lib 1.0.180 → 1.0.182
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/access-revoked-publisher.d.ts +15 -0
- package/build/events/access-revoked-publisher.d.ts.map +1 -0
- package/build/events/access-revoked-publisher.js +21 -0
- package/build/events/access-revoked-publisher.js.map +1 -0
- package/build/events/index.d.ts +3 -0
- package/build/events/index.d.ts.map +1 -1
- package/build/events/index.js +3 -0
- package/build/events/index.js.map +1 -1
- package/build/events/nats-client-manager.d.ts +19 -0
- package/build/events/nats-client-manager.d.ts.map +1 -1
- package/build/events/nats-client-manager.js +43 -0
- package/build/events/nats-client-manager.js.map +1 -1
- package/build/events/revocation-denylist.d.ts +37 -0
- package/build/events/revocation-denylist.d.ts.map +1 -0
- package/build/events/revocation-denylist.js +109 -0
- package/build/events/revocation-denylist.js.map +1 -0
- package/build/events/revocation-listener.d.ts +26 -0
- package/build/events/revocation-listener.d.ts.map +1 -0
- package/build/events/revocation-listener.js +92 -0
- package/build/events/revocation-listener.js.map +1 -0
- package/build/events/types/enums.d.ts +8 -1
- package/build/events/types/enums.d.ts.map +1 -1
- package/build/events/types/enums.js +7 -0
- package/build/events/types/enums.js.map +1 -1
- package/build/events/types/index.d.ts +2 -0
- package/build/events/types/index.d.ts.map +1 -1
- package/build/events/types/index.js +2 -0
- package/build/events/types/index.js.map +1 -1
- package/build/events/types/revocation.constants.d.ts +8 -0
- package/build/events/types/revocation.constants.d.ts.map +1 -0
- package/build/events/types/revocation.constants.js +27 -0
- package/build/events/types/revocation.constants.js.map +1 -0
- package/build/events/types/revocation.interfaces.d.ts +19 -0
- package/build/events/types/revocation.interfaces.d.ts.map +1 -0
- package/build/events/types/revocation.interfaces.js +6 -0
- package/build/events/types/revocation.interfaces.js.map +1 -0
- package/build/utils/functs.d.ts +9 -0
- package/build/utils/functs.d.ts.map +1 -1
- package/build/utils/functs.js +22 -0
- package/build/utils/functs.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { NatsPublisher } from './base-nats-publisher';
|
|
2
|
+
import { AccessRevokedEvent } from './types/revocation.interfaces';
|
|
3
|
+
import { Subjects } from './types/enums';
|
|
4
|
+
/**
|
|
5
|
+
* Publishes `access.revoked` on the ACCESS_EVENTS stream (Step 3.7 / S5).
|
|
6
|
+
*
|
|
7
|
+
* auth-srv emits one event per revoked access-token id (`jti`) on logout so every
|
|
8
|
+
* resource service can deny it near-real-time via the {@link RevocationDenylist}.
|
|
9
|
+
* Reuses the shared in-band envelope of {@link NatsPublisher} (id / subject /
|
|
10
|
+
* timestamp / meta) for consistency with every other event.
|
|
11
|
+
*/
|
|
12
|
+
export declare class AccessRevokedPublisher extends NatsPublisher<AccessRevokedEvent> {
|
|
13
|
+
readonly subject: Subjects.AccessRevoked;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=access-revoked-publisher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-revoked-publisher.d.ts","sourceRoot":"","sources":["../../src/events/access-revoked-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAW,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAgB,eAAe,CAAC;AAEnD;;;;;;;GAOG;AACH,qBAAa,sBAAuB,SAAQ,aAAa,CAAC,kBAAkB,CAAC;IAE3E,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,aAAa,CAA0B;CACnE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AccessRevokedPublisher = void 0;
|
|
4
|
+
const base_nats_publisher_1 = require("./base-nats-publisher");
|
|
5
|
+
const enums_1 = require("./types/enums");
|
|
6
|
+
/**
|
|
7
|
+
* Publishes `access.revoked` on the ACCESS_EVENTS stream (Step 3.7 / S5).
|
|
8
|
+
*
|
|
9
|
+
* auth-srv emits one event per revoked access-token id (`jti`) on logout so every
|
|
10
|
+
* resource service can deny it near-real-time via the {@link RevocationDenylist}.
|
|
11
|
+
* Reuses the shared in-band envelope of {@link NatsPublisher} (id / subject /
|
|
12
|
+
* timestamp / meta) for consistency with every other event.
|
|
13
|
+
*/
|
|
14
|
+
class AccessRevokedPublisher extends base_nats_publisher_1.NatsPublisher {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.subject = enums_1.Subjects.AccessRevoked;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.AccessRevokedPublisher = AccessRevokedPublisher;
|
|
21
|
+
//# sourceMappingURL=access-revoked-publisher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-revoked-publisher.js","sourceRoot":"","sources":["../../src/events/access-revoked-publisher.ts"],"names":[],"mappings":";;;AAAA,+DAA2D;AAE3D,yCAAmD;AAEnD;;;;;;;GAOG;AACH,MAAa,sBAAuB,SAAQ,mCAAiC;IAA7E;;QAEW,YAAO,GAA2B,gBAAQ,CAAC,aAAa,CAAC;IACpE,CAAC;CAAA;AAHD,wDAGC"}
|
package/build/events/index.d.ts
CHANGED
|
@@ -7,6 +7,9 @@ export * from './event-relay';
|
|
|
7
7
|
export * from './field-map';
|
|
8
8
|
export * from './outbox';
|
|
9
9
|
export * from './publisher-registry';
|
|
10
|
+
export * from './revocation-denylist';
|
|
11
|
+
export * from './revocation-listener';
|
|
12
|
+
export * from './access-revoked-publisher';
|
|
10
13
|
export * from './msg-client-manager';
|
|
11
14
|
export * from './msg-wrapper';
|
|
12
15
|
export * from './base-listener';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AAExB,cAAc,yBAAyB,CAAC;AACxC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AAExB,cAAc,yBAAyB,CAAC;AACxC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,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
|
@@ -23,6 +23,9 @@ __exportStar(require("./event-relay"), exports);
|
|
|
23
23
|
__exportStar(require("./field-map"), exports);
|
|
24
24
|
__exportStar(require("./outbox"), exports);
|
|
25
25
|
__exportStar(require("./publisher-registry"), exports);
|
|
26
|
+
__exportStar(require("./revocation-denylist"), exports);
|
|
27
|
+
__exportStar(require("./revocation-listener"), exports);
|
|
28
|
+
__exportStar(require("./access-revoked-publisher"), exports);
|
|
26
29
|
// messages on memory
|
|
27
30
|
__exportStar(require("./msg-client-manager"), exports);
|
|
28
31
|
__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;AACxC,4CAA0B;AAC1B,gDAA8B;AAC9B,8CAA4B;AAC5B,2CAAyB;AACzB,uDAAqC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,+CAA6B;AAC7B,0CAAwB;AAExB,0DAAwC;AACxC,4CAA0B;AAC1B,gDAA8B;AAC9B,8CAA4B;AAC5B,2CAAyB;AACzB,uDAAqC;AACrC,wDAAsC;AACtC,wDAAsC;AACtC,6DAA2C;AAE3C,qBAAqB;AACrB,uDAAqC;AACrC,gDAA8B;AAC9B,kDAAgC;AAChC,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"}
|
|
@@ -44,6 +44,25 @@ export declare class NatsClientManager extends EventEmitter implements MsgClient
|
|
|
44
44
|
* @param {*} method
|
|
45
45
|
*/
|
|
46
46
|
subscribe(subject: string, streamName: string, queueGroupName: string, options?: EventSubOptions): Promise<Consumer>;
|
|
47
|
+
/**
|
|
48
|
+
* Broadcast subscription (Step 3.7): create an EPHEMERAL, per-instance consumer
|
|
49
|
+
* so EVERY service instance receives every message on `subject` — unlike the
|
|
50
|
+
* durable, shared-name consumer of {@link subscribe}, which load-balances one
|
|
51
|
+
* copy across instances (work-queue). Used for the revocation denylist, where
|
|
52
|
+
* all instances must learn about a revoked token.
|
|
53
|
+
*
|
|
54
|
+
* `deliver_policy: StartTime` with `opt_start_time = now - lookbackMs` replays
|
|
55
|
+
* the recent messages on startup (decision 2a), so a restarting instance
|
|
56
|
+
* rebuilds its denylist from the stream. The consumer has no `durable_name` and
|
|
57
|
+
* an `inactive_threshold`, so the server auto-reaps it when the instance dies.
|
|
58
|
+
*
|
|
59
|
+
* @param subject concrete subject filter (e.g. `access.revoked`)
|
|
60
|
+
* @param streamName stream carrying that subject
|
|
61
|
+
* @param opts `lookbackMs` = startup replay window (default 0 = only new)
|
|
62
|
+
*/
|
|
63
|
+
subscribeBroadcast(subject: string, streamName: string, opts?: {
|
|
64
|
+
lookbackMs?: number;
|
|
65
|
+
}): Promise<Consumer>;
|
|
47
66
|
/**
|
|
48
67
|
*
|
|
49
68
|
* @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;;;;;;;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"}
|
|
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;;;;;;;;;;;;;;;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;;;;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"}
|
|
@@ -158,6 +158,49 @@ class NatsClientManager extends ws_1.EventEmitter {
|
|
|
158
158
|
throw error;
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* Broadcast subscription (Step 3.7): create an EPHEMERAL, per-instance consumer
|
|
163
|
+
* so EVERY service instance receives every message on `subject` — unlike the
|
|
164
|
+
* durable, shared-name consumer of {@link subscribe}, which load-balances one
|
|
165
|
+
* copy across instances (work-queue). Used for the revocation denylist, where
|
|
166
|
+
* all instances must learn about a revoked token.
|
|
167
|
+
*
|
|
168
|
+
* `deliver_policy: StartTime` with `opt_start_time = now - lookbackMs` replays
|
|
169
|
+
* the recent messages on startup (decision 2a), so a restarting instance
|
|
170
|
+
* rebuilds its denylist from the stream. The consumer has no `durable_name` and
|
|
171
|
+
* an `inactive_threshold`, so the server auto-reaps it when the instance dies.
|
|
172
|
+
*
|
|
173
|
+
* @param subject concrete subject filter (e.g. `access.revoked`)
|
|
174
|
+
* @param streamName stream carrying that subject
|
|
175
|
+
* @param opts `lookbackMs` = startup replay window (default 0 = only new)
|
|
176
|
+
*/
|
|
177
|
+
async subscribeBroadcast(subject, streamName, opts) {
|
|
178
|
+
var _a;
|
|
179
|
+
try {
|
|
180
|
+
const suffix = `${process.pid}_${Math.random().toString(36).slice(2, 8)}`;
|
|
181
|
+
const consumerName = `broadcast_${subject.replace(/[.*>]/g, '_')}_${suffix}`;
|
|
182
|
+
const lookbackMs = opts?.lookbackMs ?? 0;
|
|
183
|
+
const consumerConfig = {
|
|
184
|
+
name: consumerName,
|
|
185
|
+
ack_policy: nats_1.AckPolicy.Explicit,
|
|
186
|
+
filter_subject: subject,
|
|
187
|
+
inactive_threshold: 5 * 60 * 1000000000, // 5 min in ns → auto-reap when the instance dies
|
|
188
|
+
...(lookbackMs > 0
|
|
189
|
+
? { deliver_policy: nats_3.DeliverPolicy.StartTime, opt_start_time: new Date(Date.now() - lookbackMs).toISOString() }
|
|
190
|
+
: { deliver_policy: nats_3.DeliverPolicy.New }),
|
|
191
|
+
};
|
|
192
|
+
await this.jsm.consumers.add(streamName, consumerConfig);
|
|
193
|
+
const consumer = await this.js.consumers.get(streamName, consumerName);
|
|
194
|
+
(_a = this.subs)[subject] ?? (_a[subject] = {});
|
|
195
|
+
this.subs[subject][`${streamName}.${consumerName}`] = consumer;
|
|
196
|
+
nx_frame_be_1.APP.logger.info(`📡 Broadcast listening on '${subject}' with ephemeral consumer '${consumerName}'`);
|
|
197
|
+
return consumer;
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
nx_frame_be_1.APP.logger.error(`❌ Failed to setup broadcast consumer for '${subject}':`, error);
|
|
201
|
+
throw error;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
161
204
|
/**
|
|
162
205
|
*
|
|
163
206
|
* @param {*} key
|
|
@@ -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;;;;;;;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;
|
|
1
|
+
{"version":3,"file":"nats-client-manager.js","sourceRoot":"","sources":["../../src/events/nats-client-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { RevocationDenylistOptions } from './types/revocation.interfaces';
|
|
2
|
+
export declare class RevocationDenylist {
|
|
3
|
+
private readonly entries;
|
|
4
|
+
private ttlMs;
|
|
5
|
+
private readonly sweepMs;
|
|
6
|
+
private readonly onError;
|
|
7
|
+
private timer?;
|
|
8
|
+
constructor(opts?: RevocationDenylistOptions);
|
|
9
|
+
/**
|
|
10
|
+
* Override the default entry lifetime (e.g. once the service has resolved its
|
|
11
|
+
* own access-token TTL from `JWT_VALIDITY`). Only affects entries added after.
|
|
12
|
+
*/
|
|
13
|
+
configure(ttlMs: number): void;
|
|
14
|
+
/**
|
|
15
|
+
* Revoke a token id. `expiresAt` (epoch ms) pins an exact lifetime; when
|
|
16
|
+
* omitted the entry lives for the configured TTL. A later revocation of the
|
|
17
|
+
* same jti keeps the LATER expiry (never shortens an existing entry).
|
|
18
|
+
*/
|
|
19
|
+
add(jti: string, expiresAt?: number): void;
|
|
20
|
+
/**
|
|
21
|
+
* Is this token id currently revoked? Expired entries are purged lazily on
|
|
22
|
+
* read so a stale entry never reports a false positive after its window.
|
|
23
|
+
*/
|
|
24
|
+
has(jti: string): boolean;
|
|
25
|
+
/** Drop every entry whose window has elapsed. */
|
|
26
|
+
sweep(): void;
|
|
27
|
+
/** Number of currently-tracked entries (post-sweep view is via `sweep()`). */
|
|
28
|
+
get size(): number;
|
|
29
|
+
/** Forget everything (test teardown / full reset). */
|
|
30
|
+
clear(): void;
|
|
31
|
+
/** Start the periodic sweep. The timer is `unref`'d so it never holds the process. */
|
|
32
|
+
start(): void;
|
|
33
|
+
/** Stop the periodic sweep (graceful shutdown / test teardown). */
|
|
34
|
+
stop(): void;
|
|
35
|
+
}
|
|
36
|
+
export declare const revocationDenylist: RevocationDenylist;
|
|
37
|
+
//# sourceMappingURL=revocation-denylist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revocation-denylist.d.ts","sourceRoot":"","sources":["../../src/events/revocation-denylist.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,yBAAyB,EAAE,MAA+B,+BAA+B,CAAC;AAGnG,qBAAa,kBAAkB;IAI7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IAErD,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IAEjD,OAAO,CAAC,KAAK,CAAC,CAAiC;gBAEnC,IAAI,GAAE,yBAA8B;IAOhD;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAW1C;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAezB,iDAAiD;IACjD,KAAK,IAAI,IAAI;IAQb,8EAA8E;IAC9E,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,sDAAsD;IACtD,KAAK,IAAI,IAAI;IAKb,sFAAsF;IACtF,KAAK,IAAI,IAAI;IAYb,mEAAmE;IACnE,IAAI,IAAI,IAAI;CAOb;AAKD,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* ────────────────────────────────────────────────────────────────────────────
|
|
3
|
+
* REVOCATION DENYLIST — near-real-time access-token revocation (Step 3.7 / S5)
|
|
4
|
+
*
|
|
5
|
+
* Closes finding S5's residual gap: with opzione-C (2.6) a resource service
|
|
6
|
+
* (app-srv) trusts a short-lived access token and rebuilds `context.user` from
|
|
7
|
+
* its claims, so a logout/role-change only takes effect after the access TTL
|
|
8
|
+
* expires. This denylist shortens that window to ~broker latency: auth-srv
|
|
9
|
+
* broadcasts the revoked `jti` on `access.revoked`, every service adds it here,
|
|
10
|
+
* and `isRevoked` denies it immediately.
|
|
11
|
+
*
|
|
12
|
+
* In-memory + best-effort BY DESIGN: it is an OPTIMISATION on top of the short
|
|
13
|
+
* TTL, never a correctness dependency. If the broker is down or an entry is lost
|
|
14
|
+
* (process restart without replay) the behaviour degrades gracefully to the
|
|
15
|
+
* opzione-C baseline (≤ 1 access TTL of staleness). Entries auto-expire once the
|
|
16
|
+
* revoked token could no longer be presented, so the map cannot grow unbounded.
|
|
17
|
+
* ──────────────────────────────────────────────────────────────────────────── */
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.revocationDenylist = exports.RevocationDenylist = void 0;
|
|
20
|
+
const revocation_constants_1 = require("./types/revocation.constants");
|
|
21
|
+
class RevocationDenylist {
|
|
22
|
+
constructor(opts = {}) {
|
|
23
|
+
// jti → absolute expiry (epoch ms). After that instant the revoked token has
|
|
24
|
+
// itself expired, so the entry is useless and gets swept.
|
|
25
|
+
this.entries = new Map();
|
|
26
|
+
this.ttlMs = opts.ttlMs ?? revocation_constants_1.DEFAULT_DENYLIST_TTL_MS;
|
|
27
|
+
this.sweepMs = opts.sweepIntervalMs ?? revocation_constants_1.DEFAULT_DENYLIST_SWEEP_MS;
|
|
28
|
+
this.onError = opts.onError ?? (() => { });
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Override the default entry lifetime (e.g. once the service has resolved its
|
|
32
|
+
* own access-token TTL from `JWT_VALIDITY`). Only affects entries added after.
|
|
33
|
+
*/
|
|
34
|
+
configure(ttlMs) {
|
|
35
|
+
if (ttlMs > 0)
|
|
36
|
+
this.ttlMs = ttlMs;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Revoke a token id. `expiresAt` (epoch ms) pins an exact lifetime; when
|
|
40
|
+
* omitted the entry lives for the configured TTL. A later revocation of the
|
|
41
|
+
* same jti keeps the LATER expiry (never shortens an existing entry).
|
|
42
|
+
*/
|
|
43
|
+
add(jti, expiresAt) {
|
|
44
|
+
if (!jti)
|
|
45
|
+
return;
|
|
46
|
+
const until = expiresAt ?? Date.now() + this.ttlMs;
|
|
47
|
+
const existing = this.entries.get(jti);
|
|
48
|
+
if (existing === undefined || until > existing)
|
|
49
|
+
this.entries.set(jti, until);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Is this token id currently revoked? Expired entries are purged lazily on
|
|
53
|
+
* read so a stale entry never reports a false positive after its window.
|
|
54
|
+
*/
|
|
55
|
+
has(jti) {
|
|
56
|
+
if (!jti)
|
|
57
|
+
return false;
|
|
58
|
+
const until = this.entries.get(jti);
|
|
59
|
+
if (until === undefined)
|
|
60
|
+
return false;
|
|
61
|
+
if (until <= Date.now()) {
|
|
62
|
+
this.entries.delete(jti);
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
/** Drop every entry whose window has elapsed. */
|
|
68
|
+
sweep() {
|
|
69
|
+
const now = Date.now();
|
|
70
|
+
for (const [jti, until] of this.entries)
|
|
71
|
+
if (until <= now)
|
|
72
|
+
this.entries.delete(jti);
|
|
73
|
+
}
|
|
74
|
+
/** Number of currently-tracked entries (post-sweep view is via `sweep()`). */
|
|
75
|
+
get size() {
|
|
76
|
+
return this.entries.size;
|
|
77
|
+
}
|
|
78
|
+
/** Forget everything (test teardown / full reset). */
|
|
79
|
+
clear() {
|
|
80
|
+
this.entries.clear();
|
|
81
|
+
}
|
|
82
|
+
/** Start the periodic sweep. The timer is `unref`'d so it never holds the process. */
|
|
83
|
+
start() {
|
|
84
|
+
if (this.timer)
|
|
85
|
+
return;
|
|
86
|
+
this.timer = setInterval(() => {
|
|
87
|
+
try {
|
|
88
|
+
this.sweep();
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
this.onError(err);
|
|
92
|
+
}
|
|
93
|
+
}, this.sweepMs);
|
|
94
|
+
this.timer.unref?.();
|
|
95
|
+
}
|
|
96
|
+
/** Stop the periodic sweep (graceful shutdown / test teardown). */
|
|
97
|
+
stop() {
|
|
98
|
+
if (this.timer) {
|
|
99
|
+
clearInterval(this.timer);
|
|
100
|
+
this.timer = undefined;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.RevocationDenylist = RevocationDenylist;
|
|
105
|
+
// Process-wide singleton: the HTTP auth middleware (`isRevoked`) and the
|
|
106
|
+
// broadcast listener that feeds it must share the SAME instance, so it is a
|
|
107
|
+
// module singleton (mirrors the outbox / publisher-registry pattern).
|
|
108
|
+
exports.revocationDenylist = new RevocationDenylist();
|
|
109
|
+
//# sourceMappingURL=revocation-denylist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revocation-denylist.js","sourceRoot":"","sources":["../../src/events/revocation-denylist.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ClientProvider } from './interfaces';
|
|
2
|
+
import { NatsClientManager } from './nats-client-manager';
|
|
3
|
+
import { RevocationListenerOptions } from './types/revocation.interfaces';
|
|
4
|
+
interface NatsProvider extends ClientProvider {
|
|
5
|
+
readonly client: NatsClientManager;
|
|
6
|
+
}
|
|
7
|
+
export declare class RevocationListener {
|
|
8
|
+
private readonly provider;
|
|
9
|
+
private consumer?;
|
|
10
|
+
private listening;
|
|
11
|
+
private readonly lookbackMs;
|
|
12
|
+
private readonly onError;
|
|
13
|
+
constructor(provider: NatsProvider, opts?: RevocationListenerOptions);
|
|
14
|
+
/**
|
|
15
|
+
* Subscribe (broadcast) to `access.revoked` and start draining. Startup replay
|
|
16
|
+
* is bounded by `lookbackMs` so the denylist is rebuilt from the recent stream
|
|
17
|
+
* on a restart.
|
|
18
|
+
*/
|
|
19
|
+
listen(): Promise<void>;
|
|
20
|
+
private consume;
|
|
21
|
+
private handle;
|
|
22
|
+
/** Stop draining (graceful shutdown / test teardown). */
|
|
23
|
+
stop(): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=revocation-listener.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revocation-listener.d.ts","sourceRoot":"","sources":["../../src/events/revocation-listener.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,cAAc,EAAE,MAAoB,cAAc,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAiB,uBAAuB,CAAC;AAIrE,OAAO,EAAE,yBAAyB,EAAE,MAAS,+BAA+B,CAAC;AAM7E,UAAU,YAAa,SAAQ,cAAc;IAC3C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;CACpC;AAED,qBAAa,kBAAkB;IAQjB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IANrC,OAAO,CAAC,QAAQ,CAAC,CAAa;IAC9B,OAAO,CAAC,SAAS,CAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;gBAEvB,QAAQ,EAAE,YAAY,EAAE,IAAI,GAAE,yBAA8B;IAMzF;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAQf,OAAO;IA+BrB,OAAO,CAAC,MAAM;IAkBd,yDAAyD;IACnD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAc5B"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* ────────────────────────────────────────────────────────────────────────────
|
|
3
|
+
* REVOCATION LISTENER — feeds the denylist from `access.revoked` (Step 3.7 / S5)
|
|
4
|
+
*
|
|
5
|
+
* A BROADCAST consumer (ephemeral, per-instance) of the ACCESS_EVENTS stream: it
|
|
6
|
+
* unwraps every `access.revoked` event and adds its `jti` to the shared
|
|
7
|
+
* {@link RevocationDenylist}. Unlike a domain NatsListener it is deliberately
|
|
8
|
+
* lightweight — no DLQ, no cascade, no version guard: a revocation is idempotent
|
|
9
|
+
* (add is set-like) and best-effort, so a malformed/failed message is just acked
|
|
10
|
+
* and dropped rather than retried (which would replay a useless loop).
|
|
11
|
+
*
|
|
12
|
+
* Broadcast + startup replay guarantee EVERY instance denies a revoked token
|
|
13
|
+
* near-real-time, and a restarting instance rebuilds recent revocations from the
|
|
14
|
+
* stream (decision 2a).
|
|
15
|
+
* ──────────────────────────────────────────────────────────────────────────── */
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.RevocationListener = void 0;
|
|
18
|
+
const nx_frame_be_1 = require("@nextage/nx-frame-be");
|
|
19
|
+
const cascade_1 = require("./cascade");
|
|
20
|
+
const revocation_denylist_1 = require("./revocation-denylist");
|
|
21
|
+
const revocation_constants_1 = require("./types/revocation.constants");
|
|
22
|
+
const enums_1 = require("./types/enums");
|
|
23
|
+
class RevocationListener {
|
|
24
|
+
constructor(provider, opts = {}) {
|
|
25
|
+
this.provider = provider;
|
|
26
|
+
this.listening = false;
|
|
27
|
+
this.lookbackMs = opts.lookbackMs ?? 0;
|
|
28
|
+
this.onError = opts.onError ?? (() => { });
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Subscribe (broadcast) to `access.revoked` and start draining. Startup replay
|
|
32
|
+
* is bounded by `lookbackMs` so the denylist is rebuilt from the recent stream
|
|
33
|
+
* on a restart.
|
|
34
|
+
*/
|
|
35
|
+
async listen() {
|
|
36
|
+
this.consumer = await this.provider.client.subscribeBroadcast(enums_1.Subjects.AccessRevoked, revocation_constants_1.ACCESS_STREAM, { lookbackMs: this.lookbackMs });
|
|
37
|
+
this.listening = true;
|
|
38
|
+
void this.consume();
|
|
39
|
+
}
|
|
40
|
+
async consume() {
|
|
41
|
+
if (!this.consumer)
|
|
42
|
+
return;
|
|
43
|
+
try {
|
|
44
|
+
const messages = await this.consumer.consume();
|
|
45
|
+
for await (const msg of messages) {
|
|
46
|
+
if (!this.listening)
|
|
47
|
+
break;
|
|
48
|
+
this.handle(msg);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
// A failure raised while we are tearing down (`stop()` already set
|
|
53
|
+
// `listening = false`) is the expected consequence of the closing NATS
|
|
54
|
+
// connection (CONNECTION_CLOSED) — not a fault. Stay silent and do not
|
|
55
|
+
// reschedule. Only surface/retry errors that happen while we still intend
|
|
56
|
+
// to listen (e.g. a broker hiccup during normal operation).
|
|
57
|
+
if (!this.listening)
|
|
58
|
+
return;
|
|
59
|
+
this.onError(err);
|
|
60
|
+
// Best-effort: retry the consume loop after a short delay while listening.
|
|
61
|
+
setTimeout(() => void this.consume(), 5000);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
handle(msg) {
|
|
65
|
+
try {
|
|
66
|
+
const { data } = (0, cascade_1.unwrapEnvelope)(JSON.parse(new TextDecoder().decode(msg.data)));
|
|
67
|
+
if (data?.jti)
|
|
68
|
+
revocation_denylist_1.revocationDenylist.add(data.jti, data.exp);
|
|
69
|
+
msg.ack();
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
// A malformed revocation is not worth retrying — drop it and move on.
|
|
73
|
+
this.onError(err);
|
|
74
|
+
msg.ack();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** Stop draining (graceful shutdown / test teardown). */
|
|
78
|
+
async stop() {
|
|
79
|
+
this.listening = false;
|
|
80
|
+
// Best-effort delete: during graceful shutdown the NATS connection may already
|
|
81
|
+
// be closing (CONNECTION_CLOSED) — harmless, the ephemeral consumer is reaped
|
|
82
|
+
// by its `inactive_threshold` anyway. A teardown error is never surfaced.
|
|
83
|
+
try {
|
|
84
|
+
await this.consumer?.delete();
|
|
85
|
+
}
|
|
86
|
+
catch { /* teardown — ignore */ }
|
|
87
|
+
this.consumer = undefined;
|
|
88
|
+
nx_frame_be_1.APP.logger.info('🔒 Revocation listener stopped');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.RevocationListener = RevocationListener;
|
|
92
|
+
//# sourceMappingURL=revocation-listener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revocation-listener.js","sourceRoot":"","sources":["../../src/events/revocation-listener.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;kFAakF;;;AAElF,sDAAoE;AAIpE,uCAAyD;AACzD,+DAAqE;AAGrE,uEAA4E;AAC5E,yCAA6D;AAQ7D,MAAa,kBAAkB;IAQ7B,YAA6B,QAAsB,EAAE,OAAkC,EAAE;QAA5D,aAAQ,GAAR,QAAQ,CAAc;QAL3C,cAAS,GAAI,KAAK,CAAC;QAOzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,GAAM,IAAI,CAAC,OAAO,IAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM;QAEV,IAAI,CAAC,QAAQ,GAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,gBAAQ,CAAC,aAAa,EAAE,oCAAa,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACvI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,OAAO;QAEnB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE3B,IAAI,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAE/C,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAEjC,IAAI,CAAC,IAAI,CAAC,SAAS;oBAAE,MAAM;gBAE3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,GAAG,EAAE,CAAC;YAEX,mEAAmE;YACnE,uEAAuE;YACvE,uEAAuE;YACvE,0EAA0E;YAC1E,4DAA4D;YAC5D,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAE5B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAElB,2EAA2E;YAC3E,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,GAAU;QAEvB,IAAI,CAAC;YAEH,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,wBAAc,EAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEnG,IAAI,IAAI,EAAE,GAAG;gBAAE,wCAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAE1D,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,GAAG,EAAE,CAAC;YAEX,sEAAsE;YACtE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAClB,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,IAAI;QAER,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,+EAA+E;QAC/E,8EAA8E;QAC9E,0EAA0E;QAC1E,IAAI,CAAC;YAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,CAAC;QACtC,MAAM,CAAC,CAAC,uBAAuB,CAAC,CAAC;QAEjC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAE1B,iBAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;CACF;AA3FD,gDA2FC"}
|
|
@@ -79,7 +79,14 @@ export declare enum Subjects {
|
|
|
79
79
|
RiskAnalysisRemoved = "risk.analysis.removed",
|
|
80
80
|
RiskAssetCreated = "risk.asset.created",
|
|
81
81
|
RiskAssetUpdated = "risk.asset.updated",
|
|
82
|
-
RiskAssetRemoved = "risk.asset.removed"
|
|
82
|
+
RiskAssetRemoved = "risk.asset.removed",
|
|
83
|
+
/****************
|
|
84
|
+
* BUSINESS-MNG *
|
|
85
|
+
****************/
|
|
86
|
+
/****************
|
|
87
|
+
* SECURITY *
|
|
88
|
+
****************/
|
|
89
|
+
AccessRevoked = "access.revoked"
|
|
83
90
|
}
|
|
84
91
|
export declare enum QueueEventType {
|
|
85
92
|
create = "queue.create",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../../src/events/types/enums.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAElB;;sBAEkB;IAGlB,mBAAmB,yBAA8B;IACjD,mBAAmB,yBAA8B;IACjD,mBAAmB,yBAA8B;IAGjD,eAAe,qBAA8B;IAC7C,eAAe,qBAA8B;IAC7C,eAAe,qBAA8B;IAG7C,oBAAoB,0BAA8B;IAClD,oBAAoB,0BAA8B;IAClD,oBAAoB,0BAA8B;IAGlD,kBAAkB,wBAA8B;IAChD,kBAAkB,wBAA8B;IAChD,kBAAkB,wBAA8B;IAGhD,uBAAuB,6BAA8B;IACrD,uBAAuB,6BAA8B;IACrD,uBAAuB,6BAA8B;IAGrD,gBAAgB,sBAA8B;IAC9C,gBAAgB,sBAA8B;IAC9C,gBAAgB,sBAA8B;IAE9C;;sBAEkB;IAGlB,iBAAiB,uBAA2B;IAC5C,iBAAiB,uBAA2B;IAC5C,iBAAiB,uBAA2B;IAG5C,cAAc,oBAA2B;IACzC,cAAc,oBAA2B;IACzC,cAAc,oBAA2B;IAGzC,aAAa,mBAA2B;IACxC,aAAa,mBAA2B;IACxC,aAAa,mBAA2B;IAGxC,oBAAoB,iBAAkB;IACtC,oBAAoB,iBAAkB;IACtC,oBAAoB,iBAAkB;IAEtC;;uBAEmB;IAGnB,WAAW,iBAAyB;IACpC,WAAW,iBAAyB;IACpC,WAAW,iBAAyB;IAGpC,mBAAmB,yBAAyB;IAC5C,mBAAmB,yBAAyB;IAC5C,mBAAmB,yBAAyB;IAE5C;;uBAEmB;IAGnB,cAAc,oBAA4B;IAC1C,cAAc,oBAA4B;IAC1C,cAAc,oBAA4B;IAG1C,mBAAmB,0BAA6B;IAChD,mBAAmB,0BAA6B;IAChD,mBAAmB,0BAA6B;IAGhD,qBAAqB,4BAA6B;IAClD,qBAAqB,4BAA6B;IAClD,qBAAqB,4BAA6B;IAGlD,oBAAoB,2BAA6B;IACjD,oBAAoB,2BAA6B;IACjD,oBAAoB,2BAA6B;IAGjD,sBAAsB,6BAA6B;IACnD,sBAAsB,6BAA6B;IACnD,sBAAsB,6BAA6B;IAGnD,kBAAkB,yBAA6B;IAC/C,kBAAkB,yBAA6B;IAC/C,kBAAkB,yBAA6B;IAG/C,sBAAsB,6BAA6B;IACnD,sBAAsB,6BAA6B;IACnD,sBAAsB,6BAA6B;IAGnD,qBAAqB,4BAA6B;IAClD,qBAAqB,4BAA6B;IAClD,qBAAqB,4BAA6B;IAElD;;sBAEkB;IAGlB,mBAAmB,0BAA0B;IAC7C,mBAAmB,0BAA0B;IAC7C,mBAAmB,0BAA0B;IAG7C,gBAAgB,uBAA0B;IAC1C,gBAAgB,uBAA0B;IAC1C,gBAAgB,uBAA0B;
|
|
1
|
+
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../../src/events/types/enums.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAElB;;sBAEkB;IAGlB,mBAAmB,yBAA8B;IACjD,mBAAmB,yBAA8B;IACjD,mBAAmB,yBAA8B;IAGjD,eAAe,qBAA8B;IAC7C,eAAe,qBAA8B;IAC7C,eAAe,qBAA8B;IAG7C,oBAAoB,0BAA8B;IAClD,oBAAoB,0BAA8B;IAClD,oBAAoB,0BAA8B;IAGlD,kBAAkB,wBAA8B;IAChD,kBAAkB,wBAA8B;IAChD,kBAAkB,wBAA8B;IAGhD,uBAAuB,6BAA8B;IACrD,uBAAuB,6BAA8B;IACrD,uBAAuB,6BAA8B;IAGrD,gBAAgB,sBAA8B;IAC9C,gBAAgB,sBAA8B;IAC9C,gBAAgB,sBAA8B;IAE9C;;sBAEkB;IAGlB,iBAAiB,uBAA2B;IAC5C,iBAAiB,uBAA2B;IAC5C,iBAAiB,uBAA2B;IAG5C,cAAc,oBAA2B;IACzC,cAAc,oBAA2B;IACzC,cAAc,oBAA2B;IAGzC,aAAa,mBAA2B;IACxC,aAAa,mBAA2B;IACxC,aAAa,mBAA2B;IAGxC,oBAAoB,iBAAkB;IACtC,oBAAoB,iBAAkB;IACtC,oBAAoB,iBAAkB;IAEtC;;uBAEmB;IAGnB,WAAW,iBAAyB;IACpC,WAAW,iBAAyB;IACpC,WAAW,iBAAyB;IAGpC,mBAAmB,yBAAyB;IAC5C,mBAAmB,yBAAyB;IAC5C,mBAAmB,yBAAyB;IAE5C;;uBAEmB;IAGnB,cAAc,oBAA4B;IAC1C,cAAc,oBAA4B;IAC1C,cAAc,oBAA4B;IAG1C,mBAAmB,0BAA6B;IAChD,mBAAmB,0BAA6B;IAChD,mBAAmB,0BAA6B;IAGhD,qBAAqB,4BAA6B;IAClD,qBAAqB,4BAA6B;IAClD,qBAAqB,4BAA6B;IAGlD,oBAAoB,2BAA6B;IACjD,oBAAoB,2BAA6B;IACjD,oBAAoB,2BAA6B;IAGjD,sBAAsB,6BAA6B;IACnD,sBAAsB,6BAA6B;IACnD,sBAAsB,6BAA6B;IAGnD,kBAAkB,yBAA6B;IAC/C,kBAAkB,yBAA6B;IAC/C,kBAAkB,yBAA6B;IAG/C,sBAAsB,6BAA6B;IACnD,sBAAsB,6BAA6B;IACnD,sBAAsB,6BAA6B;IAGnD,qBAAqB,4BAA6B;IAClD,qBAAqB,4BAA6B;IAClD,qBAAqB,4BAA6B;IAElD;;sBAEkB;IAGlB,mBAAmB,0BAA0B;IAC7C,mBAAmB,0BAA0B;IAC7C,mBAAmB,0BAA0B;IAG7C,gBAAgB,uBAA0B;IAC1C,gBAAgB,uBAA0B;IAC1C,gBAAgB,uBAA0B;IAE1C;;sBAEkB;IAOlB;;sBAEkB;IAKlB,aAAa,mBAAyB;CACvC;AAED,oBAAY,cAAc;IACxB,MAAM,iBAAiB;IACvB,MAAM,iBAAiB;IACvB,MAAM,iBAAiB;CACxB"}
|
|
@@ -113,6 +113,13 @@ var Subjects;
|
|
|
113
113
|
// BusinessUnitCreated = 'bu.created',
|
|
114
114
|
// BusinessUnitUpdated = 'bu.updated',
|
|
115
115
|
// BusinessUnitRemoved = 'bu.removed',
|
|
116
|
+
/****************
|
|
117
|
+
* SECURITY *
|
|
118
|
+
****************/
|
|
119
|
+
// Access revocation (Step 3.7 / S5): auth-srv broadcasts a revoked access
|
|
120
|
+
// token id (jti) so every resource service can deny it near-real-time,
|
|
121
|
+
// instead of waiting for the short access TTL to expire.
|
|
122
|
+
Subjects["AccessRevoked"] = "access.revoked";
|
|
116
123
|
})(Subjects || (exports.Subjects = Subjects = {}));
|
|
117
124
|
var QueueEventType;
|
|
118
125
|
(function (QueueEventType) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/events/types/enums.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/events/types/enums.ts"],"names":[],"mappings":";;;AAAA,IAAY,QAqJX;AArJD,WAAY,QAAQ;IAElB;;sBAEkB;IAElB,gBAAgB;IAChB,wDAAiD,CAAA;IACjD,wDAAiD,CAAA;IACjD,wDAAiD,CAAA;IAEjD,WAAW;IACX,gDAA6C,CAAA;IAC7C,gDAA6C,CAAA;IAC7C,gDAA6C,CAAA;IAE7C,gBAAgB;IAChB,0DAAkD,CAAA;IAClD,0DAAkD,CAAA;IAClD,0DAAkD,CAAA;IAElD,cAAc;IACd,sDAAgD,CAAA;IAChD,sDAAgD,CAAA;IAChD,sDAAgD,CAAA;IAEhD,mBAAmB;IACnB,gEAAqD,CAAA;IACrD,gEAAqD,CAAA;IACrD,gEAAqD,CAAA;IAErD,YAAY;IACZ,kDAA8C,CAAA;IAC9C,kDAA8C,CAAA;IAC9C,kDAA8C,CAAA;IAE9C;;sBAEkB;IAElB,cAAc;IACd,oDAA4C,CAAA;IAC5C,oDAA4C,CAAA;IAC5C,oDAA4C,CAAA;IAE5C,UAAU;IACV,8CAAyC,CAAA;IACzC,8CAAyC,CAAA;IACzC,8CAAyC,CAAA;IAEzC,SAAS;IACT,4CAAwC,CAAA;IACxC,4CAAwC,CAAA;IACxC,4CAAwC,CAAA;IAExC,gBAAgB;IAChB,iDAAsC,CAAA;IACtC,iDAAsC,CAAA;IACtC,iDAAsC,CAAA;IAEtC;;uBAEmB;IAEnB,OAAO;IACP,wCAAoC,CAAA;IACpC,wCAAoC,CAAA;IACpC,wCAAoC,CAAA;IAEpC,eAAe;IACf,wDAA4C,CAAA;IAC5C,wDAA4C,CAAA;IAC5C,wDAA4C,CAAA;IAE5C;;uBAEmB;IAEnB,UAAU;IACV,8CAA0C,CAAA;IAC1C,8CAA0C,CAAA;IAC1C,8CAA0C,CAAA;IAE1C,kBAAkB;IAClB,yDAAgD,CAAA;IAChD,yDAAgD,CAAA;IAChD,yDAAgD,CAAA;IAEhD,iBAAiB;IACjB,6DAAkD,CAAA;IAClD,6DAAkD,CAAA;IAClD,6DAAkD,CAAA;IAElD,kBAAkB;IAClB,2DAAiD,CAAA;IACjD,2DAAiD,CAAA;IACjD,2DAAiD,CAAA;IAEjD,WAAW;IACX,+DAAmD,CAAA;IACnD,+DAAmD,CAAA;IACnD,+DAAmD,CAAA;IAEnD,eAAe;IACf,uDAA+C,CAAA;IAC/C,uDAA+C,CAAA;IAC/C,uDAA+C,CAAA;IAE/C,WAAW;IACX,+DAAmD,CAAA;IACnD,+DAAmD,CAAA;IACnD,+DAAmD,CAAA;IAEnD,UAAU;IACV,6DAAkD,CAAA;IAClD,6DAAkD,CAAA;IAClD,6DAAkD,CAAA;IAElD;;sBAEkB;IAElB,gBAAgB;IAChB,yDAA6C,CAAA;IAC7C,yDAA6C,CAAA;IAC7C,yDAA6C,CAAA;IAE7C,aAAa;IACb,mDAA0C,CAAA;IAC1C,mDAA0C,CAAA;IAC1C,mDAA0C,CAAA;IAE1C;;sBAEkB;IAElB,mBAAmB;IACnB,2CAA2C;IAC3C,2CAA2C;IAC3C,2CAA2C;IAE3C;;sBAEkB;IAElB,0EAA0E;IAC1E,uEAAuE;IACvE,yDAAyD;IACzD,4CAAsC,CAAA;AACxC,CAAC,EArJW,QAAQ,wBAAR,QAAQ,QAqJnB;AAED,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,yCAAuB,CAAA;IACvB,yCAAuB,CAAA;IACvB,yCAAuB,CAAA;AACzB,CAAC,EAJW,cAAc,8BAAd,cAAc,QAIzB"}
|
|
@@ -16,6 +16,7 @@ export * from './asset.constants';
|
|
|
16
16
|
export * from './dlq.constants';
|
|
17
17
|
export * from './event-envelope.constants';
|
|
18
18
|
export * from './relay.constants';
|
|
19
|
+
export * from './revocation.constants';
|
|
19
20
|
export * from './asset.interfaces';
|
|
20
21
|
export * from './control.interfaces';
|
|
21
22
|
export * from './dlq.interfaces';
|
|
@@ -23,6 +24,7 @@ export * from './event-envelope.interfaces';
|
|
|
23
24
|
export * from './events.interfaces';
|
|
24
25
|
export * from './outbox.interfaces';
|
|
25
26
|
export * from './relay.interfaces';
|
|
27
|
+
export * from './revocation.interfaces';
|
|
26
28
|
export * from './risk-analysis.interfaces';
|
|
27
29
|
export * from './threat.interfaces';
|
|
28
30
|
export * from './vulnerability.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;
|
|
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"}
|
|
@@ -32,6 +32,7 @@ __exportStar(require("./asset.constants"), exports);
|
|
|
32
32
|
__exportStar(require("./dlq.constants"), exports);
|
|
33
33
|
__exportStar(require("./event-envelope.constants"), exports);
|
|
34
34
|
__exportStar(require("./relay.constants"), exports);
|
|
35
|
+
__exportStar(require("./revocation.constants"), exports);
|
|
35
36
|
__exportStar(require("./asset.interfaces"), exports);
|
|
36
37
|
__exportStar(require("./control.interfaces"), exports);
|
|
37
38
|
__exportStar(require("./dlq.interfaces"), exports);
|
|
@@ -39,6 +40,7 @@ __exportStar(require("./event-envelope.interfaces"), exports);
|
|
|
39
40
|
__exportStar(require("./events.interfaces"), exports);
|
|
40
41
|
__exportStar(require("./outbox.interfaces"), exports);
|
|
41
42
|
__exportStar(require("./relay.interfaces"), exports);
|
|
43
|
+
__exportStar(require("./revocation.interfaces"), exports);
|
|
42
44
|
__exportStar(require("./risk-analysis.interfaces"), exports);
|
|
43
45
|
__exportStar(require("./threat.interfaces"), exports);
|
|
44
46
|
__exportStar(require("./vulnerability.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;
|
|
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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const ACCESS_STREAM = "ACCESS_EVENTS";
|
|
2
|
+
export declare const ACCESS_SUBJECT_FILTER = "access.*";
|
|
3
|
+
export declare const DEFAULT_DENYLIST_TTL_MS: number;
|
|
4
|
+
export declare const DENYLIST_TTL_MARGIN_MS: number;
|
|
5
|
+
export declare const DEFAULT_DENYLIST_SWEEP_MS: number;
|
|
6
|
+
export declare const DEFAULT_ACCESS_STREAM_MAX_AGE_MS: number;
|
|
7
|
+
export declare const DEFAULT_ACCESS_STREAM_MAX_MSGS = 10000;
|
|
8
|
+
//# sourceMappingURL=revocation.constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revocation.constants.d.ts","sourceRoot":"","sources":["../../../src/events/types/revocation.constants.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,aAAa,kBAA0B,CAAC;AACrD,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAKhD,eAAO,MAAM,uBAAuB,QAAiB,CAAC;AAItD,eAAO,MAAM,sBAAsB,QAAY,CAAC;AAGhD,eAAO,MAAM,yBAAyB,QAAY,CAAC;AAKnD,eAAO,MAAM,gCAAgC,QAAiB,CAAC;AAC/D,eAAO,MAAM,8BAA8B,QAAW,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Access-revocation denylist (Step 3.7 / S5) tuning + NATS topology defaults.
|
|
3
|
+
//
|
|
4
|
+
// auth-srv broadcasts `access.revoked` on the ACCESS_EVENTS stream; every
|
|
5
|
+
// resource service (app-srv) keeps an in-memory denylist of revoked access-token
|
|
6
|
+
// ids (jti) so a logged-out/revoked token is denied near-real-time instead of
|
|
7
|
+
// staying valid until its short TTL expires (the opzione-C baseline still holds
|
|
8
|
+
// as a safety net if the broker is unreachable).
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.DEFAULT_ACCESS_STREAM_MAX_MSGS = exports.DEFAULT_ACCESS_STREAM_MAX_AGE_MS = exports.DEFAULT_DENYLIST_SWEEP_MS = exports.DENYLIST_TTL_MARGIN_MS = exports.DEFAULT_DENYLIST_TTL_MS = exports.ACCESS_SUBJECT_FILTER = exports.ACCESS_STREAM = void 0;
|
|
11
|
+
exports.ACCESS_STREAM = 'ACCESS_EVENTS'; // JetStream stream name
|
|
12
|
+
exports.ACCESS_SUBJECT_FILTER = 'access.*'; // stream subject filter
|
|
13
|
+
// Fallback denylist entry lifetime when the access TTL cannot be derived from
|
|
14
|
+
// `JWT_VALIDITY`. An entry only needs to outlive the access token it revokes, so
|
|
15
|
+
// this mirrors the default 15m access TTL plus a clock-skew margin.
|
|
16
|
+
exports.DEFAULT_DENYLIST_TTL_MS = 15 * 60 * 1000; // 15 minutes
|
|
17
|
+
// Extra margin added on top of the access TTL so a denylist entry is guaranteed
|
|
18
|
+
// to outlive the token it revokes even under clock skew between services.
|
|
19
|
+
exports.DENYLIST_TTL_MARGIN_MS = 60 * 1000; // 60 seconds
|
|
20
|
+
// Periodic sweep that drops expired entries so the map cannot grow unbounded.
|
|
21
|
+
exports.DEFAULT_DENYLIST_SWEEP_MS = 60 * 1000; // 60 seconds
|
|
22
|
+
// Stream retention for ACCESS_EVENTS: revocations are only useful for as long as
|
|
23
|
+
// the revoked token could still be presented (≈ one access TTL). A short-ish
|
|
24
|
+
// retention keeps the stream tiny while still covering a restart replay window.
|
|
25
|
+
exports.DEFAULT_ACCESS_STREAM_MAX_AGE_MS = 60 * 60 * 1000; // 1 hour
|
|
26
|
+
exports.DEFAULT_ACCESS_STREAM_MAX_MSGS = 10000;
|
|
27
|
+
//# sourceMappingURL=revocation.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revocation.constants.js","sourceRoot":"","sources":["../../../src/events/types/revocation.constants.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,EAAE;AACF,0EAA0E;AAC1E,iFAAiF;AACjF,8EAA8E;AAC9E,gFAAgF;AAChF,iDAAiD;;;AAEpC,QAAA,aAAa,GAAW,eAAe,CAAC,CAAC,wBAAwB;AACjE,QAAA,qBAAqB,GAAG,UAAU,CAAC,CAAM,wBAAwB;AAE9E,8EAA8E;AAC9E,iFAAiF;AACjF,oEAAoE;AACvD,QAAA,uBAAuB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAEpE,gFAAgF;AAChF,0EAA0E;AAC7D,QAAA,sBAAsB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAE9D,8EAA8E;AACjE,QAAA,yBAAyB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAEjE,iFAAiF;AACjF,6EAA6E;AAC7E,gFAAgF;AACnE,QAAA,gCAAgC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AAC5D,QAAA,8BAA8B,GAAK,KAAM,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Subjects } from './enums';
|
|
2
|
+
export interface AccessRevokedData {
|
|
3
|
+
jti: string;
|
|
4
|
+
exp?: number;
|
|
5
|
+
}
|
|
6
|
+
export interface AccessRevokedEvent {
|
|
7
|
+
subject: Subjects.AccessRevoked;
|
|
8
|
+
data: AccessRevokedData;
|
|
9
|
+
}
|
|
10
|
+
export interface RevocationDenylistOptions {
|
|
11
|
+
ttlMs?: number;
|
|
12
|
+
sweepIntervalMs?: number;
|
|
13
|
+
onError?: (err: unknown) => void;
|
|
14
|
+
}
|
|
15
|
+
export interface RevocationListenerOptions {
|
|
16
|
+
lookbackMs?: number;
|
|
17
|
+
onError?: (err: unknown) => void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=revocation.interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revocation.interfaces.d.ts","sourceRoot":"","sources":["../../../src/events/types/revocation.interfaces.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAOnC,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAI,MAAM,CAAC;IACd,GAAG,CAAC,EAAG,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC;IAChC,IAAI,EAAK,iBAAiB,CAAC;CAC5B;AAKD,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAY,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAU,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAKD,MAAM,WAAW,yBAAyB;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAK,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Access-revocation contracts (Step 3.7 / S5). Kept separate from the denylist /
|
|
3
|
+
// listener / publisher logic that consumes them (house rule: types live in
|
|
4
|
+
// `<concern>.interfaces.ts`).
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
//# sourceMappingURL=revocation.interfaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revocation.interfaces.js","sourceRoot":"","sources":["../../../src/events/types/revocation.interfaces.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,2EAA2E;AAC3E,8BAA8B"}
|
package/build/utils/functs.d.ts
CHANGED
|
@@ -39,6 +39,15 @@ export declare function docToAttrs(item: BaseMongoDoc, getters?: boolean): NxObj
|
|
|
39
39
|
* @returns
|
|
40
40
|
*/
|
|
41
41
|
export declare function pathExists(path?: string): Promise<boolean>;
|
|
42
|
+
/**
|
|
43
|
+
* Parse a human duration into milliseconds.
|
|
44
|
+
*
|
|
45
|
+
* Accepts a bare number (already milliseconds) or a `<n><unit>` string with unit
|
|
46
|
+
* `s`/`m`/`h`/`d` (e.g. `'15m'`, `'7d'`, `'30s'`) — the same shorthand used for
|
|
47
|
+
* `JWT_VALIDITY`. Returns `undefined` for empty/unparseable input so callers can
|
|
48
|
+
* fall back to a default.
|
|
49
|
+
*/
|
|
50
|
+
export declare function parseDurationMs(input?: string | number): number | undefined;
|
|
42
51
|
/**
|
|
43
52
|
*
|
|
44
53
|
* @param dir
|
|
@@ -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;AAIhF;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAsE9D;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;;;;;;;;;;;;GAYG;AACH,wBAAsB,2BAA2B,CAAC,GAAG,GAAE,MAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCvF;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"}
|
|
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;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAsE9D;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;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAmB3E;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,GAAE,MAAiB,EAAE,KAAK,GAAE,MAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB3G;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,2BAA2B,CAAC,GAAG,GAAE,MAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCvF;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
|
@@ -41,6 +41,7 @@ exports.buildMongoDBConfig = buildMongoDBConfig;
|
|
|
41
41
|
exports.readEnv = readEnv;
|
|
42
42
|
exports.docToAttrs = docToAttrs;
|
|
43
43
|
exports.pathExists = pathExists;
|
|
44
|
+
exports.parseDurationMs = parseDurationMs;
|
|
44
45
|
exports.findAndImportInitFiles = findAndImportInitFiles;
|
|
45
46
|
exports.findAndImportGraphqlSchemas = findAndImportGraphqlSchemas;
|
|
46
47
|
exports.findFilesRecursive = findFilesRecursive;
|
|
@@ -279,6 +280,27 @@ async function pathExists(path = '') {
|
|
|
279
280
|
return false;
|
|
280
281
|
}
|
|
281
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* Parse a human duration into milliseconds.
|
|
285
|
+
*
|
|
286
|
+
* Accepts a bare number (already milliseconds) or a `<n><unit>` string with unit
|
|
287
|
+
* `s`/`m`/`h`/`d` (e.g. `'15m'`, `'7d'`, `'30s'`) — the same shorthand used for
|
|
288
|
+
* `JWT_VALIDITY`. Returns `undefined` for empty/unparseable input so callers can
|
|
289
|
+
* fall back to a default.
|
|
290
|
+
*/
|
|
291
|
+
function parseDurationMs(input) {
|
|
292
|
+
if (input === undefined || input === null || input === '')
|
|
293
|
+
return undefined;
|
|
294
|
+
if (typeof input === 'number')
|
|
295
|
+
return Number.isFinite(input) ? input : undefined;
|
|
296
|
+
const match = input.trim().match(/^(\d+)\s*(ms|s|m|h|d)?$/i);
|
|
297
|
+
if (!match)
|
|
298
|
+
return undefined;
|
|
299
|
+
const value = parseInt(match[1], 10);
|
|
300
|
+
const unit = (match[2] || 'ms').toLowerCase();
|
|
301
|
+
const factor = { ms: 1, s: 1000, m: 60000, h: 3600000, d: 86400000 };
|
|
302
|
+
return value * factor[unit];
|
|
303
|
+
}
|
|
282
304
|
/**
|
|
283
305
|
*
|
|
284
306
|
* @param dir
|
|
@@ -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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"}
|