@caracalai/oauth 0.1.1 → 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 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
+
@@ -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;AAID,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"}
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 hashed subject+resource.
5
- import { createHash } from 'node:crypto';
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 createHash('sha256').update(subjectToken).update('\0').update(resource).digest('hex');
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,uFAAuF;AAEvF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAYxC,MAAM,mBAAmB,GAAG,MAAM,CAAA;AAElC,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,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC9F,CAAC"}
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
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAEhE,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAwBxE,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,EAChB,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,qBAAqB,CAAC;IA6BjC,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,gBAAgB;YAIV,UAAU;CA+FzB"}
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.clientAssertion ?? '',
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
- async doExchange(subjectToken, resource, opts, isRetry) {
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
- try {
113
- for (let attempt = 0; attempt <= maxRetries; attempt++) {
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
- finally {
143
- clearTimeout(timeout);
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(err['error_description'] ?? `STS error ${res.status}`);
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
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
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 RFC 8693 token exchange client.
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,qDAAqD;AAErD,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA"}
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
@@ -1,7 +1,7 @@
1
1
  import { CaracalError } from '@caracalai/core';
2
2
  export interface TokenExchangeRequest {
3
3
  subjectToken: string;
4
- resource: string;
4
+ resource: string | string[];
5
5
  clientId: string;
6
6
  clientSecret?: string;
7
7
  clientAssertion?: string;
@@ -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;IAChB,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"}
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.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
- "README.md",
30
- "LICENSE"
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": "workspace:*"
42
+ "@caracalai/core": "0.1.3-rc.1"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/node": "^24.12.2",