@caracalai/revocation 0.1.2 → 0.1.4-rc.1
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/README.md +7 -0
- package/dist/iface.d.ts +3 -1
- package/dist/iface.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/inmem.d.ts +3 -1
- package/dist/inmem.d.ts.map +1 -1
- package/dist/inmem.js +21 -6
- package/dist/inmem.js.map +1 -1
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Caracal Revocation for TypeScript
|
|
2
|
+
|
|
3
|
+
TypeScript revocation lookup interface and in-memory default for Caracal resource servers.
|
|
4
|
+
|
|
5
|
+
The in-memory store is process-local. Distributed production deployments should use a connector-backed store and fail closed when revocation cannot be checked or writes cannot be confirmed.
|
|
6
|
+
|
|
7
|
+
Docs: https://caracal.run/sdks/revocation/
|
package/dist/iface.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export interface RevocationStore {
|
|
2
2
|
isRevoked: (sid: string) => boolean | Promise<boolean>;
|
|
3
|
-
markRevoked: (sid: string, ttlMs?: number) => void
|
|
3
|
+
markRevoked: (sid: string, ttlMs?: number) => void | Promise<void>;
|
|
4
|
+
currentDelegationEpoch?: (zoneId: string) => number | Promise<number>;
|
|
5
|
+
markDelegationEpoch?: (zoneId: string, epoch: number, ttlMs?: number) => void | Promise<void>;
|
|
4
6
|
}
|
|
5
7
|
//# sourceMappingURL=iface.d.ts.map
|
package/dist/iface.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../src/iface.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACtD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../src/iface.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACtD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClE,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACrE,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9F"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (C) 2026 Garudex Labs. All Rights Reserved.
|
|
2
2
|
// Caracal, a product of Garudex Labs
|
|
3
3
|
//
|
|
4
|
-
// @caracalai/revocation
|
|
4
|
+
// @caracalai/revocation: revocation iface and in-memory default.
|
|
5
5
|
export * from './iface.js';
|
|
6
6
|
export * from './inmem.js';
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,iEAAiE;AAEjE,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
|
package/dist/inmem.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { RevocationStore } from './iface.js';
|
|
2
2
|
export declare class InMemoryRevocationStore implements RevocationStore {
|
|
3
3
|
private readonly entries;
|
|
4
|
+
private readonly delegationEpochs;
|
|
4
5
|
private readonly defaultTtlMs;
|
|
5
6
|
private readonly maxEntries;
|
|
6
7
|
constructor(opts?: {
|
|
@@ -9,8 +10,9 @@ export declare class InMemoryRevocationStore implements RevocationStore {
|
|
|
9
10
|
});
|
|
10
11
|
isRevoked(sid: string): boolean;
|
|
11
12
|
markRevoked(sid: string, ttlMs?: number): void;
|
|
13
|
+
currentDelegationEpoch(zoneId: string): number;
|
|
14
|
+
markDelegationEpoch(zoneId: string, epoch: number, ttlMs?: number): void;
|
|
12
15
|
size(): number;
|
|
13
16
|
private reapExpired;
|
|
14
|
-
private evictOldest;
|
|
15
17
|
}
|
|
16
18
|
//# sourceMappingURL=inmem.d.ts.map
|
package/dist/inmem.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inmem.d.ts","sourceRoot":"","sources":["../src/inmem.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAMjD,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;gBAEvB,IAAI,GAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO;IAKrE,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAU/B,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ9C,
|
|
1
|
+
{"version":3,"file":"inmem.d.ts","sourceRoot":"","sources":["../src/inmem.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAMjD,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+C;IAChF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;gBAEvB,IAAI,GAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO;IAKrE,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAU/B,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ9C,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAU9C,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IASxE,IAAI,IAAI,MAAM;IAId,OAAO,CAAC,WAAW;CAOpB"}
|
package/dist/inmem.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// In-memory RevocationStore with per-entry TTLs and bounded capacity.
|
|
5
5
|
export class InMemoryRevocationStore {
|
|
6
6
|
entries = new Map();
|
|
7
|
+
delegationEpochs = new Map();
|
|
7
8
|
defaultTtlMs;
|
|
8
9
|
maxEntries;
|
|
9
10
|
constructor(opts = {}) {
|
|
@@ -24,10 +25,29 @@ export class InMemoryRevocationStore {
|
|
|
24
25
|
if (this.entries.size >= this.maxEntries) {
|
|
25
26
|
this.reapExpired();
|
|
26
27
|
if (this.entries.size >= this.maxEntries)
|
|
27
|
-
|
|
28
|
+
throw new Error('Revocation store capacity exceeded');
|
|
28
29
|
}
|
|
29
30
|
this.entries.set(sid, { expiresAt: Date.now() + (ttlMs ?? this.defaultTtlMs) });
|
|
30
31
|
}
|
|
32
|
+
currentDelegationEpoch(zoneId) {
|
|
33
|
+
const entry = this.delegationEpochs.get(zoneId);
|
|
34
|
+
if (!entry)
|
|
35
|
+
return 0;
|
|
36
|
+
if (entry.expiresAt <= Date.now()) {
|
|
37
|
+
this.delegationEpochs.delete(zoneId);
|
|
38
|
+
return 0;
|
|
39
|
+
}
|
|
40
|
+
return entry.epoch;
|
|
41
|
+
}
|
|
42
|
+
markDelegationEpoch(zoneId, epoch, ttlMs) {
|
|
43
|
+
const current = this.currentDelegationEpoch(zoneId);
|
|
44
|
+
if (epoch <= current)
|
|
45
|
+
return;
|
|
46
|
+
this.delegationEpochs.set(zoneId, {
|
|
47
|
+
epoch,
|
|
48
|
+
expiresAt: Date.now() + (ttlMs ?? this.defaultTtlMs),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
31
51
|
size() {
|
|
32
52
|
return this.entries.size;
|
|
33
53
|
}
|
|
@@ -38,10 +58,5 @@ export class InMemoryRevocationStore {
|
|
|
38
58
|
this.entries.delete(sid);
|
|
39
59
|
}
|
|
40
60
|
}
|
|
41
|
-
evictOldest() {
|
|
42
|
-
const it = this.entries.keys().next();
|
|
43
|
-
if (!it.done)
|
|
44
|
-
this.entries.delete(it.value);
|
|
45
|
-
}
|
|
46
61
|
}
|
|
47
62
|
//# sourceMappingURL=inmem.js.map
|
package/dist/inmem.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inmem.js","sourceRoot":"","sources":["../src/inmem.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,sEAAsE;AAQtE,MAAM,OAAO,uBAAuB;IACjB,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAA;IAClC,YAAY,CAAQ;IACpB,UAAU,CAAQ;IAEnC,YAAY,OAAuD,EAAE;QACnE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;QAC5D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,OAAO,CAAA;IAC9C,CAAC;IAED,SAAS,CAAC,GAAW;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAA;QACxB,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACxB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,WAAW,CAAC,GAAW,EAAE,KAAc;QACrC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,CAAC,WAAW,EAAE,CAAA;YAClB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU;gBAAE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"inmem.js","sourceRoot":"","sources":["../src/inmem.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,sEAAsE;AAQtE,MAAM,OAAO,uBAAuB;IACjB,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAA;IAClC,gBAAgB,GAAG,IAAI,GAAG,EAAqC,CAAA;IAC/D,YAAY,CAAQ;IACpB,UAAU,CAAQ;IAEnC,YAAY,OAAuD,EAAE;QACnE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;QAC5D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,OAAO,CAAA;IAC9C,CAAC;IAED,SAAS,CAAC,GAAW;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAA;QACxB,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACxB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,WAAW,CAAC,GAAW,EAAE,KAAc;QACrC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,CAAC,WAAW,EAAE,CAAA;YAClB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACjG,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;IACjF,CAAC;IAED,sBAAsB,CAAC,MAAc;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC/C,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,CAAA;QACpB,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YACpC,OAAO,CAAC,CAAA;QACV,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,CAAA;IACpB,CAAC;IAED,mBAAmB,CAAC,MAAc,EAAE,KAAa,EAAE,KAAc;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAA;QACnD,IAAI,KAAK,IAAI,OAAO;YAAE,OAAM;QAC5B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE;YAChC,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;SACrD,CAAC,CAAA;IACJ,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;IAC1B,CAAC;IAEO,WAAW;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,SAAS,IAAI,GAAG;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;CAEF"}
|
package/package.json
CHANGED