@caracalai/oauth 0.1.2 → 0.1.3-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 +16 -0
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +4 -3
- package/dist/cache.js.map +1 -1
- package/dist/client.d.ts +2 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +106 -45
- package/dist/client.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
package/README.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Caracal OAuth for TypeScript
|
|
2
|
+
|
|
3
|
+
TypeScript RFC 8693 token exchange client for Caracal STS.
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
import { OAuthClient } from '@caracalai/oauth'
|
|
7
|
+
|
|
8
|
+
const client = new OAuthClient('https://sts.example.com', 'zone1', 'app1')
|
|
9
|
+
const token = await client.exchange(subjectToken, 'resource://api', {
|
|
10
|
+
clientSecret: 'client-secret',
|
|
11
|
+
scopes: ['read'],
|
|
12
|
+
})
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Successful responses are validated before caching. Cache keys isolate subject tokens, actor tokens, session/delegation context, scopes, TTL, and client authentication context. The default cache is in-memory and process-local.
|
|
16
|
+
|
package/dist/cache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEvD,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAA;IAC9E,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAAA;CAChF;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEvD,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAA;IAC9E,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAAA;CAChF;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAKD,qBAAa,kBAAmB,YAAW,UAAU;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAyE;IAC7F,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;gBAEvB,IAAI,GAAE,yBAA8B;IAQhD,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAa9E,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,IAAI;CAehF"}
|
package/dist/cache.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// Copyright (C) 2026 Garudex Labs. All Rights Reserved.
|
|
2
2
|
// Caracal, a product of Garudex Labs
|
|
3
3
|
//
|
|
4
|
-
// TokenCache interface and bounded in-memory default keyed by
|
|
5
|
-
import {
|
|
4
|
+
// TokenCache interface and bounded in-memory default keyed by protected subject-resource identifiers.
|
|
5
|
+
import { createHmac, randomBytes } from 'node:crypto';
|
|
6
6
|
const DEFAULT_MAX_ENTRIES = 10_000;
|
|
7
|
+
const CACHE_KEY = randomBytes(32);
|
|
7
8
|
export class InMemoryTokenCache {
|
|
8
9
|
map = new Map();
|
|
9
10
|
maxEntries;
|
|
@@ -45,6 +46,6 @@ export class InMemoryTokenCache {
|
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
48
|
function cacheKey(subjectToken, resource) {
|
|
48
|
-
return
|
|
49
|
+
return createHmac('sha256', CACHE_KEY).update(subjectToken).update('\0').update(resource).digest('hex');
|
|
49
50
|
}
|
|
50
51
|
//# sourceMappingURL=cache.js.map
|
package/dist/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,sGAAsG;AAEtG,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAYrD,MAAM,mBAAmB,GAAG,MAAM,CAAA;AAClC,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC,CAAA;AAEjC,MAAM,OAAO,kBAAkB;IACZ,GAAG,GAAG,IAAI,GAAG,EAA+D,CAAA;IAC5E,UAAU,CAAQ;IAEnC,YAAY,OAAkC,EAAE;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAA;QAClD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;QAC7E,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,GAAG,CAAA;IACvB,CAAC;IAED,GAAG,CAAC,YAAoB,EAAE,QAAgB;QACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC/B,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAA;QAC5B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACpB,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACxB,OAAO,KAAK,CAAC,KAAK,CAAA;IACpB,CAAC;IAED,GAAG,CAAC,YAAoB,EAAE,QAAgB,EAAE,KAA4B;QACtE,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;QAC5C,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;YAChB,KAAK;YACL,SAAS,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS;SAC5C,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAA;YAC3C,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAK;YAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,YAAoB,EAAE,QAAgB;IACtD,OAAO,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACzG,CAAC"}
|
package/dist/client.d.ts
CHANGED
|
@@ -8,10 +8,11 @@ export declare class OAuthClient {
|
|
|
8
8
|
private readonly inflight;
|
|
9
9
|
private readonly identityKey;
|
|
10
10
|
constructor(stsUrl: string, zoneId: string, applicationId: string, cache?: TokenCache);
|
|
11
|
-
exchange(subjectToken: string, resource: string, opts?: ExchangeOptions): Promise<TokenExchangeResponse>;
|
|
11
|
+
exchange(subjectToken: string, resource: string | string[], opts?: ExchangeOptions): Promise<TokenExchangeResponse>;
|
|
12
12
|
private cacheSubject;
|
|
13
13
|
private cacheResource;
|
|
14
14
|
private normalizedScopes;
|
|
15
|
+
private authContext;
|
|
15
16
|
private doExchange;
|
|
16
17
|
}
|
|
17
18
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAEhE,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAsCxE,qBAAa,WAAW;IAMpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAPhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoD;IAC7E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;gBAGjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACtC,KAAK,CAAC,EAAE,UAAU;IAMd,QAAQ,CACZ,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,EAC3B,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,qBAAqB,CAAC;IA6BjC,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,WAAW;YAQL,UAAU;CA0FzB"}
|
package/dist/client.js
CHANGED
|
@@ -2,13 +2,19 @@
|
|
|
2
2
|
// Caracal, a product of Garudex Labs
|
|
3
3
|
//
|
|
4
4
|
// RFC 8693 token exchange client with pluggable token cache and 401-retry.
|
|
5
|
+
import { createHmac, randomBytes } from 'node:crypto';
|
|
5
6
|
import { InMemoryTokenCache } from './cache.js';
|
|
6
7
|
import { InteractionRequiredError } from './types.js';
|
|
8
|
+
const SECRET_CACHE_KEY = randomBytes(32);
|
|
7
9
|
function parseSTSErrorResponse(body) {
|
|
8
10
|
if (body === '')
|
|
9
11
|
return {};
|
|
10
12
|
return JSON.parse(body);
|
|
11
13
|
}
|
|
14
|
+
function formatSTSError(status, err) {
|
|
15
|
+
const base = err.error_description ?? `STS error ${status}`;
|
|
16
|
+
return err.requestId ? `${base} (request_id=${err.requestId})` : base;
|
|
17
|
+
}
|
|
12
18
|
async function readSTSErrorResponse(res) {
|
|
13
19
|
if (typeof res.text === 'function') {
|
|
14
20
|
return parseSTSErrorResponse(await res.text());
|
|
@@ -63,29 +69,40 @@ export class OAuthClient {
|
|
|
63
69
|
cacheSubject(subjectToken, opts) {
|
|
64
70
|
return [
|
|
65
71
|
this.identityKey,
|
|
66
|
-
subjectToken,
|
|
67
|
-
opts.actorToken
|
|
72
|
+
secretCacheId(subjectToken),
|
|
73
|
+
secretCacheId(opts.actorToken),
|
|
68
74
|
opts.sessionId ?? '',
|
|
69
75
|
opts.agentSessionId ?? '',
|
|
70
76
|
opts.delegationEdgeId ?? '',
|
|
71
|
-
opts
|
|
77
|
+
this.authContext(opts),
|
|
78
|
+
secretCacheId(opts.clientAssertion),
|
|
72
79
|
].join('::');
|
|
73
80
|
}
|
|
74
81
|
cacheResource(resource, opts) {
|
|
75
|
-
return [resource, this.normalizedScopes(opts.scopes), opts.ttlSeconds?.toString() ?? ''].join('::');
|
|
82
|
+
return [resourceList(resource).join(' '), this.normalizedScopes(opts.scopes), opts.ttlSeconds?.toString() ?? ''].join('::');
|
|
76
83
|
}
|
|
77
84
|
normalizedScopes(scopes) {
|
|
78
85
|
return [...new Set(scopes ?? [])].sort().join(' ');
|
|
79
86
|
}
|
|
80
|
-
|
|
87
|
+
authContext(opts) {
|
|
88
|
+
return [
|
|
89
|
+
opts.clientSecret ? `secret:${secretCacheId(opts.clientSecret)}` : '',
|
|
90
|
+
opts.clientAssertion ? 'assertion' : '',
|
|
91
|
+
opts.clientAssertionType ?? '',
|
|
92
|
+
].join(':');
|
|
93
|
+
}
|
|
94
|
+
async doExchange(subjectToken, resource, opts, isRetry, deadlineMs = Date.now() + (opts.timeoutMs ?? 30_000)) {
|
|
81
95
|
const body = new URLSearchParams({
|
|
82
96
|
grant_type: 'urn:ietf:params:oauth:grant-type:token-exchange',
|
|
83
|
-
subject_token: subjectToken,
|
|
84
|
-
subject_token_type: 'urn:ietf:params:oauth:token-type:access_token',
|
|
85
|
-
resource,
|
|
86
97
|
zone_id: this.zoneId,
|
|
87
98
|
application_id: this.applicationId,
|
|
88
99
|
});
|
|
100
|
+
if (subjectToken) {
|
|
101
|
+
body.set('subject_token', subjectToken);
|
|
102
|
+
body.set('subject_token_type', 'urn:ietf:params:oauth:token-type:access_token');
|
|
103
|
+
}
|
|
104
|
+
for (const value of resourceList(resource))
|
|
105
|
+
body.append('resource', value);
|
|
89
106
|
if (opts.clientSecret)
|
|
90
107
|
body.set('client_secret', opts.clientSecret);
|
|
91
108
|
if (opts.clientAssertion)
|
|
@@ -105,45 +122,46 @@ export class OAuthClient {
|
|
|
105
122
|
body.set('scope', scope);
|
|
106
123
|
if (opts.ttlSeconds)
|
|
107
124
|
body.set('ttl_seconds', String(opts.ttlSeconds));
|
|
108
|
-
const controller = new AbortController();
|
|
109
|
-
const timeout = setTimeout(() => controller.abort(), opts.timeoutMs ?? 30_000);
|
|
110
125
|
const maxRetries = opts.retries ?? 3;
|
|
111
126
|
let res;
|
|
112
|
-
|
|
113
|
-
|
|
127
|
+
let lastErr;
|
|
128
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
129
|
+
const remainingMs = deadlineMs - Date.now();
|
|
130
|
+
if (remainingMs <= 0)
|
|
131
|
+
throw new Error('STS request timed out');
|
|
132
|
+
const controller = new AbortController();
|
|
133
|
+
const timeout = setTimeout(() => controller.abort(), remainingMs);
|
|
134
|
+
try {
|
|
114
135
|
res = await fetch(`${this.stsUrl}/oauth/2/token`, {
|
|
115
136
|
method: 'POST',
|
|
116
137
|
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
117
138
|
body,
|
|
118
139
|
signal: controller.signal,
|
|
119
140
|
});
|
|
120
|
-
const status = res.status;
|
|
121
|
-
const transient = status === 408 || status === 425 || status === 429 || (status >= 500 && status < 600);
|
|
122
|
-
if (!transient || attempt === maxRetries)
|
|
123
|
-
break;
|
|
124
|
-
const retryAfter = res.headers?.get('retry-after');
|
|
125
|
-
let waitMs;
|
|
126
|
-
if (retryAfter) {
|
|
127
|
-
const secs = Number(retryAfter);
|
|
128
|
-
if (Number.isFinite(secs))
|
|
129
|
-
waitMs = Math.max(0, secs * 1000);
|
|
130
|
-
else {
|
|
131
|
-
const date = Date.parse(retryAfter);
|
|
132
|
-
waitMs = Number.isNaN(date) ? 250 * 2 ** attempt : Math.max(0, date - Date.now());
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
const base = Math.min(2 ** attempt * 250, 5_000);
|
|
137
|
-
waitMs = base / 2 + Math.random() * (base / 2);
|
|
138
|
-
}
|
|
139
|
-
await new Promise(r => setTimeout(r, waitMs));
|
|
140
141
|
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
lastErr = err;
|
|
144
|
+
if (attempt === maxRetries)
|
|
145
|
+
throw err;
|
|
146
|
+
}
|
|
147
|
+
finally {
|
|
148
|
+
clearTimeout(timeout);
|
|
149
|
+
}
|
|
150
|
+
if (!res) {
|
|
151
|
+
await delayWithinDeadline(jitteredBackoff(attempt), deadlineMs);
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
const status = res.status;
|
|
155
|
+
const transient = status === 408 || status === 425 || status === 429 || (status >= 500 && status < 600);
|
|
156
|
+
if (!transient || attempt === maxRetries)
|
|
157
|
+
break;
|
|
158
|
+
await delayWithinDeadline(retryDelayMs(res, attempt), deadlineMs);
|
|
141
159
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
if (!res)
|
|
160
|
+
if (!res) {
|
|
161
|
+
if (lastErr instanceof Error)
|
|
162
|
+
throw lastErr;
|
|
146
163
|
throw new Error('STS request failed: no response');
|
|
164
|
+
}
|
|
147
165
|
if (!res.ok) {
|
|
148
166
|
let err;
|
|
149
167
|
try {
|
|
@@ -153,25 +171,60 @@ export class OAuthClient {
|
|
|
153
171
|
throw new Error(`STS error ${res.status}: invalid error response`);
|
|
154
172
|
}
|
|
155
173
|
if (err['error'] === 'interaction_required') {
|
|
156
|
-
throw new InteractionRequiredError(err['error_description'] ?? 'Step-up required', err['challenge_id'] ?? '', resource, err['acr_values']);
|
|
174
|
+
throw new InteractionRequiredError(err['error_description'] ?? 'Step-up required', err['challenge_id'] ?? '', resourceList(resource)[0], err['acr_values']);
|
|
157
175
|
}
|
|
158
176
|
if (res.status === 401 && !isRetry) {
|
|
159
|
-
return this.doExchange(subjectToken, resource, opts, true);
|
|
177
|
+
return this.doExchange(subjectToken, resource, { ...opts, retries: 0 }, true, deadlineMs);
|
|
160
178
|
}
|
|
161
|
-
throw new Error(
|
|
179
|
+
throw new Error(formatSTSError(res.status, err));
|
|
162
180
|
}
|
|
163
181
|
if (!isJsonResponse(res)) {
|
|
164
182
|
throw new Error('STS response invalid: expected application/json');
|
|
165
183
|
}
|
|
166
184
|
const data = (await res.json());
|
|
167
|
-
return
|
|
168
|
-
accessToken: data['access_token'],
|
|
169
|
-
tokenType: 'Bearer',
|
|
170
|
-
expiresIn: data['expires_in'],
|
|
171
|
-
issuedAt: Math.floor(Date.now() / 1000),
|
|
172
|
-
};
|
|
185
|
+
return validateSuccessResponse(data);
|
|
173
186
|
}
|
|
174
187
|
}
|
|
188
|
+
function validateSuccessResponse(data) {
|
|
189
|
+
if (typeof data.access_token !== 'string' || data.access_token === '') {
|
|
190
|
+
throw new Error('STS response invalid: access_token is required');
|
|
191
|
+
}
|
|
192
|
+
if (data.token_type !== undefined && data.token_type !== 'Bearer') {
|
|
193
|
+
throw new Error('STS response invalid: token_type must be Bearer');
|
|
194
|
+
}
|
|
195
|
+
const expiresIn = data.expires_in;
|
|
196
|
+
if (typeof expiresIn !== 'number' || !Number.isInteger(expiresIn) || expiresIn <= 0) {
|
|
197
|
+
throw new Error('STS response invalid: expires_in must be a positive integer');
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
accessToken: data.access_token,
|
|
201
|
+
tokenType: 'Bearer',
|
|
202
|
+
expiresIn,
|
|
203
|
+
issuedAt: Math.floor(Date.now() / 1000),
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
function retryDelayMs(res, attempt) {
|
|
207
|
+
const retryAfter = res.headers?.get('retry-after');
|
|
208
|
+
if (retryAfter) {
|
|
209
|
+
const secs = Number(retryAfter);
|
|
210
|
+
if (Number.isFinite(secs))
|
|
211
|
+
return Math.max(0, secs * 1000);
|
|
212
|
+
const date = Date.parse(retryAfter);
|
|
213
|
+
if (!Number.isNaN(date))
|
|
214
|
+
return Math.max(0, date - Date.now());
|
|
215
|
+
}
|
|
216
|
+
return jitteredBackoff(attempt);
|
|
217
|
+
}
|
|
218
|
+
function jitteredBackoff(attempt) {
|
|
219
|
+
const base = Math.min(2 ** attempt * 250, 5_000);
|
|
220
|
+
return base / 2 + Math.random() * (base / 2);
|
|
221
|
+
}
|
|
222
|
+
async function delayWithinDeadline(waitMs, deadlineMs) {
|
|
223
|
+
const remainingMs = deadlineMs - Date.now();
|
|
224
|
+
if (remainingMs <= 0)
|
|
225
|
+
throw new Error('STS request timed out');
|
|
226
|
+
await new Promise(resolve => setTimeout(resolve, Math.min(waitMs, remainingMs)));
|
|
227
|
+
}
|
|
175
228
|
function isJsonResponse(res) {
|
|
176
229
|
const contentType = res.headers?.get('content-type');
|
|
177
230
|
if (contentType === null || contentType === undefined)
|
|
@@ -179,4 +232,12 @@ function isJsonResponse(res) {
|
|
|
179
232
|
const mediaType = contentType.toLowerCase().split(';', 1)[0];
|
|
180
233
|
return mediaType === 'application/json' || mediaType.endsWith('+json');
|
|
181
234
|
}
|
|
235
|
+
function secretCacheId(value) {
|
|
236
|
+
if (!value)
|
|
237
|
+
return '';
|
|
238
|
+
return createHmac('sha256', SECRET_CACHE_KEY).update(value).digest('hex');
|
|
239
|
+
}
|
|
240
|
+
function resourceList(resource) {
|
|
241
|
+
return (Array.isArray(resource) ? resource : [resource]).map(value => value.trim()).filter(Boolean);
|
|
242
|
+
}
|
|
182
243
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,2EAA2E;AAE3E,OAAO,EAAE,kBAAkB,EAAmB,MAAM,YAAY,CAAA;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
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/oauth
|
|
4
|
+
// @caracalai/oauth: RFC 8693 token exchange client.
|
|
5
5
|
export * from './types.js';
|
|
6
6
|
export * from './cache.js';
|
|
7
7
|
export * from './client.js';
|
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,oDAAoD;AAEpD,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA"}
|
package/dist/types.d.ts
CHANGED
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,QAAQ,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,qBAAa,wBAAyB,SAAQ,YAAY;IACxD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;gBAGzB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM;CAUrB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@caracalai/oauth",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3-rc.1",
|
|
4
4
|
"description": "Caracal RFC 8693 OAuth 2.0 token exchange client.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/Garudex-Labs/caracal",
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
},
|
|
27
27
|
"files": [
|
|
28
28
|
"dist",
|
|
29
|
-
"
|
|
30
|
-
"
|
|
29
|
+
"LICENSE",
|
|
30
|
+
"README.md"
|
|
31
31
|
],
|
|
32
32
|
"publishConfig": {
|
|
33
33
|
"access": "public"
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"prepublishOnly": "tsc"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@caracalai/core": "0.1.
|
|
42
|
+
"@caracalai/core": "0.1.3-rc.1"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/node": "^24.12.2",
|