@outfoxx/sunday 2.0.0-beta.1 → 2.0.0-beta.10

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.
Files changed (82) hide show
  1. package/README.md +64 -0
  2. package/build/client-settings.d.ts +22 -0
  3. package/build/client-settings.js +147 -0
  4. package/build/client-settings.js.map +1 -0
  5. package/build/credentials.d.ts +58 -0
  6. package/build/credentials.js +51 -0
  7. package/build/credentials.js.map +1 -0
  8. package/build/event-parser.d.ts +2 -0
  9. package/build/event-parser.js.map +1 -1
  10. package/build/fetch-event-source.d.ts +14 -5
  11. package/build/fetch-event-source.js +109 -44
  12. package/build/fetch-event-source.js.map +1 -1
  13. package/build/fetch-oauth-token-provider.d.ts +28 -0
  14. package/build/fetch-oauth-token-provider.js +171 -0
  15. package/build/fetch-oauth-token-provider.js.map +1 -0
  16. package/build/fetch-transport.d.ts +8 -0
  17. package/build/fetch-transport.js +84 -15
  18. package/build/fetch-transport.js.map +1 -1
  19. package/build/fetch.js +3 -2
  20. package/build/fetch.js.map +1 -1
  21. package/build/index.d.ts +11 -0
  22. package/build/index.js +11 -0
  23. package/build/index.js.map +1 -1
  24. package/build/media-type-codecs/cbor-encoder.d.ts +2 -2
  25. package/build/media-type-codecs/cbor-encoder.js +2 -2
  26. package/build/media-type-codecs/cbor-encoder.js.map +1 -1
  27. package/build/media-type-codecs/json-encoder.d.ts +3 -3
  28. package/build/media-type-codecs/json-encoder.js +4 -4
  29. package/build/media-type-codecs/json-encoder.js.map +1 -1
  30. package/build/media-type-codecs/media-type-encoder.d.ts +3 -3
  31. package/build/media-type-codecs/media-type-encoder.js.map +1 -1
  32. package/build/media-type-codecs/www-form-url-encoder.d.ts +2 -2
  33. package/build/media-type-codecs/www-form-url-encoder.js +2 -2
  34. package/build/media-type-codecs/www-form-url-encoder.js.map +1 -1
  35. package/build/model-construction.d.ts +5 -0
  36. package/build/model-construction.js +40 -0
  37. package/build/model-construction.js.map +1 -0
  38. package/build/model-schema.d.ts +9 -0
  39. package/build/model-schema.js +131 -0
  40. package/build/model-schema.js.map +1 -0
  41. package/build/oauth-wire.d.ts +33 -0
  42. package/build/oauth-wire.js +143 -0
  43. package/build/oauth-wire.js.map +1 -0
  44. package/build/operation.d.ts +11 -1
  45. package/build/operation.js +3 -0
  46. package/build/operation.js.map +1 -1
  47. package/build/problem.js +2 -1
  48. package/build/problem.js.map +1 -1
  49. package/build/request-security.d.ts +16 -0
  50. package/build/request-security.js +167 -0
  51. package/build/request-security.js.map +1 -0
  52. package/build/request-validation-error.d.ts +4 -0
  53. package/build/request-validation-error.js +21 -0
  54. package/build/request-validation-error.js.map +1 -0
  55. package/build/schema-builtins.js +11 -21
  56. package/build/schema-builtins.js.map +1 -1
  57. package/build/schema-runtime.d.ts +8 -1
  58. package/build/schema-runtime.js +12 -3
  59. package/build/schema-runtime.js.map +1 -1
  60. package/build/security-binding.d.ts +22 -0
  61. package/build/security-binding.js +15 -0
  62. package/build/security-binding.js.map +1 -0
  63. package/build/streaming-body.d.ts +21 -0
  64. package/build/streaming-body.js +65 -0
  65. package/build/streaming-body.js.map +1 -0
  66. package/build/token-manager.d.ts +33 -0
  67. package/build/token-manager.js +199 -0
  68. package/build/token-manager.js.map +1 -0
  69. package/build/token-provider.d.ts +44 -0
  70. package/build/token-provider.js +31 -0
  71. package/build/token-provider.js.map +1 -0
  72. package/build/transport.d.ts +5 -0
  73. package/build/unknown-variant.d.ts +12 -0
  74. package/build/unknown-variant.js +45 -0
  75. package/build/unknown-variant.js.map +1 -0
  76. package/build/url-template.d.ts +3 -0
  77. package/build/url-template.js +30 -2
  78. package/build/url-template.js.map +1 -1
  79. package/build/util/base64.d.ts +4 -0
  80. package/build/util/base64.js +46 -0
  81. package/build/util/base64.js.map +1 -0
  82. package/package.json +6 -2
