@caracalai/identity 0.1.5-rc.2 → 0.1.5
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/dist/jwks.d.ts +6 -6
- package/dist/jwks.d.ts.map +1 -1
- package/dist/jwks.js +33 -20
- package/dist/jwks.js.map +1 -1
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +24 -3
- package/dist/verify.js.map +1 -1
- package/package.json +4 -4
package/dist/jwks.d.ts
CHANGED
|
@@ -6,12 +6,12 @@ export interface JwksCacheOptions {
|
|
|
6
6
|
fetchImpl?: typeof fetch;
|
|
7
7
|
}
|
|
8
8
|
export interface JwksCache {
|
|
9
|
-
getKeySet: (issuer: string) => Promise<JWTVerifyGetKey>;
|
|
10
|
-
warm: (issuer: string) => Promise<void>;
|
|
11
|
-
clear: (issuer?: string) => void;
|
|
9
|
+
getKeySet: (issuer: string, zoneId: string) => Promise<JWTVerifyGetKey>;
|
|
10
|
+
warm: (issuer: string, zoneId: string) => Promise<void>;
|
|
11
|
+
clear: (issuer?: string, zoneId?: string) => void;
|
|
12
12
|
}
|
|
13
13
|
export declare function createJwksCache(opts?: JwksCacheOptions): JwksCache;
|
|
14
|
-
export declare function getKeySet(issuer: string): Promise<JWTVerifyGetKey>;
|
|
15
|
-
export declare function warmJwks(issuer: string): Promise<void>;
|
|
16
|
-
export declare function clearJwksCache(issuer?: string): void;
|
|
14
|
+
export declare function getKeySet(issuer: string, zoneId: string): Promise<JWTVerifyGetKey>;
|
|
15
|
+
export declare function warmJwks(issuer: string, zoneId: string): Promise<void>;
|
|
16
|
+
export declare function clearJwksCache(issuer?: string, zoneId?: string): void;
|
|
17
17
|
//# sourceMappingURL=jwks.d.ts.map
|
package/dist/jwks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwks.d.ts","sourceRoot":"","sources":["../src/jwks.ts"],"names":[],"mappings":"AAKA,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,MAAM,CAAA;AAQ9D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"jwks.d.ts","sourceRoot":"","sources":["../src/jwks.ts"],"names":[],"mappings":"AAKA,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,MAAM,CAAA;AAQ9D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;IACvE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvD,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAClD;AA0BD,wBAAgB,eAAe,CAAC,IAAI,GAAE,gBAAqB,GAAG,SAAS,CAiEtE;AAQD,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAExF;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5E;AAED,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAErE"}
|
package/dist/jwks.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
|
-
// JWKS cache for mandate signature verification.
|
|
4
|
+
// JWKS cache for mandate signature verification, keyed per issuer zone.
|
|
5
5
|
import { createLocalJWKSet } from 'jose';
|
|
6
6
|
const DEFAULT_CACHE_TTL_MS = 5 * 60 * 1000;
|
|
7
7
|
const DEFAULT_MAX_STALE_MS = 10 * 60 * 1000;
|
|
@@ -33,31 +33,34 @@ export function createJwksCache(opts = {}) {
|
|
|
33
33
|
const fetchTimeoutMs = opts.fetchTimeoutMs ?? DEFAULT_FETCH_TIMEOUT_MS;
|
|
34
34
|
const fetchImpl = opts.fetchImpl;
|
|
35
35
|
const cache = new Map();
|
|
36
|
-
async function getKeySet(issuer) {
|
|
36
|
+
async function getKeySet(issuer, zoneId) {
|
|
37
|
+
const key = cacheKey(issuer, zoneId);
|
|
37
38
|
const now = performance.now();
|
|
38
|
-
const entry = cache.get(
|
|
39
|
+
const entry = cache.get(key);
|
|
39
40
|
if (entry) {
|
|
40
41
|
const age = now - entry.fetchedAtMonoMs;
|
|
41
42
|
if (age < ttlMs)
|
|
42
43
|
return entry.keySet;
|
|
43
44
|
if (age > maxStaleMs)
|
|
44
|
-
return fetchAndStore(issuer);
|
|
45
|
+
return fetchAndStore(issuer, zoneId);
|
|
45
46
|
if (!entry.revalidating) {
|
|
46
|
-
entry.revalidating = fetchAndStore(issuer)
|
|
47
|
+
entry.revalidating = fetchAndStore(issuer, zoneId)
|
|
47
48
|
.catch(() => entry.keySet)
|
|
48
49
|
.finally(() => {
|
|
49
|
-
const current = cache.get(
|
|
50
|
+
const current = cache.get(key);
|
|
50
51
|
if (current)
|
|
51
52
|
current.revalidating = undefined;
|
|
52
53
|
});
|
|
53
54
|
}
|
|
54
55
|
return entry.keySet;
|
|
55
56
|
}
|
|
56
|
-
return fetchAndStore(issuer);
|
|
57
|
+
return fetchAndStore(issuer, zoneId);
|
|
57
58
|
}
|
|
58
|
-
async function fetchAndStore(issuer) {
|
|
59
|
+
async function fetchAndStore(issuer, zoneId) {
|
|
59
60
|
assertSecureIssuer(issuer);
|
|
60
|
-
|
|
61
|
+
if (!zoneId)
|
|
62
|
+
throw new Error('zone_id required: STS serves one signing keyset per zone');
|
|
63
|
+
const url = `${issuer.replace(/\/$/, '')}/.well-known/jwks.json?${new URLSearchParams({ zone_id: zoneId })}`;
|
|
61
64
|
const controller = new AbortController();
|
|
62
65
|
const timeout = setTimeout(() => controller.abort(), fetchTimeoutMs);
|
|
63
66
|
try {
|
|
@@ -66,7 +69,7 @@ export function createJwksCache(opts = {}) {
|
|
|
66
69
|
throw new Error(`JWKS fetch failed: ${res.status}`);
|
|
67
70
|
const body = (await res.json());
|
|
68
71
|
const keySet = createLocalJWKSet({ keys: body.keys });
|
|
69
|
-
cache.set(issuer, { keySet, fetchedAtMonoMs: performance.now() });
|
|
72
|
+
cache.set(cacheKey(issuer, zoneId), { keySet, fetchedAtMonoMs: performance.now() });
|
|
70
73
|
return keySet;
|
|
71
74
|
}
|
|
72
75
|
finally {
|
|
@@ -75,26 +78,36 @@ export function createJwksCache(opts = {}) {
|
|
|
75
78
|
}
|
|
76
79
|
return {
|
|
77
80
|
getKeySet,
|
|
78
|
-
async warm(issuer) {
|
|
79
|
-
await getKeySet(issuer);
|
|
81
|
+
async warm(issuer, zoneId) {
|
|
82
|
+
await getKeySet(issuer, zoneId);
|
|
80
83
|
},
|
|
81
|
-
clear(issuer) {
|
|
84
|
+
clear(issuer, zoneId) {
|
|
85
|
+
if (issuer && zoneId) {
|
|
86
|
+
cache.delete(cacheKey(issuer, zoneId));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
82
89
|
if (issuer) {
|
|
83
|
-
cache.
|
|
90
|
+
for (const key of cache.keys()) {
|
|
91
|
+
if (key.startsWith(`${issuer}\u0000`))
|
|
92
|
+
cache.delete(key);
|
|
93
|
+
}
|
|
84
94
|
return;
|
|
85
95
|
}
|
|
86
96
|
cache.clear();
|
|
87
97
|
},
|
|
88
98
|
};
|
|
89
99
|
}
|
|
100
|
+
function cacheKey(issuer, zoneId) {
|
|
101
|
+
return `${issuer}\u0000${zoneId}`;
|
|
102
|
+
}
|
|
90
103
|
const defaultCache = createJwksCache();
|
|
91
|
-
export async function getKeySet(issuer) {
|
|
92
|
-
return defaultCache.getKeySet(issuer);
|
|
104
|
+
export async function getKeySet(issuer, zoneId) {
|
|
105
|
+
return defaultCache.getKeySet(issuer, zoneId);
|
|
93
106
|
}
|
|
94
|
-
export async function warmJwks(issuer) {
|
|
95
|
-
await defaultCache.warm(issuer);
|
|
107
|
+
export async function warmJwks(issuer, zoneId) {
|
|
108
|
+
await defaultCache.warm(issuer, zoneId);
|
|
96
109
|
}
|
|
97
|
-
export function clearJwksCache(issuer) {
|
|
98
|
-
defaultCache.clear(issuer);
|
|
110
|
+
export function clearJwksCache(issuer, zoneId) {
|
|
111
|
+
defaultCache.clear(issuer, zoneId);
|
|
99
112
|
}
|
|
100
113
|
//# sourceMappingURL=jwks.js.map
|
package/dist/jwks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwks.js","sourceRoot":"","sources":["../src/jwks.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"jwks.js","sourceRoot":"","sources":["../src/jwks.ts"],"names":[],"mappings":"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"}
|
package/dist/verify.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAmF,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAA;AAKzI,qBAAa,iBAAkB,SAAQ,YAAY;gBACrC,OAAO,SAA4B,EAAE,KAAK,CAAC,EAAE,OAAO;CAIjE;AAED,qBAAa,gBAAiB,SAAQ,YAAY;gBACpC,OAAO,SAAiC;CAIrD;AAED,qBAAa,sBAAuB,SAAQ,YAAY;IACtD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;gBACjB,YAAY,EAAE,MAAM;CAKjC;AAED,qBAAa,0BAA2B,SAAQ,YAAY;gBAC9C,OAAO,SAA4B;CAIhD;AAED,qBAAa,uBAAwB,SAAQ,YAAY;gBAC3C,OAAO,SAAwB;CAI5C;AAED,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;gBACzB,oBAAoB,EAAE,MAAM;CAOzC;AAED,qBAAa,qBAAsB,SAAQ,YAAY;gBACzC,OAAO,SAAuB;CAI3C;
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAmF,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAA;AAKzI,qBAAa,iBAAkB,SAAQ,YAAY;gBACrC,OAAO,SAA4B,EAAE,KAAK,CAAC,EAAE,OAAO;CAIjE;AAED,qBAAa,gBAAiB,SAAQ,YAAY;gBACpC,OAAO,SAAiC;CAIrD;AAED,qBAAa,sBAAuB,SAAQ,YAAY;IACtD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;gBACjB,YAAY,EAAE,MAAM;CAKjC;AAED,qBAAa,0BAA2B,SAAQ,YAAY;gBAC9C,OAAO,SAA4B;CAIhD;AAED,qBAAa,uBAAwB,SAAQ,YAAY;gBAC3C,OAAO,SAAwB;CAI5C;AAED,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;gBACzB,oBAAoB,EAAE,MAAM;CAOzC;AAED,qBAAa,qBAAsB,SAAQ,YAAY;gBACzC,OAAO,SAAuB;CAI3C;AA4ED,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAiG1G;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAIlF"}
|
package/dist/verify.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Caracal, a product of Garudex Labs
|
|
3
3
|
//
|
|
4
4
|
// Verifies a Caracal JWT against an issuer JWKS and enforces zone and scope claims.
|
|
5
|
-
import { jwtVerify } from 'jose';
|
|
5
|
+
import { decodeJwt, jwtVerify } from 'jose';
|
|
6
6
|
import { CaracalError, hasScope } from '@caracalai/core';
|
|
7
7
|
import { getKeySet } from './jwks.js';
|
|
8
8
|
import { DEFAULT_MAX_HOP_COUNT, MANDATE_USE_RESOURCE, MANDATE_USE_SESSION } from './types.js';
|
|
@@ -117,10 +117,31 @@ function readChain(raw) {
|
|
|
117
117
|
}
|
|
118
118
|
return out.length === 0 ? undefined : out;
|
|
119
119
|
}
|
|
120
|
+
// STS serves one signing keyset per zone, so the JWKS fetch needs a zone. The
|
|
121
|
+
// configured zone wins; otherwise the unverified zone_id claim selects the
|
|
122
|
+
// keyset, which is safe because it only routes the key lookup — the signature
|
|
123
|
+
// check against that zone's keys then proves the claim.
|
|
124
|
+
function fetchZone(token, config) {
|
|
125
|
+
if (config.zoneId)
|
|
126
|
+
return config.zoneId;
|
|
127
|
+
let claimedZone;
|
|
128
|
+
try {
|
|
129
|
+
claimedZone = decodeJwt(token)['zone_id'];
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
throw new TokenInvalidError('Token validation failed', err);
|
|
133
|
+
}
|
|
134
|
+
if (typeof claimedZone !== 'string' || claimedZone === '')
|
|
135
|
+
throw new ZoneInvalidError();
|
|
136
|
+
return claimedZone;
|
|
137
|
+
}
|
|
120
138
|
export async function verify(token, config) {
|
|
139
|
+
const zone = fetchZone(token, config);
|
|
121
140
|
let payload;
|
|
122
141
|
try {
|
|
123
|
-
const keySet = config.jwksCache
|
|
142
|
+
const keySet = config.jwksCache
|
|
143
|
+
? await config.jwksCache.getKeySet(config.issuer, zone)
|
|
144
|
+
: await getKeySet(config.issuer, zone);
|
|
124
145
|
({ payload } = await jwtVerify(token, keySet, {
|
|
125
146
|
issuer: config.issuer,
|
|
126
147
|
audience: config.audience,
|
|
@@ -150,7 +171,7 @@ export async function verify(token, config) {
|
|
|
150
171
|
throw new TokenInvalidError('Token claim scope must be a string');
|
|
151
172
|
const targetResources = readStringList(payload['target'], 'target');
|
|
152
173
|
const rawZoneId = payload['zone_id'];
|
|
153
|
-
if (typeof rawZoneId !== 'string' || rawZoneId === '' || (config.zoneId && rawZoneId !== config.zoneId)) {
|
|
174
|
+
if (typeof rawZoneId !== 'string' || rawZoneId === '' || rawZoneId !== zone || (config.zoneId && rawZoneId !== config.zoneId)) {
|
|
154
175
|
throw new ZoneInvalidError();
|
|
155
176
|
}
|
|
156
177
|
const zoneId = rawZoneId;
|
package/dist/verify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,oFAAoF;AAEpF,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,oFAAoF;AAEpF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAkB,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB,EAA8C,MAAM,YAAY,CAAA;AAEzI,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAA;AACvG,MAAM,2BAA2B,GAAG,EAAE,CAAA;AAEtC,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACjD,YAAY,OAAO,GAAG,yBAAyB,EAAE,KAAe;QAC9D,KAAK,CAAC,eAAe,EAAE,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACrE,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;IACjC,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAChD,YAAY,OAAO,GAAG,8BAA8B;QAClD,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;QAC9B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAA;IAChC,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IAC7C,YAAY,CAAQ;IAC7B,YAAY,YAAoB;QAC9B,KAAK,CAAC,oBAAoB,EAAE,kBAAkB,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,CAAC,CAAA;QAC5F,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;QACpC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,YAAY;IAC1D,YAAY,OAAO,GAAG,yBAAyB;QAC7C,KAAK,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAA;QACzC,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAA;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,YAAY;IACvD,YAAY,OAAO,GAAG,qBAAqB;QACzC,KAAK,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAA;QACrC,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAA;IACvC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IACzC,oBAAoB,CAAQ;IACrC,YAAY,oBAA4B;QACtC,KAAK,CAAC,gBAAgB,EAAE,yCAAyC,oBAAoB,EAAE,EAAE;YACvF,OAAO,EAAE,EAAE,oBAAoB,EAAE;SAClC,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;QAChC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAA;IAClD,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,YAAY;IACrD,YAAY,OAAO,GAAG,oBAAoB;QACxC,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAA;QACpC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF;AAED,SAAS,cAAc,CAAC,OAAgC,EAAE,IAAY;IACpE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QAC9C,MAAM,IAAI,iBAAiB,CAAC,eAAe,IAAI,cAAc,CAAC,CAAA;IAChE,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,cAAc,CAAC,OAAgC,EAAE,IAAY;IACpE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,SAAS,CAAA;IAC3E,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,iBAAiB,CAAC,eAAe,IAAI,mBAAmB,CAAC,CAAA;IAClG,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,eAAe,CAAC,OAAgC,EAAE,IAAY;IACrE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,iBAAiB,CAAC,eAAe,IAAI,iCAAiC,CAAC,CAAA;IACnF,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,eAAe,CAAC,OAAgC,EAAE,IAAY;IACrE,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAC5C,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,iBAAiB,CAAC,eAAe,IAAI,cAAc,CAAC,CAAA;IACvF,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,cAAc,CAAC,GAAY,EAAE,IAAY;IAChD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IACvD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,iBAAiB,CAAC,eAAe,IAAI,yBAAyB,CAAC,CAAA;IAClG,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE;YAAE,MAAM,IAAI,iBAAiB,CAAC,eAAe,IAAI,yBAAyB,CAAC,CAAA;QACxH,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,SAAS,CAAC,GAAY;IAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IACvD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,iBAAiB,CAAC,+CAA+C,CAAC,CAAA;IACrG,MAAM,GAAG,GAAe,EAAE,CAAA;IAC1B,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,iBAAiB,CAAC,mDAAmD,CAAC,CAAA;QAClF,CAAC;QACD,MAAM,CAAC,GAAG,IAA+B,CAAA;QACzC,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAA;QACzD,MAAM,cAAc,GAAG,cAAc,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAA;QAC5D,MAAM,gBAAgB,GAAG,cAAc,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAA;QAChE,GAAG,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC,CAAA;IAC/D,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAA;AAC3C,CAAC;AAED,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAC9E,wDAAwD;AACxD,SAAS,SAAS,CAAC,KAAa,EAAE,MAAiB;IACjD,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC,MAAM,CAAA;IACvC,IAAI,WAAoB,CAAA;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAA;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,iBAAiB,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAA;IAC7D,CAAC;IACD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,EAAE;QAAE,MAAM,IAAI,gBAAgB,EAAE,CAAA;IACvF,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAa,EAAE,MAA6C;IACvF,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACrC,IAAI,OAAO,CAAA;IACX,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS;YAC7B,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;YACvD,CAAC,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CACvC;QAAA,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE;YAC7C,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,cAAc,EAAE,eAAe;YAC/B,cAAc,EAAE,2BAA2B;SAC5C,CAAC,CAAC,CAAA;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,iBAAiB,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAA;IAC7D,CAAC;IAED,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC1C,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC1C,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IACrD,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC1C,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IACnD,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC1C,IAAI,GAAG,KAAK,mBAAmB,IAAI,GAAG,KAAK,oBAAoB;QAAE,MAAM,IAAI,iBAAiB,CAAC,6BAA6B,CAAC,CAAA;IAC3H,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IACnD,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,aAAa;QAAE,MAAM,IAAI,iBAAiB,CAAC,sCAAsC,CAAC,CAAA;IACxH,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAChD,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACjD,MAAM,KAAK,GAAI,OAAO,CAAC,OAAO,CAAwB,IAAI,EAAE,CAAA;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,iBAAiB,CAAC,oCAAoC,CAAC,CAAA;IAChG,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAA;IACnE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IACpC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,EAAE,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9H,MAAM,IAAI,gBAAgB,EAAE,CAAA;IAC9B,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAA;IACxB,IAAI,MAAM,CAAC,WAAW,IAAI,GAAG,KAAK,MAAM,CAAC,WAAW;QAAE,MAAM,IAAI,iBAAiB,CAAC,6BAA6B,CAAC,CAAA;IAChH,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;QAClD,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,iBAAiB,CAAC,yCAAyC,CAAC,CAAA;QACxE,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAA;IAClE,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAA;IACtE,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAA;IACpE,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAA;IACpE,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,CAAA;IACpF,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAA;IAC9D,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAA;IACrE,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAEtD,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C,MAAM,IAAI,0BAA0B,EAAE,CAAA;IACxC,CAAC;IACD,IAAI,MAAM,CAAC,iBAAiB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAClD,MAAM,IAAI,uBAAuB,EAAE,CAAA;IACrC,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC;QACxE,CAAC,CAAC,MAAM,CAAC,WAAW;QACpB,CAAC,CAAC,qBAAqB,CAAA;IACzB,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,qBAAqB,EAAE,CAAA;IACnC,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,oBAAoB,IAAI,EAAE,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAA;QAC1E,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IACtD,CAAC;IAED,OAAO;QACL,GAAG;QACH,MAAM;QACN,QAAQ;QACR,GAAG;QACH,OAAO;QACP,GAAG;QACH,OAAO;QACP,GAAG;QACH,QAAQ;QACR,SAAS;QACT,KAAK;QACL,eAAe;QACf,cAAc;QACd,gBAAgB;QAChB,eAAe;QACf,eAAe;QACf,cAAc;QACd,eAAe;QACf,UAAU;QACV,QAAQ;KACT,CAAA;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,aAAqB;IACvE,IAAI,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,aAAa,CAAC;QAAE,OAAO,IAAI,CAAA;IACvF,IAAI,MAAM,CAAC,QAAQ,KAAK,aAAa;QAAE,OAAO,IAAI,CAAA;IAClD,OAAO,KAAK,CAAA;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@caracalai/identity",
|
|
3
|
-
"version": "0.1.5
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Caracal identity primitives: JWT verification, JWKS, scope, claims.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/Garudex-Labs/caracal",
|
|
@@ -40,12 +40,12 @@
|
|
|
40
40
|
"prepublishOnly": "tsc"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@caracalai/core": "0.1.5
|
|
43
|
+
"@caracalai/core": "0.1.5",
|
|
44
44
|
"jose": "^6.2.3"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@types/node": "^
|
|
47
|
+
"@types/node": "^26.0.0",
|
|
48
48
|
"typescript": "^6.0.3",
|
|
49
|
-
"vitest": "^4.1.
|
|
49
|
+
"vitest": "^4.1.9"
|
|
50
50
|
}
|
|
51
51
|
}
|