@@ -11,6 +11,8 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
+ import { RequestValidationError } from './request-validation-error.js';
15
+ import { AuthorizationRequiredError, TokenProviderError } from './token-provider.js';
14
16
  import { EventParser } from './event-parser.js';
15
17
  import { validate } from './fetch.js';
16
18
  import { levelLogger, LogLevel } from './logger.js';
@@ -18,9 +20,10 @@ import { MediaType } from './media-type.js';
18
20
  import { unknownSet } from './util/unknowns.js';
19
21
  export class FetchEventSource extends EventTarget {
20
22
  static LAST_EVENT_ID_HEADER = 'Last-Event-ID';
21
- static MAX_RETRY_TIME_MULTIPLIER = 12;
22
- static RETRY_EXPONENT = 2.6;
23
- static EVENT_TIMEOUT_DEFAULT = 120 * 1000;
23
+ static RETRY_TIME_DEFAULT = 500;
24
+ static RETRY_MAX_MULTIPLIER_DEFAULT = 30;
25
+ static KEEPALIVE_TIMEOUT_MULTIPLIER = 3;
26
+ static KEEPALIVE_TIMEOUT_MINIMUM = 1000;
24
27
  static EVENT_TIMEOUT_CHECK_INTERVAL_DEFAULT = 2 * 1000;
25
28
  CONNECTING = 0;
26
29
  OPEN = 1;
@@ -35,19 +38,21 @@ export class FetchEventSource extends EventTarget {
35
38
  return this.internalRetryTime;
36
39
  }
37
40
  adapter;
41
+ fetchRequest;
38
42
  signal;
39
43
  connectionAbortController;
40
44
  connectionReader;
41
45
  externalAbortSignal;
42
46
  externalAbortHandler;
43
- internalRetryTime = 100;
47
+ internalRetryTime = FetchEventSource.RETRY_TIME_DEFAULT;
48
+ internalRetryMax;
44
49
  retryAttempt = 0;
45
- connectionAttemptTime;
46
50
  connectionOrigin;
47
51
  reconnectTimeoutHandle;
48
52
  lastEventId;
49
53
  logger;
50
54
  eventTimeout;
55
+ eventTimeoutConfigured;
51
56
  eventTimeoutCheckInterval;
52
57
  eventTimeoutCheckHandle;
53
58
  lastEventReceivedTime = 0;
@@ -58,9 +63,10 @@ export class FetchEventSource extends EventTarget {
58
63
  this.adapter =
59
64
  eventSourceInit?.adapter ??
60
65
  ((_url, requestInit) => Promise.resolve(new Request(_url, requestInit)));
66
+ this.fetchRequest = eventSourceInit?.fetch ?? ((request, signal) => fetch(request, { signal }));
61
67
  this.signal = eventSourceInit?.signal;
62
- this.eventTimeout =
63
- eventSourceInit?.eventTimeout ?? FetchEventSource.EVENT_TIMEOUT_DEFAULT;
68
+ this.eventTimeout = eventSourceInit?.eventTimeout;
69
+ this.eventTimeoutConfigured = eventSourceInit?.eventTimeout !== undefined;
64
70
  this.eventTimeoutCheckInterval =
65
71
  eventSourceInit?.eventTimeoutCheckInterval ??
66
72
  FetchEventSource.EVENT_TIMEOUT_CHECK_INTERVAL_DEFAULT;
@@ -74,6 +80,11 @@ export class FetchEventSource extends EventTarget {
74
80
  this.logger?.trace?.('skipping connect', { state: this.readyState });
75
81
  return;
76
82
  }
83
+ if (this.signal?.aborted) {
84
+ this.logger?.trace?.('skipping connect with aborted signal');
85
+ return;
86
+ }
87
+ this.startExternalAbortListener();
77
88
  this.internalConnect();
78
89
  }
79
90
  internalConnect() {
@@ -88,27 +99,23 @@ export class FetchEventSource extends EventTarget {
88
99
  this.abortConnection();
89
100
  const connectionAbortController = new AbortController();
90
101
  this.connectionAbortController = connectionAbortController;
91
- const externalSignal = this.signal;
92
- if (externalSignal instanceof AbortSignal) {
93
- this.externalAbortSignal = externalSignal;
94
- this.externalAbortHandler = () => {
95
- this.connectionAbortController?.abort();
96
- };
97
- externalSignal.addEventListener('abort', this.externalAbortHandler);
98
- }
99
102
  const requestInit = {
100
103
  headers,
101
104
  cache: 'no-store',
102
105
  redirect: 'follow',
103
106
  signal: connectionAbortController.signal,
104
107
  };
105
- this.connectionAttemptTime = Date.now();
106
108
  void this.adapter(this.url, requestInit)
107
109
  .then(async (request) => {
108
- const response = await fetch(request, {
109
- signal: connectionAbortController.signal,
110
- });
111
- const validatedResponse = await validate(response, true, undefined, this.logger);
110
+ const response = await this.fetchRequest(request, connectionAbortController.signal);
111
+ let validatedResponse;
112
+ try {
113
+ validatedResponse = await validate(response, true, undefined, this.logger);
114
+ }
115
+ catch (error) {
116
+ this.receivedFatalError(error);
117
+ return;
118
+ }
112
119
  this.receivedHeaders(validatedResponse);
113
120
  const body = validatedResponse.body;
114
121
  if (!body) {
@@ -127,7 +134,12 @@ export class FetchEventSource extends EventTarget {
127
134
  this.receivedComplete();
128
135
  })
129
136
  .catch((error) => {
130
- this.receivedError(error);
137
+ if (error instanceof RequestValidationError || (error instanceof TokenProviderError && error.reason !== 'temporary') || error instanceof AuthorizationRequiredError) {
138
+ this.receivedFatalError(error);
139
+ }
140
+ else {
141
+ this.receivedError(error);
142
+ }
131
143
  })
132
144
  .finally(() => {
133
145
  if (this.connectionReader) {
@@ -151,6 +163,7 @@ export class FetchEventSource extends EventTarget {
151
163
  this.logger?.debug?.('closing');
152
164
  this.readyState = this.CLOSED;
153
165
  this.internalClose();
166
+ this.stopExternalAbortListener();
154
167
  }
155
168
  internalClose() {
156
169
  this.abortConnection();
@@ -170,7 +183,7 @@ export class FetchEventSource extends EventTarget {
170
183
  }
171
184
  this.updateLastEventReceived(lastEventReceivedTime);
172
185
  this.logger?.trace?.('starting event timeout checks');
173
- this.eventTimeoutCheckHandle = setInterval(() => this.checkEventTimeout(), this.eventTimeoutCheckInterval);
186
+ this.eventTimeoutCheckHandle = setInterval(() => this.checkEventTimeout(), Math.min(this.eventTimeoutCheckInterval, this.eventTimeout));
174
187
  }
175
188
  stopEventTimeoutCheck() {
176
189
  if (this.eventTimeoutCheckHandle) {
@@ -211,6 +224,9 @@ export class FetchEventSource extends EventTarget {
211
224
  this.connectionOrigin = response.url;
212
225
  this.retryAttempt = 0;
213
226
  this.readyState = this.OPEN;
227
+ if (!this.eventTimeoutConfigured) {
228
+ this.eventTimeout = undefined;
229
+ }
214
230
  // Start event timeout check, treating this connection
215
231
  // as the last time we received an event
216
232
  this.startEventTimeoutCheck(Date.now());
@@ -249,6 +265,16 @@ export class FetchEventSource extends EventTarget {
249
265
  this.scheduleReconnect();
250
266
  }
251
267
  }
268
+ receivedFatalError(error) {
269
+ if (this.readyState === this.CLOSED) {
270
+ return;
271
+ }
272
+ this.logger?.debug?.('received fatal error', { error });
273
+ this.readyState = this.CLOSED;
274
+ this.internalClose();
275
+ this.stopExternalAbortListener();
276
+ this.fireErrorEvent(error);
277
+ }
252
278
  receivedComplete() {
253
279
  if (this.readyState == this.CLOSED) {
254
280
  return;
@@ -260,29 +286,17 @@ export class FetchEventSource extends EventTarget {
260
286
  // Reconnection
261
287
  //
262
288
  scheduleReconnect() {
289
+ this.clearReconnect();
263
290
  this.internalClose();
264
- const lastConnectionTime = this.connectionAttemptTime
265
- ? Date.now() - this.connectionAttemptTime
266
- : 0;
267
- const retryDelay = FetchEventSource.calculateRetryTime(this.retryAttempt, this.retryTime, lastConnectionTime);
291
+ const retryDelay = FetchEventSource.calculateRetryTime(this.retryAttempt, this.retryTime, Math.max(this.retryTime, this.internalRetryMax ??
292
+ this.retryTime * FetchEventSource.RETRY_MAX_MULTIPLIER_DEFAULT));
268
293
  this.retryAttempt++;
269
294
  this.readyState = this.CONNECTING;
270
295
  this.logger?.debug?.('scheduling reconnect', { retryDelay });
271
296
  this.reconnectTimeoutHandle = setTimeout(() => this.internalConnect(), retryDelay);
272
297
  }
273
- static calculateRetryTime(retryAttempt, retryTime, lastConnectTime) {
274
- const retryMultiplier = Math.min(retryAttempt, this.MAX_RETRY_TIME_MULTIPLIER);
275
- // calculate total delay
276
- let retryDelay = Math.pow(retryMultiplier, this.RETRY_EXPONENT) * retryTime;
277
- // Adjust delay by the amount of time the last connection
278
- // cycle took, except on the first attempt
279
- if (retryAttempt > 0) {
280
- retryDelay -= lastConnectTime;
281
- // Ensure the delay is at least as large as
282
- // the minimum retry time interval
283
- retryDelay = Math.max(retryDelay, retryTime);
284
- }
285
- return retryDelay;
298
+ static calculateRetryTime(retryAttempt, retryTime, retryMax) {
299
+ return Math.min(retryTime * Math.pow(2, retryAttempt), retryMax);
286
300
  }
287
301
  clearReconnect() {
288
302
  if (this.reconnectTimeoutHandle) {
@@ -295,9 +309,9 @@ export class FetchEventSource extends EventTarget {
295
309
  //
296
310
  dispatchParsedEvent = (eventInfo) => {
297
311
  this.updateLastEventReceived();
298
- if (eventInfo.retry) {
299
- const retryTime = Number.parseInt(eventInfo.retry, 10);
300
- if (Number.isSafeInteger(retryTime)) {
312
+ if (eventInfo.retry != null) {
313
+ const retryTime = FetchEventSource.parseMilliseconds(eventInfo.retry);
314
+ if (retryTime != null) {
301
315
  this.logger?.debug?.('updating retry timeout', { retryTime });
302
316
  this.internalRetryTime = retryTime;
303
317
  }
@@ -307,6 +321,37 @@ export class FetchEventSource extends EventTarget {
307
321
  });
308
322
  }
309
323
  }
324
+ if (eventInfo['retry-max'] != null) {
325
+ const retryMax = FetchEventSource.parseMilliseconds(eventInfo['retry-max']);
326
+ if (retryMax != null && retryMax > 0) {
327
+ this.logger?.debug?.('updating maximum retry timeout', { retryMax });
328
+ this.internalRetryMax = retryMax;
329
+ }
330
+ else {
331
+ this.logger?.warn?.('ignoring invalid maximum retry timeout event', {
332
+ eventInfo,
333
+ });
334
+ }
335
+ }
336
+ if (eventInfo.keepalive != null) {
337
+ const keepalive = FetchEventSource.parseMilliseconds(eventInfo.keepalive);
338
+ const keepaliveTimeout = keepalive == null || keepalive === 0
339
+ ? undefined
340
+ : Math.max(keepalive * FetchEventSource.KEEPALIVE_TIMEOUT_MULTIPLIER, FetchEventSource.KEEPALIVE_TIMEOUT_MINIMUM);
341
+ if (keepaliveTimeout != null && Number.isSafeInteger(keepaliveTimeout)) {
342
+ this.logger?.debug?.('updating keepalive timeout', {
343
+ keepalive,
344
+ eventTimeout: keepaliveTimeout,
345
+ });
346
+ if (!this.eventTimeoutConfigured) {
347
+ this.eventTimeout = keepaliveTimeout;
348
+ this.startEventTimeoutCheck(this.lastEventReceivedTime);
349
+ }
350
+ }
351
+ else {
352
+ this.logger?.warn?.('ignoring invalid keepalive event', { eventInfo });
353
+ }
354
+ }
310
355
  // skip empty events
311
356
  if (eventInfo.id == null &&
312
357
  eventInfo.event == null &&
@@ -334,6 +379,13 @@ export class FetchEventSource extends EventTarget {
334
379
  this.onmessage?.(event);
335
380
  this.dispatchEvent(event);
336
381
  };
382
+ static parseMilliseconds(value) {
383
+ if (!/^\d+$/.test(value)) {
384
+ return undefined;
385
+ }
386
+ const milliseconds = Number.parseInt(value, 10);
387
+ return Number.isSafeInteger(milliseconds) ? milliseconds : undefined;
388
+ }
337
389
  fireErrorEvent(error) {
338
390
  const event = new Event('error');
339
391
  unknownSet(event, 'error', error);
@@ -345,8 +397,7 @@ export class FetchEventSource extends EventTarget {
345
397
  }
346
398
  this.connectionAbortController = undefined;
347
399
  if (this.connectionReader) {
348
- void this.connectionReader.cancel()
349
- .catch(() => this.logger?.warn?.('failed to cancel connection reader'));
400
+ void this.connectionReader.cancel().catch((error) => this.logger?.warn?.('failed to cancel connection reader', { error }));
350
401
  try {
351
402
  this.connectionReader.releaseLock();
352
403
  }
@@ -355,6 +406,20 @@ export class FetchEventSource extends EventTarget {
355
406
  }
356
407
  }
357
408
  this.connectionReader = undefined;
409
+ }
410
+ startExternalAbortListener() {
411
+ const externalSignal = this.signal;
412
+ if (!(externalSignal instanceof AbortSignal)) {
413
+ return;
414
+ }
415
+ this.stopExternalAbortListener();
416
+ this.externalAbortSignal = externalSignal;
417
+ this.externalAbortHandler = () => this.close();
418
+ externalSignal.addEventListener('abort', this.externalAbortHandler, {
419
+ once: true,
420
+ });
421
+ }
422
+ stopExternalAbortListener() {
358
423
  if (this.externalAbortSignal && this.externalAbortHandler) {
359
424
  this.externalAbortSignal.removeEventListener('abort', this.externalAbortHandler);
360
425
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-event-source.js","sourceRoot":"","sources":["../src/fetch-event-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-event-source.js","sourceRoot":"","sources":["../src/fetch-event-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { SecurityBinding } from './security-binding.js';
2
+ import { TokenConfiguration, TokenProvider, TokenRequest, TokenSet } from './token-provider.js';
3
+ import { OAuthCredentialOptions } from './credentials.js';
4
+ export type { AuthorizationGrant } from './credentials.js';
5
+ /** Fetch-specific OAuth exchange options. */
6
+ export interface OAuthProviderOptions extends OAuthCredentialOptions {
7
+ readonly fetch?: typeof fetch;
8
+ readonly now?: () => number;
9
+ }
10
+ /** Client-credentials, application-authorized PKCE, and refresh exchange without cookies or automatic redirects. */
11
+ export declare class FetchOAuthTokenProvider implements TokenProvider {
12
+ readonly identity: string;
13
+ private readonly options;
14
+ private readonly authentication;
15
+ private readonly consumedCodes;
16
+ private readonly fetch;
17
+ private readonly now;
18
+ constructor(options: OAuthProviderOptions);
19
+ /** Selects the application client and fresh session without changing the generated profile. */
20
+ configure(_binding: SecurityBinding): TokenConfiguration;
21
+ /** Acquires a client token or exchanges one application-authorized PKCE grant. */
22
+ acquire(request: TokenRequest, signal: AbortSignal): Promise<TokenSet>;
23
+ /** Rotates refresh credentials without using an authorization code again. */
24
+ refresh(request: TokenRequest, refreshToken: string, signal: AbortSignal): Promise<TokenSet>;
25
+ private resolveEndpoints;
26
+ private fetchResponse;
27
+ private exchange;
28
+ }
@@ -0,0 +1,171 @@
1
+ // Copyright 2020 Outfox, Inc.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ import * as oauth from 'oauth4webapi';
15
+ import { AuthorizationRequiredError, TokenProviderError, } from './token-provider.js';
16
+ import { DiscoveryMetadata, TokenSuccessResponse, TokenErrorResponse, endpoint } from './oauth-wire.js';
17
+ /** Client-credentials, application-authorized PKCE, and refresh exchange without cookies or automatic redirects. */
18
+ export class FetchOAuthTokenProvider {
19
+ identity;
20
+ options;
21
+ authentication;
22
+ consumedCodes = new Set();
23
+ fetch;
24
+ now;
25
+ constructor(options) {
26
+ this.authentication = options.authentication ?? 'none';
27
+ if (!['none', 'client_secret_basic', 'client_secret_post'].includes(this.authentication))
28
+ throw new TypeError('Unsupported OAuth client authentication; use an application TokenProvider');
29
+ if (!options.identity.trim() || !options.clientId.trim())
30
+ throw new TypeError('OAuth provider and client identities must not be blank');
31
+ if ((this.authentication === 'none') !== (options.clientSecret === undefined) || options.clientSecret === '') {
32
+ throw new TypeError('Client secrets require an explicit OAuth client authentication method');
33
+ }
34
+ this.identity = options.identity;
35
+ this.options = Object.freeze({ ...options, endpoints: options.endpoints && Object.freeze({ ...options.endpoints }) });
36
+ this.fetch = options.fetch ?? globalThis.fetch;
37
+ this.now = options.now ?? Date.now;
38
+ }
39
+ /** Selects the application client and fresh session without changing the generated profile. */
40
+ configure(_binding) {
41
+ return { clientIdentity: this.options.clientId, grantIdentity: this.options.grantIdentity, endpoints: this.options.endpoints };
42
+ }
43
+ /** Acquires a client token or exchanges one application-authorized PKCE grant. */
44
+ async acquire(request, signal) {
45
+ try {
46
+ request = await this.resolveEndpoints(request, signal);
47
+ let form;
48
+ if (request.flow === 'clientCredentials') {
49
+ if (this.authentication === 'none')
50
+ throw new TokenProviderError();
51
+ form = new URLSearchParams({ grant_type: 'client_credentials' });
52
+ }
53
+ else if (request.flow === 'authorizationCode') {
54
+ if (!this.options.authorization || this.consumedCodes.size >= 1024)
55
+ throw new AuthorizationRequiredError();
56
+ const grant = await this.options.authorization(request, signal);
57
+ if (!grant.code || !grant.redirectUri || !/^[A-Za-z0-9._~-]{43,128}$/.test(grant.codeVerifier))
58
+ throw new AuthorizationRequiredError();
59
+ const digest = new Uint8Array(await crypto.subtle.digest('SHA-256', new TextEncoder().encode(grant.code)));
60
+ const codeKey = Array.from(digest, byte => byte.toString(16).padStart(2, '0')).join('');
61
+ if (this.consumedCodes.size >= 1024 || this.consumedCodes.has(codeKey))
62
+ throw new AuthorizationRequiredError();
63
+ this.consumedCodes.add(codeKey);
64
+ form = new URLSearchParams({ grant_type: 'authorization_code', code: grant.code, redirect_uri: grant.redirectUri, code_verifier: grant.codeVerifier });
65
+ }
66
+ else
67
+ throw new TokenProviderError();
68
+ return await this.exchange(request, request.tokenUrl, form, signal);
69
+ }
70
+ catch (error) {
71
+ signal.throwIfAborted();
72
+ if (error instanceof AuthorizationRequiredError || error instanceof TokenProviderError)
73
+ throw error;
74
+ throw new TokenProviderError();
75
+ }
76
+ }
77
+ /** Rotates refresh credentials without using an authorization code again. */
78
+ async refresh(request, refreshToken, signal) {
79
+ try {
80
+ request = await this.resolveEndpoints(request, signal);
81
+ return await this.exchange(request, request.refreshUrl ?? request.tokenUrl, new URLSearchParams({ grant_type: 'refresh_token', refresh_token: refreshToken }), signal);
82
+ }
83
+ catch (error) {
84
+ signal.throwIfAborted();
85
+ if (error instanceof AuthorizationRequiredError || error instanceof TokenProviderError)
86
+ throw error;
87
+ throw new TokenProviderError();
88
+ }
89
+ }
90
+ async resolveEndpoints(request, signal) {
91
+ if (!request.discoveryUrl)
92
+ return request;
93
+ if (!this.options.issuer)
94
+ throw new TokenProviderError();
95
+ const response = await this.fetchResponse(endpoint(request.discoveryUrl), {
96
+ headers: { Accept: 'application/json' }, credentials: 'omit', redirect: 'manual', signal,
97
+ });
98
+ if (response.status !== 200)
99
+ throw new TokenProviderError();
100
+ const metadata = DiscoveryMetadata.parse(await response.text());
101
+ if (metadata.issuer !== this.options.issuer)
102
+ throw new TokenProviderError();
103
+ const publicCode = this.authentication === 'none' && request.flow === 'authorizationCode';
104
+ if (!publicCode && !(metadata.methods ?? ['client_secret_basic']).includes(this.authentication))
105
+ throw new TokenProviderError();
106
+ const tokenUrl = request.tokenUrl ?? metadata.tokenUrl;
107
+ const authorizationUrl = request.authorizationUrl ?? metadata.authorizationUrl;
108
+ endpoint(tokenUrl);
109
+ if (authorizationUrl !== undefined)
110
+ endpoint(authorizationUrl);
111
+ else if (request.flow === 'authorizationCode')
112
+ throw new TokenProviderError();
113
+ if (request.refreshUrl !== undefined)
114
+ endpoint(request.refreshUrl);
115
+ return { ...request, tokenUrl, authorizationUrl };
116
+ }
117
+ async fetchResponse(url, init) {
118
+ let response;
119
+ try {
120
+ response = await this.fetch(url, init);
121
+ }
122
+ catch {
123
+ init.signal?.throwIfAborted();
124
+ throw new TokenProviderError('temporary');
125
+ }
126
+ if (response.status === 408 || response.status === 429 || response.status >= 500 && response.status <= 599) {
127
+ await response.body?.cancel();
128
+ throw new TokenProviderError('temporary');
129
+ }
130
+ return response;
131
+ }
132
+ async exchange(request, tokenUrl, form, signal) {
133
+ if (request.scopes.length)
134
+ form.set('scope', request.scopes.join(' '));
135
+ if (request.audience !== undefined)
136
+ form.set('audience', request.audience);
137
+ if (request.resource !== undefined)
138
+ form.set('resource', request.resource);
139
+ const url = endpoint(tokenUrl);
140
+ let authentication = oauth.None();
141
+ if (this.authentication === 'client_secret_basic')
142
+ authentication = oauth.ClientSecretBasic(this.options.clientSecret);
143
+ else if (this.authentication === 'client_secret_post')
144
+ authentication = oauth.ClientSecretPost(this.options.clientSecret);
145
+ const grantType = form.get('grant_type');
146
+ form.delete('grant_type');
147
+ const response = await oauth.genericTokenEndpointRequest({ issuer: new URL(url).origin, token_endpoint: url }, { client_id: this.options.clientId }, authentication, grantType, form, {
148
+ signal,
149
+ // Intentionally deprecated upstream to discourage non-TLS use; endpoint() has already
150
+ // restricted HTTP to loopback. This is required for the supported local-provider policy.
151
+ [oauth.allowInsecureRequests]: new URL(url).protocol === 'http:',
152
+ [oauth.customFetch]: (input, init) => this.fetchResponse(String(input), {
153
+ ...init, credentials: 'omit', redirect: 'manual', signal,
154
+ }),
155
+ });
156
+ const body = await response.text();
157
+ if (response.status !== 200) {
158
+ const code = TokenErrorResponse.parse(body).code;
159
+ if (code === 'invalid_grant') {
160
+ if (request.flow === 'authorizationCode')
161
+ throw new AuthorizationRequiredError();
162
+ throw new TokenProviderError('invalidGrant');
163
+ }
164
+ if (code === 'temporarily_unavailable' || code === 'server_error')
165
+ throw new TokenProviderError('temporary');
166
+ throw new TokenProviderError();
167
+ }
168
+ return (await TokenSuccessResponse.parse(body)).tokens(request.scopes, this.now());
169
+ }
170
+ }
171
+ //# sourceMappingURL=fetch-oauth-token-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-oauth-token-provider.js","sourceRoot":"","sources":["../src/fetch-oauth-token-provider.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { TokenManager } from './token-manager.js';
1
2
  import { SchemaLike } from './schema-runtime.js';
2
3
  import { Logger } from './logger.js';
3
4
  import { TextMediaTypeDecoder } from './media-type-codecs/media-type-decoder.js';
@@ -7,22 +8,29 @@ import { Problem } from './problem.js';
7
8
  import { ExtEventSource, RequestAdapter, Transport, RequestSpec } from './transport.js';
8
9
  import { OperationResponse } from './operation-response.js';
9
10
  import { URLTemplate } from './url-template.js';
11
+ import { ClientSettings } from './client-settings.js';
10
12
  export declare class FetchTransport implements Transport {
11
13
  baseUrl: URLTemplate;
12
14
  adapter?: RequestAdapter;
15
+ tokenManager?: TokenManager;
16
+ private readonly authorizedRequests;
13
17
  mediaTypeEncoders: MediaTypeEncoders;
14
18
  mediaTypeDecoders: MediaTypeDecoders;
15
19
  problemTypes: Map<string, SchemaLike<Problem>>;
16
20
  logger?: Logger;
17
21
  constructor(baseUrl: string | URLTemplate, options?: {
18
22
  adapter?: RequestAdapter;
23
+ tokenManager?: TokenManager;
19
24
  mediaTypeEncoders?: MediaTypeEncoders;
20
25
  mediaTypeDecoders?: MediaTypeDecoders;
21
26
  logger?: Logger;
22
27
  });
28
+ /** Builds a transport from generated settings while retaining application transport options. */
29
+ static fromSettings(settings: ClientSettings, options?: ConstructorParameters<typeof FetchTransport>[1]): FetchTransport;
23
30
  registerProblem(type: URL | string, problemType: SchemaLike<Problem>): void;
24
31
  transportRequest(requestSpec: RequestSpec<unknown>): Promise<Request>;
25
32
  transportResponse(request: Request | RequestSpec<unknown>, dataExpected?: boolean): Promise<Response>;
33
+ private sendAuthorized;
26
34
  response<B, R>(requestSpec: RequestSpec<B>, resultType: SchemaLike<R>): Promise<OperationResponse<R>>;
27
35
  response<B>(requestSpec: RequestSpec<B>): Promise<OperationResponse<void>>;
28
36
  result<B, R>(requestSpec: RequestSpec<B>, resultType: SchemaLike<R>): Promise<R>;