@auth0/auth0-spa-js 2.17.0 → 2.18.0

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.
@@ -18,7 +18,7 @@ typeof SuppressedError === "function" ? SuppressedError : function(error, suppre
18
18
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
19
19
  };
20
20
 
21
- var version = "2.17.0";
21
+ var version = "2.18.0";
22
22
 
23
23
  const DEFAULT_AUTHORIZE_TIMEOUT_IN_SECONDS = 60;
24
24
 
@@ -175,7 +175,7 @@ const parseAuthenticationResult = queryString => {
175
175
 
176
176
  const runIframe = function runIframe(authorizeUrl, eventOrigin) {
177
177
  let timeoutInSeconds = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_AUTHORIZE_TIMEOUT_IN_SECONDS;
178
- return new Promise(((res, rej) => {
178
+ return new Promise((res, rej) => {
179
179
  const iframe = window.document.createElement("iframe");
180
180
  iframe.setAttribute("width", "0");
181
181
  iframe.setAttribute("height", "0");
@@ -187,10 +187,10 @@ const runIframe = function runIframe(authorizeUrl, eventOrigin) {
187
187
  }
188
188
  };
189
189
  let _iframeEventHandler;
190
- const timeoutSetTimeoutId = setTimeout((() => {
190
+ const timeoutSetTimeoutId = setTimeout(() => {
191
191
  rej(new TimeoutError);
192
192
  removeIframe();
193
- }), timeoutInSeconds * 1e3);
193
+ }, timeoutInSeconds * 1e3);
194
194
  _iframeEventHandler = function iframeEventHandler(e) {
195
195
  if (e.origin != eventOrigin) return;
196
196
  if (!e.data || e.data.type !== "authorization_response") return;
@@ -206,7 +206,7 @@ const runIframe = function runIframe(authorizeUrl, eventOrigin) {
206
206
  window.addEventListener("message", _iframeEventHandler, false);
207
207
  window.document.body.appendChild(iframe);
208
208
  iframe.setAttribute("src", authorizeUrl);
209
- }));
209
+ });
210
210
  };
211
211
 
212
212
  const openPopup = url => {
@@ -217,21 +217,21 @@ const openPopup = url => {
217
217
  return window.open(url, "auth0:authorize:popup", "left=".concat(left, ",top=").concat(top, ",width=").concat(width, ",height=").concat(height, ",resizable,scrollbars=yes,status=1"));
218
218
  };
219
219
 
220
- const runPopup = config => new Promise(((resolve, reject) => {
220
+ const runPopup = config => new Promise((resolve, reject) => {
221
221
  let _popupEventListener;
222
- const popupTimer = setInterval((() => {
222
+ const popupTimer = setInterval(() => {
223
223
  if (config.popup && config.popup.closed) {
224
224
  clearInterval(popupTimer);
225
225
  clearTimeout(timeoutId);
226
226
  window.removeEventListener("message", _popupEventListener, false);
227
227
  reject(new PopupCancelledError(config.popup));
228
228
  }
229
- }), 1e3);
230
- const timeoutId = setTimeout((() => {
229
+ }, 1e3);
230
+ const timeoutId = setTimeout(() => {
231
231
  clearInterval(popupTimer);
232
232
  reject(new PopupTimeoutError(config.popup));
233
233
  window.removeEventListener("message", _popupEventListener, false);
234
- }), (config.timeoutInSeconds || DEFAULT_AUTHORIZE_TIMEOUT_IN_SECONDS) * 1e3);
234
+ }, (config.timeoutInSeconds || DEFAULT_AUTHORIZE_TIMEOUT_IN_SECONDS) * 1e3);
235
235
  _popupEventListener = function popupEventListener(e) {
236
236
  if (!e.data || e.data.type !== "authorization_response") {
237
237
  return;
@@ -248,23 +248,30 @@ const runPopup = config => new Promise(((resolve, reject) => {
248
248
  resolve(e.data.response);
249
249
  };
250
250
  window.addEventListener("message", _popupEventListener);
251
- }));
251
+ });
252
252
 
253
253
  const getCrypto = () => window.crypto;
254
254
 
255
255
  const createRandomString = () => {
256
256
  const charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_~.";
257
+ const validMax = 256 - 256 % charset.length;
257
258
  let random = "";
258
- const randomValues = Array.from(getCrypto().getRandomValues(new Uint8Array(43)));
259
- randomValues.forEach((v => random += charset[v % charset.length]));
259
+ while (random.length < 43) {
260
+ const bytes = getCrypto().getRandomValues(new Uint8Array(43 - random.length));
261
+ for (const byte of bytes) {
262
+ if (random.length < 43 && byte < validMax) {
263
+ random += charset[byte % charset.length];
264
+ }
265
+ }
266
+ }
260
267
  return random;
261
268
  };
262
269
 
263
270
  const encode$2 = value => btoa(value);
264
271
 
265
- const stripUndefined = params => Object.keys(params).filter((k => typeof params[k] !== "undefined")).reduce(((acc, key) => Object.assign(Object.assign({}, acc), {
272
+ const stripUndefined = params => Object.keys(params).filter(k => typeof params[k] !== "undefined").reduce((acc, key) => Object.assign(Object.assign({}, acc), {
266
273
  [key]: params[key]
267
- })), {});
274
+ }), {});
268
275
 
269
276
  const ALLOWED_AUTH0CLIENT_PROPERTIES = [ {
270
277
  key: "name",
@@ -279,16 +286,16 @@ const ALLOWED_AUTH0CLIENT_PROPERTIES = [ {
279
286
 
280
287
  const stripAuth0Client = function stripAuth0Client(auth0Client) {
281
288
  let excludeEnv = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
282
- return Object.keys(auth0Client).reduce(((acc, key) => {
289
+ return Object.keys(auth0Client).reduce((acc, key) => {
283
290
  if (excludeEnv && key === "env") {
284
291
  return acc;
285
292
  }
286
- const allowedProperty = ALLOWED_AUTH0CLIENT_PROPERTIES.find((p => p.key === key));
293
+ const allowedProperty = ALLOWED_AUTH0CLIENT_PROPERTIES.find(p => p.key === key);
287
294
  if (allowedProperty && allowedProperty.type.includes(typeof auth0Client[key])) {
288
295
  acc[key] = auth0Client[key];
289
296
  }
290
297
  return acc;
291
- }), {});
298
+ }, {});
292
299
  };
293
300
 
294
301
  const createQueryParams = _a => {
@@ -311,10 +318,10 @@ const urlEncodeB64 = input => {
311
318
  "/": "_",
312
319
  "=": ""
313
320
  };
314
- return input.replace(/[+/=]/g, (m => b64Chars[m]));
321
+ return input.replace(/[+/=]/g, m => b64Chars[m]);
315
322
  };
316
323
 
317
- const decodeB64 = input => decodeURIComponent(atob(input).split("").map((c => "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2))).join(""));
324
+ const decodeB64 = input => decodeURIComponent(atob(input).split("").map(c => "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2)).join(""));
318
325
 
319
326
  const urlDecodeB64 = input => decodeB64(input.replace(/_/g, "/").replace(/-/g, "+"));
320
327
 
@@ -353,11 +360,11 @@ const parseNumber = value => {
353
360
  return parseInt(value, 10) || undefined;
354
361
  };
355
362
 
356
- const fromEntries = iterable => [ ...iterable ].reduce(((obj, _ref) => {
363
+ const fromEntries = iterable => [ ...iterable ].reduce((obj, _ref) => {
357
364
  let [key, val] = _ref;
358
365
  obj[key] = val;
359
366
  return obj;
360
- }), {});
367
+ }, {});
361
368
 
362
369
  var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
363
370
 
@@ -392,14 +399,14 @@ var ProcessLocking = function() {
392
399
  return _this.locked.has(key);
393
400
  };
394
401
  this.lock = function(key) {
395
- return new Promise((function(resolve, reject) {
402
+ return new Promise(function(resolve, reject) {
396
403
  if (_this.isLocked(key)) {
397
404
  _this.addToLocked(key, resolve);
398
405
  } else {
399
406
  _this.addToLocked(key);
400
407
  resolve();
401
408
  }
402
- }));
409
+ });
403
410
  };
404
411
  this.unlock = function(key) {
405
412
  var callbacks = _this.locked.get(key);
@@ -430,7 +437,7 @@ function getLock() {
430
437
  processLock.default = getLock;
431
438
 
432
439
  var __awaiter = commonjsGlobal && commonjsGlobal.__awaiter || function(thisArg, _arguments, P, generator) {
433
- return new (P || (P = Promise))((function(resolve, reject) {
440
+ return new (P || (P = Promise))(function(resolve, reject) {
434
441
  function fulfilled(value) {
435
442
  try {
436
443
  step(generator.next(value));
@@ -446,12 +453,12 @@ var __awaiter = commonjsGlobal && commonjsGlobal.__awaiter || function(thisArg,
446
453
  }
447
454
  }
448
455
  function step(result) {
449
- result.done ? resolve(result.value) : new P((function(resolve) {
456
+ result.done ? resolve(result.value) : new P(function(resolve) {
450
457
  resolve(result.value);
451
- })).then(fulfilled, rejected);
458
+ }).then(fulfilled, rejected);
452
459
  }
453
460
  step((generator = generator.apply(thisArg, _arguments || [])).next());
454
- }));
461
+ });
455
462
  };
456
463
 
457
464
  var __generator = commonjsGlobal && commonjsGlobal.__generator || function(thisArg, body) {
@@ -556,39 +563,39 @@ var LOCK_STORAGE_KEY = "browser-tabs-lock-key";
556
563
 
557
564
  var DEFAULT_STORAGE_HANDLER = {
558
565
  key: function(index) {
559
- return __awaiter(_this, void 0, void 0, (function() {
560
- return __generator(this, (function(_a) {
566
+ return __awaiter(_this, void 0, void 0, function() {
567
+ return __generator(this, function(_a) {
561
568
  throw new Error("Unsupported");
562
- }));
563
- }));
569
+ });
570
+ });
564
571
  },
565
572
  getItem: function(key) {
566
- return __awaiter(_this, void 0, void 0, (function() {
567
- return __generator(this, (function(_a) {
573
+ return __awaiter(_this, void 0, void 0, function() {
574
+ return __generator(this, function(_a) {
568
575
  throw new Error("Unsupported");
569
- }));
570
- }));
576
+ });
577
+ });
571
578
  },
572
579
  clear: function() {
573
- return __awaiter(_this, void 0, void 0, (function() {
574
- return __generator(this, (function(_a) {
580
+ return __awaiter(_this, void 0, void 0, function() {
581
+ return __generator(this, function(_a) {
575
582
  return [ 2, window.localStorage.clear() ];
576
- }));
577
- }));
583
+ });
584
+ });
578
585
  },
579
586
  removeItem: function(key) {
580
- return __awaiter(_this, void 0, void 0, (function() {
581
- return __generator(this, (function(_a) {
587
+ return __awaiter(_this, void 0, void 0, function() {
588
+ return __generator(this, function(_a) {
582
589
  throw new Error("Unsupported");
583
- }));
584
- }));
590
+ });
591
+ });
585
592
  },
586
593
  setItem: function(key, value) {
587
- return __awaiter(_this, void 0, void 0, (function() {
588
- return __generator(this, (function(_a) {
594
+ return __awaiter(_this, void 0, void 0, function() {
595
+ return __generator(this, function(_a) {
589
596
  throw new Error("Unsupported");
590
- }));
591
- }));
597
+ });
598
+ });
592
599
  },
593
600
  keySync: function(index) {
594
601
  return window.localStorage.key(index);
@@ -608,9 +615,9 @@ var DEFAULT_STORAGE_HANDLER = {
608
615
  };
609
616
 
610
617
  function delay(milliseconds) {
611
- return new Promise((function(resolve) {
618
+ return new Promise(function(resolve) {
612
619
  return setTimeout(resolve, milliseconds);
613
- }));
620
+ });
614
621
  }
615
622
 
616
623
  function generateRandomString(length) {
@@ -646,9 +653,9 @@ var SuperTokensLock = function() {
646
653
  if (timeout === void 0) {
647
654
  timeout = 5e3;
648
655
  }
649
- return __awaiter(this, void 0, void 0, (function() {
656
+ return __awaiter(this, void 0, void 0, function() {
650
657
  var iat, MAX_TIME, STORAGE_KEY, STORAGE, lockObj, TIMEOUT_KEY, lockObjPostDelay, parsedLockObjPostDelay;
651
- return __generator(this, (function(_a) {
658
+ return __generator(this, function(_a) {
652
659
  switch (_a.label) {
653
660
  case 0:
654
661
  iat = Date.now() + generateRandomString(4);
@@ -707,17 +714,17 @@ var SuperTokensLock = function() {
707
714
  case 8:
708
715
  return [ 2, false ];
709
716
  }
710
- }));
711
- }));
717
+ });
718
+ });
712
719
  };
713
720
  SuperTokensLock.prototype.refreshLockWhileAcquired = function(storageKey, iat) {
714
- return __awaiter(this, void 0, void 0, (function() {
721
+ return __awaiter(this, void 0, void 0, function() {
715
722
  var _this = this;
716
- return __generator(this, (function(_a) {
717
- setTimeout((function() {
718
- return __awaiter(_this, void 0, void 0, (function() {
723
+ return __generator(this, function(_a) {
724
+ setTimeout(function() {
725
+ return __awaiter(_this, void 0, void 0, function() {
719
726
  var STORAGE, lockObj, parsedLockObj;
720
- return __generator(this, (function(_a) {
727
+ return __generator(this, function(_a) {
721
728
  switch (_a.label) {
722
729
  case 0:
723
730
  return [ 4, processLock_1.default().lock(iat) ];
@@ -742,19 +749,19 @@ var SuperTokensLock = function() {
742
749
  this.refreshLockWhileAcquired(storageKey, iat);
743
750
  return [ 2 ];
744
751
  }
745
- }));
746
- }));
747
- }), 1e3);
752
+ });
753
+ });
754
+ }, 1e3);
748
755
  return [ 2 ];
749
- }));
750
- }));
756
+ });
757
+ });
751
758
  };
752
759
  SuperTokensLock.prototype.waitForSomethingToChange = function(MAX_TIME) {
753
- return __awaiter(this, void 0, void 0, (function() {
754
- return __generator(this, (function(_a) {
760
+ return __awaiter(this, void 0, void 0, function() {
761
+ return __generator(this, function(_a) {
755
762
  switch (_a.label) {
756
763
  case 0:
757
- return [ 4, new Promise((function(resolve) {
764
+ return [ 4, new Promise(function(resolve) {
758
765
  var resolvedCalled = false;
759
766
  var startedAt = Date.now();
760
767
  var MIN_TIME_TO_WAIT = 50;
@@ -779,14 +786,14 @@ var SuperTokensLock = function() {
779
786
  window.addEventListener("storage", stopWaiting);
780
787
  SuperTokensLock.addToWaiting(stopWaiting);
781
788
  var timeOutId = setTimeout(stopWaiting, Math.max(0, MAX_TIME - Date.now()));
782
- })) ];
789
+ }) ];
783
790
 
784
791
  case 1:
785
792
  _a.sent();
786
793
  return [ 2 ];
787
794
  }
788
- }));
789
- }));
795
+ });
796
+ });
790
797
  };
791
798
  SuperTokensLock.addToWaiting = function(func) {
792
799
  this.removeFromWaiting(func);
@@ -799,22 +806,22 @@ var SuperTokensLock = function() {
799
806
  if (SuperTokensLock.waiters === undefined) {
800
807
  return;
801
808
  }
802
- SuperTokensLock.waiters = SuperTokensLock.waiters.filter((function(i) {
809
+ SuperTokensLock.waiters = SuperTokensLock.waiters.filter(function(i) {
803
810
  return i !== func;
804
- }));
811
+ });
805
812
  };
806
813
  SuperTokensLock.notifyWaiters = function() {
807
814
  if (SuperTokensLock.waiters === undefined) {
808
815
  return;
809
816
  }
810
817
  var waiters = SuperTokensLock.waiters.slice();
811
- waiters.forEach((function(i) {
818
+ waiters.forEach(function(i) {
812
819
  return i();
813
- }));
820
+ });
814
821
  };
815
822
  SuperTokensLock.prototype.releaseLock = function(lockKey) {
816
- return __awaiter(this, void 0, void 0, (function() {
817
- return __generator(this, (function(_a) {
823
+ return __awaiter(this, void 0, void 0, function() {
824
+ return __generator(this, function(_a) {
818
825
  switch (_a.label) {
819
826
  case 0:
820
827
  return [ 4, this.releaseLock__private__(lockKey) ];
@@ -822,13 +829,13 @@ var SuperTokensLock = function() {
822
829
  case 1:
823
830
  return [ 2, _a.sent() ];
824
831
  }
825
- }));
826
- }));
832
+ });
833
+ });
827
834
  };
828
835
  SuperTokensLock.prototype.releaseLock__private__ = function(lockKey) {
829
- return __awaiter(this, void 0, void 0, (function() {
836
+ return __awaiter(this, void 0, void 0, function() {
830
837
  var STORAGE, STORAGE_KEY, lockObj, parsedlockObj;
831
- return __generator(this, (function(_a) {
838
+ return __generator(this, function(_a) {
832
839
  switch (_a.label) {
833
840
  case 0:
834
841
  STORAGE = this.storageHandler === undefined ? DEFAULT_STORAGE_HANDLER : this.storageHandler;
@@ -852,8 +859,8 @@ var SuperTokensLock = function() {
852
859
  case 2:
853
860
  return [ 2 ];
854
861
  }
855
- }));
856
- }));
862
+ });
863
+ });
857
864
  };
858
865
  SuperTokensLock.lockCorrector = function(storageHandler) {
859
866
  var MIN_ALLOWED_TIME = Date.now() - 5e3;
@@ -895,16 +902,16 @@ var _default = browserTabsLock.default = SuperTokensLock;
895
902
  class WebLocksApiManager {
896
903
  async runWithLock(key, timeout, callback) {
897
904
  const controller = new AbortController;
898
- const timeoutId = setTimeout((() => controller.abort()), timeout);
905
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
899
906
  try {
900
907
  return await navigator.locks.request(key, {
901
908
  mode: "exclusive",
902
909
  signal: controller.signal
903
- }, (async lock => {
910
+ }, async lock => {
904
911
  clearTimeout(timeoutId);
905
912
  if (!lock) throw new Error("Lock not available");
906
913
  return await callback();
907
- }));
914
+ });
908
915
  } catch (error) {
909
916
  clearTimeout(timeoutId);
910
917
  if ((error === null || error === void 0 ? void 0 : error.name) === "AbortError") throw new TimeoutError;
@@ -918,7 +925,7 @@ class LegacyLockManager {
918
925
  this.activeLocks = new Set;
919
926
  this.lock = new _default;
920
927
  this.pagehideHandler = () => {
921
- this.activeLocks.forEach((key => this.lock.releaseLock(key)));
928
+ this.activeLocks.forEach(key => this.lock.releaseLock(key));
922
929
  this.activeLocks.clear();
923
930
  };
924
931
  }
@@ -1306,7 +1313,7 @@ function isGrantTypeSupported(grantType) {
1306
1313
  return SUPPORTED_GRANT_TYPES.includes(grantType);
1307
1314
  }
1308
1315
 
1309
- const sendMessage = (message, to) => new Promise((function(resolve, reject) {
1316
+ const sendMessage = (message, to) => new Promise(function(resolve, reject) {
1310
1317
  const messageChannel = new MessageChannel;
1311
1318
  messageChannel.port1.onmessage = function(event) {
1312
1319
  if (event.data.error) {
@@ -1317,7 +1324,7 @@ const sendMessage = (message, to) => new Promise((function(resolve, reject) {
1317
1324
  messageChannel.port1.close();
1318
1325
  };
1319
1326
  to.postMessage(message, [ messageChannel.port2 ]);
1320
- }));
1327
+ });
1321
1328
 
1322
1329
  const createAbortController = () => new AbortController;
1323
1330
 
@@ -1334,14 +1341,14 @@ const fetchWithoutWorker = async (fetchUrl, fetchOptions, timeout) => {
1334
1341
  const controller = createAbortController();
1335
1342
  fetchOptions.signal = controller.signal;
1336
1343
  let timeoutId;
1337
- return Promise.race([ dofetch(fetchUrl, fetchOptions), new Promise(((_, reject) => {
1338
- timeoutId = setTimeout((() => {
1344
+ return Promise.race([ dofetch(fetchUrl, fetchOptions), new Promise((_, reject) => {
1345
+ timeoutId = setTimeout(() => {
1339
1346
  controller.abort();
1340
1347
  reject(new Error("Timeout when executing 'fetch'"));
1341
- }), timeout);
1342
- })) ]).finally((() => {
1348
+ }, timeout);
1349
+ }) ]).finally(() => {
1343
1350
  clearTimeout(timeoutId);
1344
- }));
1351
+ });
1345
1352
  };
1346
1353
 
1347
1354
  const fetchWithWorker = async (fetchUrl, audience, scope, fetchOptions, timeout, worker, useFormData, useMrrt) => sendMessage({
@@ -1463,10 +1470,10 @@ const injectDefaultScopes = function injectDefaultScopes(authScopes, openIdScope
1463
1470
  let requestedScopes = {
1464
1471
  [DEFAULT_AUDIENCE]: getUniqueScopes(openIdScope, ...extraScopes)
1465
1472
  };
1466
- Object.keys(authScopes).forEach((key => {
1473
+ Object.keys(authScopes).forEach(key => {
1467
1474
  const audienceScopes = authScopes[key];
1468
1475
  requestedScopes[key] = getUniqueScopes(openIdScope, audienceScopes, ...extraScopes);
1469
- }));
1476
+ });
1470
1477
  return requestedScopes;
1471
1478
  };
1472
1479
 
@@ -1534,7 +1541,7 @@ class LocalStorageCache {
1534
1541
  localStorage.removeItem(key);
1535
1542
  }
1536
1543
  allKeys() {
1537
- return Object.keys(window.localStorage).filter((key => key.startsWith(CACHE_KEY_PREFIX)));
1544
+ return Object.keys(window.localStorage).filter(key => key.startsWith(CACHE_KEY_PREFIX));
1538
1545
  }
1539
1546
  }
1540
1547
 
@@ -1672,10 +1679,10 @@ class CacheManager {
1672
1679
  var _a;
1673
1680
  const keys = await this.getCacheKeys();
1674
1681
  if (!keys) return;
1675
- await keys.filter((key => clientId ? key.includes(clientId) : true)).reduce((async (memo, key) => {
1682
+ await keys.filter(key => clientId ? key.includes(clientId) : true).reduce(async (memo, key) => {
1676
1683
  await memo;
1677
1684
  await this.cache.remove(key);
1678
- }), Promise.resolve());
1685
+ }, Promise.resolve());
1679
1686
  await ((_a = this.keyManifest) === null || _a === void 0 ? void 0 : _a.clear());
1680
1687
  }
1681
1688
  async wrapCacheEntry(entry) {
@@ -1700,14 +1707,14 @@ class CacheManager {
1700
1707
  }, CACHE_KEY_PREFIX, CACHE_KEY_ID_TOKEN_SUFFIX).toKey();
1701
1708
  }
1702
1709
  matchExistingCacheKey(keyToMatch, allKeys) {
1703
- return allKeys.filter((key => {
1710
+ return allKeys.filter(key => {
1704
1711
  var _a;
1705
1712
  const cacheKey = CacheKey.fromKey(key);
1706
1713
  const scopeSet = new Set(cacheKey.scope && cacheKey.scope.split(" "));
1707
1714
  const scopesToMatch = ((_a = keyToMatch.scope) === null || _a === void 0 ? void 0 : _a.split(" ")) || [];
1708
- const hasAllScopes = cacheKey.scope && scopesToMatch.reduce(((acc, current) => acc && scopeSet.has(current)), true);
1715
+ const hasAllScopes = cacheKey.scope && scopesToMatch.reduce((acc, current) => acc && scopeSet.has(current), true);
1709
1716
  return cacheKey.prefix === CACHE_KEY_PREFIX && cacheKey.clientId === keyToMatch.clientId && cacheKey.audience === keyToMatch.audience && hasAllScopes;
1710
- }))[0];
1717
+ })[0];
1711
1718
  }
1712
1719
  async getEntryWithRefreshToken(keyToMatch, allKeys) {
1713
1720
  var _a;
@@ -1776,12 +1783,12 @@ const decode$1 = token => {
1776
1783
  __raw: token
1777
1784
  };
1778
1785
  const user = {};
1779
- Object.keys(payloadJSON).forEach((k => {
1786
+ Object.keys(payloadJSON).forEach(k => {
1780
1787
  claims[k] = payloadJSON[k];
1781
1788
  if (!idTokendecoded.includes(k)) {
1782
1789
  user[k] = payloadJSON[k];
1783
1790
  }
1784
- }));
1791
+ });
1785
1792
  return {
1786
1793
  encoded: {
1787
1794
  header: header,
@@ -2097,17 +2104,17 @@ function createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {
2097
2104
  };
2098
2105
  }
2099
2106
 
2100
- var WorkerFactory = createBase64WorkerFactory("Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24oKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICBjbGFzcyBHZW5lcmljRXJyb3IgZXh0ZW5kcyBFcnJvciB7CiAgICAgICAgY29uc3RydWN0b3IoZXJyb3IsIGVycm9yX2Rlc2NyaXB0aW9uKSB7CiAgICAgICAgICAgIHN1cGVyKGVycm9yX2Rlc2NyaXB0aW9uKTsKICAgICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yOwogICAgICAgICAgICB0aGlzLmVycm9yX2Rlc2NyaXB0aW9uID0gZXJyb3JfZGVzY3JpcHRpb247CiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBHZW5lcmljRXJyb3IucHJvdG90eXBlKTsKICAgICAgICB9CiAgICAgICAgc3RhdGljIGZyb21QYXlsb2FkKF9yZWYpIHsKICAgICAgICAgICAgbGV0IHtlcnJvcjogZXJyb3IsIGVycm9yX2Rlc2NyaXB0aW9uOiBlcnJvcl9kZXNjcmlwdGlvbn0gPSBfcmVmOwogICAgICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNFcnJvcihlcnJvciwgZXJyb3JfZGVzY3JpcHRpb24pOwogICAgICAgIH0KICAgIH0KICAgIGNsYXNzIE1pc3NpbmdSZWZyZXNoVG9rZW5FcnJvciBleHRlbmRzIEdlbmVyaWNFcnJvciB7CiAgICAgICAgY29uc3RydWN0b3IoYXVkaWVuY2UsIHNjb3BlKSB7CiAgICAgICAgICAgIHN1cGVyKCJtaXNzaW5nX3JlZnJlc2hfdG9rZW4iLCAiTWlzc2luZyBSZWZyZXNoIFRva2VuIChhdWRpZW5jZTogJyIuY29uY2F0KHZhbHVlT3JFbXB0eVN0cmluZyhhdWRpZW5jZSwgWyAiZGVmYXVsdCIgXSksICInLCBzY29wZTogJyIpLmNvbmNhdCh2YWx1ZU9yRW1wdHlTdHJpbmcoc2NvcGUpLCAiJykiKSk7CiAgICAgICAgICAgIHRoaXMuYXVkaWVuY2UgPSBhdWRpZW5jZTsKICAgICAgICAgICAgdGhpcy5zY29wZSA9IHNjb3BlOwogICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgTWlzc2luZ1JlZnJlc2hUb2tlbkVycm9yLnByb3RvdHlwZSk7CiAgICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gdmFsdWVPckVtcHR5U3RyaW5nKHZhbHVlKSB7CiAgICAgICAgbGV0IGV4Y2x1ZGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IFtdOwogICAgICAgIHJldHVybiB2YWx1ZSAmJiAhZXhjbHVkZS5pbmNsdWRlcyh2YWx1ZSkgPyB2YWx1ZSA6ICIiOwogICAgfQogICAgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHsKICAgICAgICB2YXIgdCA9IHt9OwogICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTsKICAgICAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSAiZnVuY3Rpb24iKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07CiAgICAgICAgfQogICAgICAgIHJldHVybiB0OwogICAgfQogICAgdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gImZ1bmN0aW9uIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7CiAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7CiAgICAgICAgcmV0dXJuIGUubmFtZSA9ICJTdXBwcmVzc2VkRXJyb3IiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7CiAgICB9OwogICAgY29uc3Qgc3RyaXBVbmRlZmluZWQgPSBwYXJhbXMgPT4gT2JqZWN0LmtleXMocGFyYW1zKS5maWx0ZXIoKGsgPT4gdHlwZW9mIHBhcmFtc1trXSAhPT0gInVuZGVmaW5lZCIpKS5yZWR1Y2UoKChhY2MsIGtleSkgPT4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhY2MpLCB7CiAgICAgICAgW2tleV06IHBhcmFtc1trZXldCiAgICB9KSksIHt9KTsKICAgIGNvbnN0IGNyZWF0ZVF1ZXJ5UGFyYW1zID0gX2EgPT4gewogICAgICAgIHZhciB7Y2xpZW50SWQ6IGNsaWVudF9pZH0gPSBfYSwgcGFyYW1zID0gX19yZXN0KF9hLCBbICJjbGllbnRJZCIgXSk7CiAgICAgICAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXMoc3RyaXBVbmRlZmluZWQoT2JqZWN0LmFzc2lnbih7CiAgICAgICAgICAgIGNsaWVudF9pZDogY2xpZW50X2lkCiAgICAgICAgfSwgcGFyYW1zKSkpLnRvU3RyaW5nKCk7CiAgICB9OwogICAgY29uc3QgZnJvbUVudHJpZXMgPSBpdGVyYWJsZSA9PiBbIC4uLml0ZXJhYmxlIF0ucmVkdWNlKCgob2JqLCBfcmVmKSA9PiB7CiAgICAgICAgbGV0IFtrZXksIHZhbF0gPSBfcmVmOwogICAgICAgIG9ialtrZXldID0gdmFsOwogICAgICAgIHJldHVybiBvYmo7CiAgICB9KSwge30pOwogICAgbGV0IHJlZnJlc2hUb2tlbnMgPSB7fTsKICAgIGNvbnN0IGNhY2hlS2V5ID0gKGF1ZGllbmNlLCBzY29wZSkgPT4gIiIuY29uY2F0KGF1ZGllbmNlLCAifCIpLmNvbmNhdChzY29wZSk7CiAgICBjb25zdCBjYWNoZUtleUNvbnRhaW5zQXVkaWVuY2UgPSAoYXVkaWVuY2UsIGNhY2hlS2V5KSA9PiBjYWNoZUtleS5zdGFydHNXaXRoKCIiLmNvbmNhdChhdWRpZW5jZSwgInwiKSk7CiAgICBjb25zdCBnZXRSZWZyZXNoVG9rZW4gPSAoYXVkaWVuY2UsIHNjb3BlKSA9PiByZWZyZXNoVG9rZW5zW2NhY2hlS2V5KGF1ZGllbmNlLCBzY29wZSldOwogICAgY29uc3Qgc2V0UmVmcmVzaFRva2VuID0gKHJlZnJlc2hUb2tlbiwgYXVkaWVuY2UsIHNjb3BlKSA9PiByZWZyZXNoVG9rZW5zW2NhY2hlS2V5KGF1ZGllbmNlLCBzY29wZSldID0gcmVmcmVzaFRva2VuOwogICAgY29uc3QgZGVsZXRlUmVmcmVzaFRva2VuID0gKGF1ZGllbmNlLCBzY29wZSkgPT4gZGVsZXRlIHJlZnJlc2hUb2tlbnNbY2FjaGVLZXkoYXVkaWVuY2UsIHNjb3BlKV07CiAgICBjb25zdCB3YWl0ID0gdGltZSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIHRpbWUpKSk7CiAgICBjb25zdCBmb3JtRGF0YVRvT2JqZWN0ID0gZm9ybURhdGEgPT4gewogICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhmb3JtRGF0YSk7CiAgICAgICAgY29uc3QgcGFyc2VkUXVlcnkgPSB7fTsKICAgICAgICBxdWVyeVBhcmFtcy5mb3JFYWNoKCgodmFsLCBrZXkpID0+IHsKICAgICAgICAgICAgcGFyc2VkUXVlcnlba2V5XSA9IHZhbDsKICAgICAgICB9KSk7CiAgICAgICAgcmV0dXJuIHBhcnNlZFF1ZXJ5OwogICAgfTsKICAgIGNvbnN0IHVwZGF0ZVJlZnJlc2hUb2tlbnMgPSAob2xkUmVmcmVzaFRva2VuLCBuZXdSZWZyZXNoVG9rZW4pID0+IHsKICAgICAgICBPYmplY3QuZW50cmllcyhyZWZyZXNoVG9rZW5zKS5mb3JFYWNoKChfcmVmID0+IHsKICAgICAgICAgICAgbGV0IFtrZXksIHRva2VuXSA9IF9yZWY7CiAgICAgICAgICAgIGlmICh0b2tlbiA9PT0gb2xkUmVmcmVzaFRva2VuKSB7CiAgICAgICAgICAgICAgICByZWZyZXNoVG9rZW5zW2tleV0gPSBuZXdSZWZyZXNoVG9rZW47CiAgICAgICAgICAgIH0KICAgICAgICB9KSk7CiAgICB9OwogICAgY29uc3QgY2hlY2tEb3duc2NvcGluZyA9IChzY29wZSwgYXVkaWVuY2UpID0+IHsKICAgICAgICBjb25zdCBmaW5kQ29pbmNpZGVuY2UgPSBPYmplY3Qua2V5cyhyZWZyZXNoVG9rZW5zKS5maW5kKChrZXkgPT4gewogICAgICAgICAgICBpZiAoa2V5ICE9PSAibGF0ZXN0X3JlZnJlc2hfdG9rZW4iKSB7CiAgICAgICAgICAgICAgICBjb25zdCBpc1NhbWVBdWRpZW5jZSA9IGNhY2hlS2V5Q29udGFpbnNBdWRpZW5jZShhdWRpZW5jZSwga2V5KTsKICAgICAgICAgICAgICAgIGNvbnN0IHNjb3Blc0tleSA9IGtleS5zcGxpdCgifCIpWzFdLnNwbGl0KCIgIik7CiAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0ZWRTY29wZXMgPSBzY29wZS5zcGxpdCgiICIpOwogICAgICAgICAgICAgICAgY29uc3Qgc2NvcGVzQXJlSW5jbHVkZWQgPSByZXF1ZXN0ZWRTY29wZXMuZXZlcnkoKGtleSA9PiBzY29wZXNLZXkuaW5jbHVkZXMoa2V5KSkpOwogICAgICAgICAgICAgICAgcmV0dXJuIGlzU2FtZUF1ZGllbmNlICYmIHNjb3Blc0FyZUluY2x1ZGVkOwogICAgICAgICAgICB9CiAgICAgICAgfSkpOwogICAgICAgIHJldHVybiBmaW5kQ29pbmNpZGVuY2UgPyB0cnVlIDogZmFsc2U7CiAgICB9OwogICAgY29uc3QgbWVzc2FnZUhhbmRsZXIgPSBhc3luYyBfcmVmMiA9PiB7CiAgICAgICAgbGV0IHtkYXRhOiB7dGltZW91dDogdGltZW91dCwgYXV0aDogYXV0aCwgZmV0Y2hVcmw6IGZldGNoVXJsLCBmZXRjaE9wdGlvbnM6IGZldGNoT3B0aW9ucywgdXNlRm9ybURhdGE6IHVzZUZvcm1EYXRhLCB1c2VNcnJ0OiB1c2VNcnJ0fSwgcG9ydHM6IFtwb3J0XX0gPSBfcmVmMjsKICAgICAgICBsZXQgaGVhZGVycyA9IHt9OwogICAgICAgIGxldCBqc29uOwogICAgICAgIGxldCByZWZyZXNoVG9rZW47CiAgICAgICAgY29uc3Qge2F1ZGllbmNlOiBhdWRpZW5jZSwgc2NvcGU6IHNjb3BlfSA9IGF1dGggfHwge307CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgY29uc3QgYm9keSA9IHVzZUZvcm1EYXRhID8gZm9ybURhdGFUb09iamVjdChmZXRjaE9wdGlvbnMuYm9keSkgOiBKU09OLnBhcnNlKGZldGNoT3B0aW9ucy5ib2R5KTsKICAgICAgICAgICAgaWYgKCFib2R5LnJlZnJlc2hfdG9rZW4gJiYgYm9keS5ncmFudF90eXBlID09PSAicmVmcmVzaF90b2tlbiIpIHsKICAgICAgICAgICAgICAgIHJlZnJlc2hUb2tlbiA9IGdldFJlZnJlc2hUb2tlbihhdWRpZW5jZSwgc2NvcGUpOwogICAgICAgICAgICAgICAgaWYgKCFyZWZyZXNoVG9rZW4gJiYgdXNlTXJydCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhdGVzdFJlZnJlc2hUb2tlbiA9IHJlZnJlc2hUb2tlbnNbImxhdGVzdF9yZWZyZXNoX3Rva2VuIl07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNEb3duc2NvcGluZyA9IGNoZWNrRG93bnNjb3Bpbmcoc2NvcGUsIGF1ZGllbmNlKTsKICAgICAgICAgICAgICAgICAgICBpZiAobGF0ZXN0UmVmcmVzaFRva2VuICYmICFpc0Rvd25zY29waW5nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2tlbiA9IGxhdGVzdFJlZnJlc2hUb2tlbjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIXJlZnJlc2hUb2tlbikgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBNaXNzaW5nUmVmcmVzaFRva2VuRXJyb3IoYXVkaWVuY2UsIHNjb3BlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZldGNoT3B0aW9ucy5ib2R5ID0gdXNlRm9ybURhdGEgPyBjcmVhdGVRdWVyeVBhcmFtcyhPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGJvZHkpLCB7CiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuCiAgICAgICAgICAgICAgICB9KSkgOiBKU09OLnN0cmluZ2lmeShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGJvZHkpLCB7CiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuCiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IGFib3J0Q29udHJvbGxlcjsKICAgICAgICAgICAgaWYgKHR5cGVvZiBBYm9ydENvbnRyb2xsZXIgPT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgICAgICAgIGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXI7CiAgICAgICAgICAgICAgICBmZXRjaE9wdGlvbnMuc2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNpZ25hbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgcmVzcG9uc2U7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbIHdhaXQodGltZW91dCksIGZldGNoKGZldGNoVXJsLCBPYmplY3QuYXNzaWduKHt9LCBmZXRjaE9wdGlvbnMpKSBdKTsKICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UoewogICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvci5tZXNzYWdlCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIXJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICBpZiAoYWJvcnRDb250cm9sbGVyKSBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTsKICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UoewogICAgICAgICAgICAgICAgICAgIGVycm9yOiAiVGltZW91dCB3aGVuIGV4ZWN1dGluZyAnZmV0Y2gnIgogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGVhZGVycyA9IGZyb21FbnRyaWVzKHJlc3BvbnNlLmhlYWRlcnMpOwogICAgICAgICAgICBqc29uID0gYXdhaXQgcmVzcG9uc2UuanNvbigpOwogICAgICAgICAgICBpZiAoanNvbi5yZWZyZXNoX3Rva2VuKSB7CiAgICAgICAgICAgICAgICBpZiAodXNlTXJydCkgewogICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2tlbnNbImxhdGVzdF9yZWZyZXNoX3Rva2VuIl0gPSBqc29uLnJlZnJlc2hfdG9rZW47CiAgICAgICAgICAgICAgICAgICAgdXBkYXRlUmVmcmVzaFRva2VucyhyZWZyZXNoVG9rZW4sIGpzb24ucmVmcmVzaF90b2tlbik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXRSZWZyZXNoVG9rZW4oanNvbi5yZWZyZXNoX3Rva2VuLCBhdWRpZW5jZSwgc2NvcGUpOwogICAgICAgICAgICAgICAgZGVsZXRlIGpzb24ucmVmcmVzaF90b2tlbjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGRlbGV0ZVJlZnJlc2hUb2tlbihhdWRpZW5jZSwgc2NvcGUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UoewogICAgICAgICAgICAgICAgb2s6IHJlc3BvbnNlLm9rLAogICAgICAgICAgICAgICAganNvbjoganNvbiwKICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMKICAgICAgICAgICAgfSk7CiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh7CiAgICAgICAgICAgICAgICBvazogZmFsc2UsCiAgICAgICAgICAgICAgICBqc29uOiB7CiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yLmVycm9yLAogICAgICAgICAgICAgICAgICAgIGVycm9yX2Rlc2NyaXB0aW9uOiBlcnJvci5tZXNzYWdlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9OwogICAgewogICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBtZXNzYWdlSGFuZGxlcik7CiAgICB9Cn0pKCk7Cgo=", null, false);
2107
+ var WorkerFactory = createBase64WorkerFactory("Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24oKSB7CiAgICAidXNlIHN0cmljdCI7CiAgICBjbGFzcyBHZW5lcmljRXJyb3IgZXh0ZW5kcyBFcnJvciB7CiAgICAgICAgY29uc3RydWN0b3IoZXJyb3IsIGVycm9yX2Rlc2NyaXB0aW9uKSB7CiAgICAgICAgICAgIHN1cGVyKGVycm9yX2Rlc2NyaXB0aW9uKTsKICAgICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yOwogICAgICAgICAgICB0aGlzLmVycm9yX2Rlc2NyaXB0aW9uID0gZXJyb3JfZGVzY3JpcHRpb247CiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBHZW5lcmljRXJyb3IucHJvdG90eXBlKTsKICAgICAgICB9CiAgICAgICAgc3RhdGljIGZyb21QYXlsb2FkKF9yZWYpIHsKICAgICAgICAgICAgbGV0IHtlcnJvcjogZXJyb3IsIGVycm9yX2Rlc2NyaXB0aW9uOiBlcnJvcl9kZXNjcmlwdGlvbn0gPSBfcmVmOwogICAgICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNFcnJvcihlcnJvciwgZXJyb3JfZGVzY3JpcHRpb24pOwogICAgICAgIH0KICAgIH0KICAgIGNsYXNzIE1pc3NpbmdSZWZyZXNoVG9rZW5FcnJvciBleHRlbmRzIEdlbmVyaWNFcnJvciB7CiAgICAgICAgY29uc3RydWN0b3IoYXVkaWVuY2UsIHNjb3BlKSB7CiAgICAgICAgICAgIHN1cGVyKCJtaXNzaW5nX3JlZnJlc2hfdG9rZW4iLCAiTWlzc2luZyBSZWZyZXNoIFRva2VuIChhdWRpZW5jZTogJyIuY29uY2F0KHZhbHVlT3JFbXB0eVN0cmluZyhhdWRpZW5jZSwgWyAiZGVmYXVsdCIgXSksICInLCBzY29wZTogJyIpLmNvbmNhdCh2YWx1ZU9yRW1wdHlTdHJpbmcoc2NvcGUpLCAiJykiKSk7CiAgICAgICAgICAgIHRoaXMuYXVkaWVuY2UgPSBhdWRpZW5jZTsKICAgICAgICAgICAgdGhpcy5zY29wZSA9IHNjb3BlOwogICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgTWlzc2luZ1JlZnJlc2hUb2tlbkVycm9yLnByb3RvdHlwZSk7CiAgICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gdmFsdWVPckVtcHR5U3RyaW5nKHZhbHVlKSB7CiAgICAgICAgbGV0IGV4Y2x1ZGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IFtdOwogICAgICAgIHJldHVybiB2YWx1ZSAmJiAhZXhjbHVkZS5pbmNsdWRlcyh2YWx1ZSkgPyB2YWx1ZSA6ICIiOwogICAgfQogICAgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHsKICAgICAgICB2YXIgdCA9IHt9OwogICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTsKICAgICAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSAiZnVuY3Rpb24iKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07CiAgICAgICAgfQogICAgICAgIHJldHVybiB0OwogICAgfQogICAgdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gImZ1bmN0aW9uIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7CiAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7CiAgICAgICAgcmV0dXJuIGUubmFtZSA9ICJTdXBwcmVzc2VkRXJyb3IiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7CiAgICB9OwogICAgY29uc3Qgc3RyaXBVbmRlZmluZWQgPSBwYXJhbXMgPT4gT2JqZWN0LmtleXMocGFyYW1zKS5maWx0ZXIoayA9PiB0eXBlb2YgcGFyYW1zW2tdICE9PSAidW5kZWZpbmVkIikucmVkdWNlKChhY2MsIGtleSkgPT4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhY2MpLCB7CiAgICAgICAgW2tleV06IHBhcmFtc1trZXldCiAgICB9KSwge30pOwogICAgY29uc3QgY3JlYXRlUXVlcnlQYXJhbXMgPSBfYSA9PiB7CiAgICAgICAgdmFyIHtjbGllbnRJZDogY2xpZW50X2lkfSA9IF9hLCBwYXJhbXMgPSBfX3Jlc3QoX2EsIFsgImNsaWVudElkIiBdKTsKICAgICAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcyhzdHJpcFVuZGVmaW5lZChPYmplY3QuYXNzaWduKHsKICAgICAgICAgICAgY2xpZW50X2lkOiBjbGllbnRfaWQKICAgICAgICB9LCBwYXJhbXMpKSkudG9TdHJpbmcoKTsKICAgIH07CiAgICBjb25zdCBmcm9tRW50cmllcyA9IGl0ZXJhYmxlID0+IFsgLi4uaXRlcmFibGUgXS5yZWR1Y2UoKG9iaiwgX3JlZikgPT4gewogICAgICAgIGxldCBba2V5LCB2YWxdID0gX3JlZjsKICAgICAgICBvYmpba2V5XSA9IHZhbDsKICAgICAgICByZXR1cm4gb2JqOwogICAgfSwge30pOwogICAgbGV0IHJlZnJlc2hUb2tlbnMgPSB7fTsKICAgIGNvbnN0IGNhY2hlS2V5ID0gKGF1ZGllbmNlLCBzY29wZSkgPT4gIiIuY29uY2F0KGF1ZGllbmNlLCAifCIpLmNvbmNhdChzY29wZSk7CiAgICBjb25zdCBjYWNoZUtleUNvbnRhaW5zQXVkaWVuY2UgPSAoYXVkaWVuY2UsIGNhY2hlS2V5KSA9PiBjYWNoZUtleS5zdGFydHNXaXRoKCIiLmNvbmNhdChhdWRpZW5jZSwgInwiKSk7CiAgICBjb25zdCBnZXRSZWZyZXNoVG9rZW4gPSAoYXVkaWVuY2UsIHNjb3BlKSA9PiByZWZyZXNoVG9rZW5zW2NhY2hlS2V5KGF1ZGllbmNlLCBzY29wZSldOwogICAgY29uc3Qgc2V0UmVmcmVzaFRva2VuID0gKHJlZnJlc2hUb2tlbiwgYXVkaWVuY2UsIHNjb3BlKSA9PiByZWZyZXNoVG9rZW5zW2NhY2hlS2V5KGF1ZGllbmNlLCBzY29wZSldID0gcmVmcmVzaFRva2VuOwogICAgY29uc3QgZGVsZXRlUmVmcmVzaFRva2VuID0gKGF1ZGllbmNlLCBzY29wZSkgPT4gZGVsZXRlIHJlZnJlc2hUb2tlbnNbY2FjaGVLZXkoYXVkaWVuY2UsIHNjb3BlKV07CiAgICBjb25zdCB3YWl0ID0gdGltZSA9PiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgdGltZSkpOwogICAgY29uc3QgZm9ybURhdGFUb09iamVjdCA9IGZvcm1EYXRhID0+IHsKICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoZm9ybURhdGEpOwogICAgICAgIGNvbnN0IHBhcnNlZFF1ZXJ5ID0ge307CiAgICAgICAgcXVlcnlQYXJhbXMuZm9yRWFjaCgodmFsLCBrZXkpID0+IHsKICAgICAgICAgICAgcGFyc2VkUXVlcnlba2V5XSA9IHZhbDsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gcGFyc2VkUXVlcnk7CiAgICB9OwogICAgY29uc3QgdXBkYXRlUmVmcmVzaFRva2VucyA9IChvbGRSZWZyZXNoVG9rZW4sIG5ld1JlZnJlc2hUb2tlbikgPT4gewogICAgICAgIE9iamVjdC5lbnRyaWVzKHJlZnJlc2hUb2tlbnMpLmZvckVhY2goX3JlZiA9PiB7CiAgICAgICAgICAgIGxldCBba2V5LCB0b2tlbl0gPSBfcmVmOwogICAgICAgICAgICBpZiAodG9rZW4gPT09IG9sZFJlZnJlc2hUb2tlbikgewogICAgICAgICAgICAgICAgcmVmcmVzaFRva2Vuc1trZXldID0gbmV3UmVmcmVzaFRva2VuOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwogICAgY29uc3QgY2hlY2tEb3duc2NvcGluZyA9IChzY29wZSwgYXVkaWVuY2UpID0+IHsKICAgICAgICBjb25zdCBmaW5kQ29pbmNpZGVuY2UgPSBPYmplY3Qua2V5cyhyZWZyZXNoVG9rZW5zKS5maW5kKGtleSA9PiB7CiAgICAgICAgICAgIGlmIChrZXkgIT09ICJsYXRlc3RfcmVmcmVzaF90b2tlbiIpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGlzU2FtZUF1ZGllbmNlID0gY2FjaGVLZXlDb250YWluc0F1ZGllbmNlKGF1ZGllbmNlLCBrZXkpOwogICAgICAgICAgICAgICAgY29uc3Qgc2NvcGVzS2V5ID0ga2V5LnNwbGl0KCJ8IilbMV0uc3BsaXQoIiAiKTsKICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RlZFNjb3BlcyA9IHNjb3BlLnNwbGl0KCIgIik7CiAgICAgICAgICAgICAgICBjb25zdCBzY29wZXNBcmVJbmNsdWRlZCA9IHJlcXVlc3RlZFNjb3Blcy5ldmVyeShrZXkgPT4gc2NvcGVzS2V5LmluY2x1ZGVzKGtleSkpOwogICAgICAgICAgICAgICAgcmV0dXJuIGlzU2FtZUF1ZGllbmNlICYmIHNjb3Blc0FyZUluY2x1ZGVkOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIGZpbmRDb2luY2lkZW5jZSA/IHRydWUgOiBmYWxzZTsKICAgIH07CiAgICBjb25zdCBtZXNzYWdlSGFuZGxlciA9IGFzeW5jIF9yZWYyID0+IHsKICAgICAgICBsZXQge2RhdGE6IHt0aW1lb3V0OiB0aW1lb3V0LCBhdXRoOiBhdXRoLCBmZXRjaFVybDogZmV0Y2hVcmwsIGZldGNoT3B0aW9uczogZmV0Y2hPcHRpb25zLCB1c2VGb3JtRGF0YTogdXNlRm9ybURhdGEsIHVzZU1ycnQ6IHVzZU1ycnR9LCBwb3J0czogW3BvcnRdfSA9IF9yZWYyOwogICAgICAgIGxldCBoZWFkZXJzID0ge307CiAgICAgICAgbGV0IGpzb247CiAgICAgICAgbGV0IHJlZnJlc2hUb2tlbjsKICAgICAgICBjb25zdCB7YXVkaWVuY2U6IGF1ZGllbmNlLCBzY29wZTogc2NvcGV9ID0gYXV0aCB8fCB7fTsKICAgICAgICB0cnkgewogICAgICAgICAgICBjb25zdCBib2R5ID0gdXNlRm9ybURhdGEgPyBmb3JtRGF0YVRvT2JqZWN0KGZldGNoT3B0aW9ucy5ib2R5KSA6IEpTT04ucGFyc2UoZmV0Y2hPcHRpb25zLmJvZHkpOwogICAgICAgICAgICBpZiAoIWJvZHkucmVmcmVzaF90b2tlbiAmJiBib2R5LmdyYW50X3R5cGUgPT09ICJyZWZyZXNoX3Rva2VuIikgewogICAgICAgICAgICAgICAgcmVmcmVzaFRva2VuID0gZ2V0UmVmcmVzaFRva2VuKGF1ZGllbmNlLCBzY29wZSk7CiAgICAgICAgICAgICAgICBpZiAoIXJlZnJlc2hUb2tlbiAmJiB1c2VNcnJ0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGF0ZXN0UmVmcmVzaFRva2VuID0gcmVmcmVzaFRva2Vuc1sibGF0ZXN0X3JlZnJlc2hfdG9rZW4iXTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0Rvd25zY29waW5nID0gY2hlY2tEb3duc2NvcGluZyhzY29wZSwgYXVkaWVuY2UpOwogICAgICAgICAgICAgICAgICAgIGlmIChsYXRlc3RSZWZyZXNoVG9rZW4gJiYgIWlzRG93bnNjb3BpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRva2VuID0gbGF0ZXN0UmVmcmVzaFRva2VuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghcmVmcmVzaFRva2VuKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE1pc3NpbmdSZWZyZXNoVG9rZW5FcnJvcihhdWRpZW5jZSwgc2NvcGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZmV0Y2hPcHRpb25zLmJvZHkgPSB1c2VGb3JtRGF0YSA/IGNyZWF0ZVF1ZXJ5UGFyYW1zKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYm9keSksIHsKICAgICAgICAgICAgICAgICAgICByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4KICAgICAgICAgICAgICAgIH0pKSA6IEpTT04uc3RyaW5naWZ5KE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYm9keSksIHsKICAgICAgICAgICAgICAgICAgICByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4KICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgYWJvcnRDb250cm9sbGVyOwogICAgICAgICAgICBpZiAodHlwZW9mIEFib3J0Q29udHJvbGxlciA9PT0gImZ1bmN0aW9uIikgewogICAgICAgICAgICAgICAgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcjsKICAgICAgICAgICAgICAgIGZldGNoT3B0aW9ucy5zaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxldCByZXNwb25zZTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFsgd2FpdCh0aW1lb3V0KSwgZmV0Y2goZmV0Y2hVcmwsIE9iamVjdC5hc3NpZ24oe30sIGZldGNoT3B0aW9ucykpIF0pOwogICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yLm1lc3NhZ2UKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghcmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgIGlmIChhYm9ydENvbnRyb2xsZXIpIGFib3J0Q29udHJvbGxlci5hYm9ydCgpOwogICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgICAgZXJyb3I6ICJUaW1lb3V0IHdoZW4gZXhlY3V0aW5nICdmZXRjaCciCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBoZWFkZXJzID0gZnJvbUVudHJpZXMocmVzcG9uc2UuaGVhZGVycyk7CiAgICAgICAgICAgIGpzb24gPSBhd2FpdCByZXNwb25zZS5qc29uKCk7CiAgICAgICAgICAgIGlmIChqc29uLnJlZnJlc2hfdG9rZW4pIHsKICAgICAgICAgICAgICAgIGlmICh1c2VNcnJ0KSB7CiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRva2Vuc1sibGF0ZXN0X3JlZnJlc2hfdG9rZW4iXSA9IGpzb24ucmVmcmVzaF90b2tlbjsKICAgICAgICAgICAgICAgICAgICB1cGRhdGVSZWZyZXNoVG9rZW5zKHJlZnJlc2hUb2tlbiwganNvbi5yZWZyZXNoX3Rva2VuKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldFJlZnJlc2hUb2tlbihqc29uLnJlZnJlc2hfdG9rZW4sIGF1ZGllbmNlLCBzY29wZSk7CiAgICAgICAgICAgICAgICBkZWxldGUganNvbi5yZWZyZXNoX3Rva2VuOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZGVsZXRlUmVmcmVzaFRva2VuKGF1ZGllbmNlLCBzY29wZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh7CiAgICAgICAgICAgICAgICBvazogcmVzcG9uc2Uub2ssCiAgICAgICAgICAgICAgICBqc29uOiBqc29uLAogICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycwogICAgICAgICAgICB9KTsKICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHsKICAgICAgICAgICAgICAgIG9rOiBmYWxzZSwKICAgICAgICAgICAgICAgIGpzb246IHsKICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3IuZXJyb3IsCiAgICAgICAgICAgICAgICAgICAgZXJyb3JfZGVzY3JpcHRpb246IGVycm9yLm1lc3NhZ2UKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzCiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH07CiAgICB7CiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIG1lc3NhZ2VIYW5kbGVyKTsKICAgIH0KfSkoKTsKCg==", null, false);
2101
2108
 
2102
2109
  const singlePromiseMap = {};
2103
2110
 
2104
2111
  const singlePromise = (cb, key) => {
2105
2112
  let promise = singlePromiseMap[key];
2106
2113
  if (!promise) {
2107
- promise = cb().finally((() => {
2114
+ promise = cb().finally(() => {
2108
2115
  delete singlePromiseMap[key];
2109
2116
  promise = null;
2110
- }));
2117
+ });
2111
2118
  singlePromiseMap[key] = promise;
2112
2119
  }
2113
2120
  return promise;
@@ -2197,13 +2204,13 @@ const patchOpenUrlWithOnRedirect = options => {
2197
2204
  const allScopesAreIncluded = (scopeToInclude, scopes) => {
2198
2205
  const scopeGroup = (scopes === null || scopes === void 0 ? void 0 : scopes.split(" ")) || [];
2199
2206
  const scopesToInclude = (scopeToInclude === null || scopeToInclude === void 0 ? void 0 : scopeToInclude.split(" ")) || [];
2200
- return scopesToInclude.every((key => scopeGroup.includes(key)));
2207
+ return scopesToInclude.every(key => scopeGroup.includes(key));
2201
2208
  };
2202
2209
 
2203
2210
  const getMissingScopes = (requestedScope, respondedScope) => {
2204
2211
  const requestedScopes = (requestedScope === null || requestedScope === void 0 ? void 0 : requestedScope.split(" ")) || [];
2205
2212
  const respondedScopes = (respondedScope === null || respondedScope === void 0 ? void 0 : respondedScope.split(" ")) || [];
2206
- const missingScopes = requestedScopes.filter((scope => respondedScopes.indexOf(scope) == -1));
2213
+ const missingScopes = requestedScopes.filter(scope => respondedScopes.indexOf(scope) == -1);
2207
2214
  return missingScopes.join(",");
2208
2215
  };
2209
2216
 
@@ -2215,7 +2222,7 @@ const getScopeToRequest = (useMrrt, authorizationParams, cachedAudience, cachedS
2215
2222
  }
2216
2223
  const cachedScopes = cachedScope.split(" ");
2217
2224
  const newScopes = ((_a = authorizationParams.scope) === null || _a === void 0 ? void 0 : _a.split(" ")) || [];
2218
- const newScopesAreIncluded = newScopes.every((scope => cachedScopes.includes(scope)));
2225
+ const newScopesAreIncluded = newScopes.every(scope => cachedScopes.includes(scope));
2219
2226
  return cachedScopes.length >= newScopes.length && newScopesAreIncluded ? cachedScope : authorizationParams.scope;
2220
2227
  }
2221
2228
  return authorizationParams.scope;
@@ -2248,11 +2255,11 @@ class DpopStorage {
2248
2255
  }
2249
2256
  createDbHandle() {
2250
2257
  const req = window.indexedDB.open(NAME, this.getVersion());
2251
- return new Promise(((resolve, reject) => {
2252
- req.onupgradeneeded = () => Object.values(TABLES).forEach((t => req.result.createObjectStore(t)));
2258
+ return new Promise((resolve, reject) => {
2259
+ req.onupgradeneeded = () => Object.values(TABLES).forEach(t => req.result.createObjectStore(t));
2253
2260
  req.onerror = () => reject(req.error);
2254
2261
  req.onsuccess = () => resolve(req.result);
2255
- }));
2262
+ });
2256
2263
  }
2257
2264
  async getDbHandle() {
2258
2265
  if (!this.dbHandle) {
@@ -2265,10 +2272,10 @@ class DpopStorage {
2265
2272
  const txn = db.transaction(table, mode);
2266
2273
  const store = txn.objectStore(table);
2267
2274
  const request = requestFactory(store);
2268
- return new Promise(((resolve, reject) => {
2275
+ return new Promise((resolve, reject) => {
2269
2276
  request.onsuccess = () => resolve(request.result);
2270
2277
  request.onerror = () => reject(request.error);
2271
- }));
2278
+ });
2272
2279
  }
2273
2280
  buildKey(id) {
2274
2281
  const finalId = id ? "_".concat(id) : AUTH0_NONCE_ID;
@@ -2281,7 +2288,7 @@ class DpopStorage {
2281
2288
  return this.save(TABLES.KEYPAIR, this.buildKey(), keyPair);
2282
2289
  }
2283
2290
  async save(table, key, obj) {
2284
- return void await this.executeDbRequest(table, "readwrite", (table => table.put(obj, key)));
2291
+ return void await this.executeDbRequest(table, "readwrite", table => table.put(obj, key));
2285
2292
  }
2286
2293
  findNonce(id) {
2287
2294
  return this.find(TABLES.NONCE, this.buildKey(id));
@@ -2290,14 +2297,14 @@ class DpopStorage {
2290
2297
  return this.find(TABLES.KEYPAIR, this.buildKey());
2291
2298
  }
2292
2299
  find(table, key) {
2293
- return this.executeDbRequest(table, "readonly", (table => table.get(key)));
2300
+ return this.executeDbRequest(table, "readonly", table => table.get(key));
2294
2301
  }
2295
2302
  async deleteBy(table, predicate) {
2296
- const allKeys = await this.executeDbRequest(table, "readonly", (table => table.getAllKeys()));
2297
- allKeys === null || allKeys === void 0 ? void 0 : allKeys.filter(predicate).map((k => this.executeDbRequest(table, "readwrite", (table => table.delete(k)))));
2303
+ const allKeys = await this.executeDbRequest(table, "readonly", table => table.getAllKeys());
2304
+ allKeys === null || allKeys === void 0 ? void 0 : allKeys.filter(predicate).map(k => this.executeDbRequest(table, "readwrite", table => table.delete(k)));
2298
2305
  }
2299
2306
  deleteByClientId(table, clientId) {
2300
- return this.deleteBy(table, (k => typeof k === "string" && k.startsWith("".concat(clientId, "::"))));
2307
+ return this.deleteBy(table, k => typeof k === "string" && k.startsWith("".concat(clientId, "::")));
2301
2308
  }
2302
2309
  clearNonces() {
2303
2310
  return this.deleteByClientId(TABLES.NONCE, this.clientId);
@@ -2627,9 +2634,9 @@ function ownKeys(e, r) {
2627
2634
  var t = Object.keys(e);
2628
2635
  if (Object.getOwnPropertySymbols) {
2629
2636
  var o = Object.getOwnPropertySymbols(e);
2630
- r && (o = o.filter((function(r) {
2637
+ r && (o = o.filter(function(r) {
2631
2638
  return Object.getOwnPropertyDescriptor(e, r).enumerable;
2632
- }))), t.push.apply(t, o);
2639
+ })), t.push.apply(t, o);
2633
2640
  }
2634
2641
  return t;
2635
2642
  }
@@ -2637,11 +2644,11 @@ function ownKeys(e, r) {
2637
2644
  function _objectSpread2(e) {
2638
2645
  for (var r = 1; r < arguments.length; r++) {
2639
2646
  var t = null != arguments[r] ? arguments[r] : {};
2640
- r % 2 ? ownKeys(Object(t), !0).forEach((function(r) {
2647
+ r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {
2641
2648
  _defineProperty(e, r, t[r]);
2642
- })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach((function(r) {
2649
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {
2643
2650
  Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
2644
- }));
2651
+ });
2645
2652
  }
2646
2653
  return e;
2647
2654
  }
@@ -2689,56 +2696,41 @@ function _wrapAsyncGenerator(e) {
2689
2696
  }
2690
2697
 
2691
2698
  function AsyncGenerator(e) {
2692
- var r, t;
2693
- function resume(r, t) {
2699
+ var t, n;
2700
+ function resume(t, n) {
2694
2701
  try {
2695
- var n = e[r](t), o = n.value, u = o instanceof _OverloadYield;
2696
- Promise.resolve(u ? o.v : o).then((function(t) {
2702
+ var r = e[t](n), o = r.value, u = o instanceof _OverloadYield;
2703
+ Promise.resolve(u ? o.v : o).then(function(n) {
2697
2704
  if (u) {
2698
- var i = "return" === r ? "return" : "next";
2699
- if (!o.k || t.done) return resume(i, t);
2700
- t = e[i](t).value;
2705
+ var i = "return" === t && o.k ? t : "next";
2706
+ if (!o.k || n.done) return resume(i, n);
2707
+ n = e[i](n).value;
2701
2708
  }
2702
- settle(n.done ? "return" : "normal", t);
2703
- }), (function(e) {
2709
+ settle(!!r.done, n);
2710
+ }, function(e) {
2704
2711
  resume("throw", e);
2705
- }));
2712
+ });
2706
2713
  } catch (e) {
2707
- settle("throw", e);
2714
+ settle(2, e);
2708
2715
  }
2709
2716
  }
2710
- function settle(e, n) {
2711
- switch (e) {
2712
- case "return":
2713
- r.resolve({
2714
- value: n,
2715
- done: !0
2716
- });
2717
- break;
2718
-
2719
- case "throw":
2720
- r.reject(n);
2721
- break;
2722
-
2723
- default:
2724
- r.resolve({
2725
- value: n,
2726
- done: !1
2727
- });
2728
- }
2729
- (r = r.next) ? resume(r.key, r.arg) : t = null;
2717
+ function settle(e, r) {
2718
+ 2 === e ? t.reject(r) : t.resolve({
2719
+ value: r,
2720
+ done: e
2721
+ }), (t = t.next) ? resume(t.key, t.arg) : n = null;
2730
2722
  }
2731
- this._invoke = function(e, n) {
2732
- return new Promise((function(o, u) {
2723
+ this._invoke = function(e, r) {
2724
+ return new Promise(function(o, u) {
2733
2725
  var i = {
2734
2726
  key: e,
2735
- arg: n,
2727
+ arg: r,
2736
2728
  resolve: o,
2737
2729
  reject: u,
2738
2730
  next: null
2739
2731
  };
2740
- t ? t = t.next = i : (r = t = i, resume(e, n));
2741
- }));
2732
+ n ? n = n.next = i : (t = n = i, resume(e, r));
2733
+ });
2742
2734
  }, "function" != typeof e.return && (this.return = void 0);
2743
2735
  }
2744
2736
 
@@ -2758,7 +2750,7 @@ let USER_AGENT$2;
2758
2750
 
2759
2751
  if (typeof navigator === "undefined" || !((_navigator$userAgent$2 = navigator.userAgent) !== null && _navigator$userAgent$2 !== void 0 && (_navigator$userAgent$$2 = _navigator$userAgent$2.startsWith) !== null && _navigator$userAgent$$2 !== void 0 && _navigator$userAgent$$2.call(_navigator$userAgent$2, "Mozilla/5.0 "))) {
2760
2752
  const NAME = "oauth4webapi";
2761
- const VERSION = "v3.8.3";
2753
+ const VERSION = "v3.8.5";
2762
2754
  USER_AGENT$2 = "".concat(NAME, "/").concat(VERSION);
2763
2755
  }
2764
2756
 
@@ -2988,7 +2980,7 @@ async function performDiscovery$1(input, urlName, transform, options) {
2988
2980
  }
2989
2981
 
2990
2982
  async function discoveryRequest(issuerIdentifier, options) {
2991
- return performDiscovery$1(issuerIdentifier, "issuerIdentifier", (url => {
2983
+ return performDiscovery$1(issuerIdentifier, "issuerIdentifier", url => {
2992
2984
  switch (options === null || options === void 0 ? void 0 : options.algorithm) {
2993
2985
  case undefined:
2994
2986
  case "oidc":
@@ -3003,7 +2995,7 @@ async function discoveryRequest(issuerIdentifier, options) {
3003
2995
  throw CodedTypeError$1('"options.algorithm" must be "oidc" (default), or "oauth2"', ERR_INVALID_ARG_VALUE$1);
3004
2996
  }
3005
2997
  return url;
3006
- }), options);
2998
+ }, options);
3007
2999
  }
3008
3000
 
3009
3001
  function assertNumber(input, allow0, it, code, cause) {
@@ -4351,10 +4343,10 @@ function concat() {
4351
4343
  for (var _len = arguments.length, buffers = new Array(_len), _key = 0; _key < _len; _key++) {
4352
4344
  buffers[_key] = arguments[_key];
4353
4345
  }
4354
- const size = buffers.reduce(((acc, _ref) => {
4346
+ const size = buffers.reduce((acc, _ref) => {
4355
4347
  let {length: length} = _ref;
4356
4348
  return acc + length;
4357
- }), 0);
4349
+ }, 0);
4358
4350
  const buf = new Uint8Array(size);
4359
4351
  let i = 0;
4360
4352
  for (const buffer of buffers) {
@@ -4406,6 +4398,145 @@ function decode(input) {
4406
4398
  }
4407
4399
  }
4408
4400
 
4401
+ const unusable = function unusable(name) {
4402
+ let prop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "algorithm.name";
4403
+ return new TypeError("CryptoKey does not support this operation, its ".concat(prop, " must be ").concat(name));
4404
+ };
4405
+
4406
+ const isAlgorithm = (algorithm, name) => algorithm.name === name;
4407
+
4408
+ function getHashLength(hash) {
4409
+ return parseInt(hash.name.slice(4), 10);
4410
+ }
4411
+
4412
+ function checkHashLength(algorithm, expected) {
4413
+ const actual = getHashLength(algorithm.hash);
4414
+ if (actual !== expected) throw unusable("SHA-".concat(expected), "algorithm.hash");
4415
+ }
4416
+
4417
+ function getNamedCurve(alg) {
4418
+ switch (alg) {
4419
+ case "ES256":
4420
+ return "P-256";
4421
+
4422
+ case "ES384":
4423
+ return "P-384";
4424
+
4425
+ case "ES512":
4426
+ return "P-521";
4427
+
4428
+ default:
4429
+ throw new Error("unreachable");
4430
+ }
4431
+ }
4432
+
4433
+ function checkUsage(key, usage) {
4434
+ if (usage && !key.usages.includes(usage)) {
4435
+ throw new TypeError("CryptoKey does not support this operation, its usages must include ".concat(usage, "."));
4436
+ }
4437
+ }
4438
+
4439
+ function checkSigCryptoKey(key, alg, usage) {
4440
+ switch (alg) {
4441
+ case "HS256":
4442
+ case "HS384":
4443
+ case "HS512":
4444
+ {
4445
+ if (!isAlgorithm(key.algorithm, "HMAC")) throw unusable("HMAC");
4446
+ checkHashLength(key.algorithm, parseInt(alg.slice(2), 10));
4447
+ break;
4448
+ }
4449
+
4450
+ case "RS256":
4451
+ case "RS384":
4452
+ case "RS512":
4453
+ {
4454
+ if (!isAlgorithm(key.algorithm, "RSASSA-PKCS1-v1_5")) throw unusable("RSASSA-PKCS1-v1_5");
4455
+ checkHashLength(key.algorithm, parseInt(alg.slice(2), 10));
4456
+ break;
4457
+ }
4458
+
4459
+ case "PS256":
4460
+ case "PS384":
4461
+ case "PS512":
4462
+ {
4463
+ if (!isAlgorithm(key.algorithm, "RSA-PSS")) throw unusable("RSA-PSS");
4464
+ checkHashLength(key.algorithm, parseInt(alg.slice(2), 10));
4465
+ break;
4466
+ }
4467
+
4468
+ case "Ed25519":
4469
+ case "EdDSA":
4470
+ {
4471
+ if (!isAlgorithm(key.algorithm, "Ed25519")) throw unusable("Ed25519");
4472
+ break;
4473
+ }
4474
+
4475
+ case "ML-DSA-44":
4476
+ case "ML-DSA-65":
4477
+ case "ML-DSA-87":
4478
+ {
4479
+ if (!isAlgorithm(key.algorithm, alg)) throw unusable(alg);
4480
+ break;
4481
+ }
4482
+
4483
+ case "ES256":
4484
+ case "ES384":
4485
+ case "ES512":
4486
+ {
4487
+ if (!isAlgorithm(key.algorithm, "ECDSA")) throw unusable("ECDSA");
4488
+ const expected = getNamedCurve(alg);
4489
+ const actual = key.algorithm.namedCurve;
4490
+ if (actual !== expected) throw unusable(expected, "algorithm.namedCurve");
4491
+ break;
4492
+ }
4493
+
4494
+ default:
4495
+ throw new TypeError("CryptoKey does not support this operation");
4496
+ }
4497
+ checkUsage(key, usage);
4498
+ }
4499
+
4500
+ function message(msg, actual) {
4501
+ for (var _len = arguments.length, types = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
4502
+ types[_key - 2] = arguments[_key];
4503
+ }
4504
+ types = types.filter(Boolean);
4505
+ if (types.length > 2) {
4506
+ const last = types.pop();
4507
+ msg += "one of type ".concat(types.join(", "), ", or ").concat(last, ".");
4508
+ } else if (types.length === 2) {
4509
+ msg += "one of type ".concat(types[0], " or ").concat(types[1], ".");
4510
+ } else {
4511
+ msg += "of type ".concat(types[0], ".");
4512
+ }
4513
+ if (actual == null) {
4514
+ msg += " Received ".concat(actual);
4515
+ } else if (typeof actual === "function" && actual.name) {
4516
+ msg += " Received function ".concat(actual.name);
4517
+ } else if (typeof actual === "object" && actual != null) {
4518
+ var _actual$constructor;
4519
+ if ((_actual$constructor = actual.constructor) !== null && _actual$constructor !== void 0 && _actual$constructor.name) {
4520
+ msg += " Received an instance of ".concat(actual.constructor.name);
4521
+ }
4522
+ }
4523
+ return msg;
4524
+ }
4525
+
4526
+ const invalidKeyInput = function invalidKeyInput(actual) {
4527
+ for (var _len2 = arguments.length, types = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
4528
+ types[_key2 - 1] = arguments[_key2];
4529
+ }
4530
+ return message("Key must be ", actual, ...types);
4531
+ };
4532
+
4533
+ const withAlg = function withAlg(alg, actual) {
4534
+ for (var _len3 = arguments.length, types = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {
4535
+ types[_key3 - 2] = arguments[_key3];
4536
+ }
4537
+ return message("Key for the ".concat(alg, " algorithm must be "), actual, ...types);
4538
+ };
4539
+
4409
4540
  class JOSEError extends Error {
4410
4541
  constructor(message, options) {
4411
4542
  var _Error$captureStackTr;
@@ -4583,207 +4714,486 @@ class JWSSignatureVerificationFailed extends JOSEError {
4583
4714
 
4584
4715
  _defineProperty(JWSSignatureVerificationFailed, "code", "ERR_JWS_SIGNATURE_VERIFICATION_FAILED");
4585
4716
 
4586
- const unusable = function unusable(name) {
4587
- let prop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "algorithm.name";
4588
- return new TypeError("CryptoKey does not support this operation, its ".concat(prop, " must be ").concat(name));
4717
+ const isCryptoKey = key => {
4718
+ if ((key === null || key === void 0 ? void 0 : key[Symbol.toStringTag]) === "CryptoKey") return true;
4719
+ try {
4720
+ return key instanceof CryptoKey;
4721
+ } catch (_unused) {
4722
+ return false;
4723
+ }
4589
4724
  };
4590
4725
 
4591
- const isAlgorithm = (algorithm, name) => algorithm.name === name;
4592
-
4593
- function getHashLength(hash) {
4594
- return parseInt(hash.name.slice(4), 10);
4595
- }
4596
-
4597
- function getNamedCurve(alg) {
4598
- switch (alg) {
4599
- case "ES256":
4600
- return "P-256";
4601
-
4602
- case "ES384":
4603
- return "P-384";
4726
+ const isKeyObject = key => (key === null || key === void 0 ? void 0 : key[Symbol.toStringTag]) === "KeyObject";
4604
4727
 
4605
- case "ES512":
4606
- return "P-521";
4728
+ const isKeyLike = key => isCryptoKey(key) || isKeyObject(key);
4607
4729
 
4608
- default:
4609
- throw new Error("unreachable");
4730
+ function decodeBase64url(value, label, ErrorClass) {
4731
+ try {
4732
+ return decode(value);
4733
+ } catch (_unused) {
4734
+ throw new ErrorClass("Failed to base64url decode the ".concat(label));
4610
4735
  }
4611
4736
  }
4612
4737
 
4613
- function checkUsage(key, usage) {
4614
- if (usage && !key.usages.includes(usage)) {
4615
- throw new TypeError("CryptoKey does not support this operation, its usages must include ".concat(usage, "."));
4738
+ const isObjectLike = value => typeof value === "object" && value !== null;
4739
+
4740
+ function isObject(input) {
4741
+ if (!isObjectLike(input) || Object.prototype.toString.call(input) !== "[object Object]") {
4742
+ return false;
4743
+ }
4744
+ if (Object.getPrototypeOf(input) === null) {
4745
+ return true;
4746
+ }
4747
+ let proto = input;
4748
+ while (Object.getPrototypeOf(proto) !== null) {
4749
+ proto = Object.getPrototypeOf(proto);
4616
4750
  }
4751
+ return Object.getPrototypeOf(input) === proto;
4617
4752
  }
4618
4753
 
4619
- function checkSigCryptoKey(key, alg, usage) {
4754
+ function isDisjoint() {
4755
+ for (var _len = arguments.length, headers = new Array(_len), _key = 0; _key < _len; _key++) {
4756
+ headers[_key] = arguments[_key];
4757
+ }
4758
+ const sources = headers.filter(Boolean);
4759
+ if (sources.length === 0 || sources.length === 1) {
4760
+ return true;
4761
+ }
4762
+ let acc;
4763
+ for (const header of sources) {
4764
+ const parameters = Object.keys(header);
4765
+ if (!acc || acc.size === 0) {
4766
+ acc = new Set(parameters);
4767
+ continue;
4768
+ }
4769
+ for (const parameter of parameters) {
4770
+ if (acc.has(parameter)) {
4771
+ return false;
4772
+ }
4773
+ acc.add(parameter);
4774
+ }
4775
+ }
4776
+ return true;
4777
+ }
4778
+
4779
+ const isJWK = key => isObject(key) && typeof key.kty === "string";
4780
+
4781
+ const isPrivateJWK = key => key.kty !== "oct" && (key.kty === "AKP" && typeof key.priv === "string" || typeof key.d === "string");
4782
+
4783
+ const isPublicJWK = key => key.kty !== "oct" && key.d === undefined && key.priv === undefined;
4784
+
4785
+ const isSecretJWK = key => key.kty === "oct" && typeof key.k === "string";
4786
+
4787
+ function checkKeyLength(alg, key) {
4788
+ if (alg.startsWith("RS") || alg.startsWith("PS")) {
4789
+ const {modulusLength: modulusLength} = key.algorithm;
4790
+ if (typeof modulusLength !== "number" || modulusLength < 2048) {
4791
+ throw new TypeError("".concat(alg, " requires key modulusLength to be 2048 bits or larger"));
4792
+ }
4793
+ }
4794
+ }
4795
+
4796
+ function subtleAlgorithm(alg, algorithm) {
4797
+ const hash = "SHA-".concat(alg.slice(-3));
4620
4798
  switch (alg) {
4621
4799
  case "HS256":
4622
4800
  case "HS384":
4623
4801
  case "HS512":
4624
- {
4625
- if (!isAlgorithm(key.algorithm, "HMAC")) throw unusable("HMAC");
4626
- const expected = parseInt(alg.slice(2), 10);
4627
- const actual = getHashLength(key.algorithm.hash);
4628
- if (actual !== expected) throw unusable("SHA-".concat(expected), "algorithm.hash");
4629
- break;
4630
- }
4802
+ return {
4803
+ hash: hash,
4804
+ name: "HMAC"
4805
+ };
4806
+
4807
+ case "PS256":
4808
+ case "PS384":
4809
+ case "PS512":
4810
+ return {
4811
+ hash: hash,
4812
+ name: "RSA-PSS",
4813
+ saltLength: parseInt(alg.slice(-3), 10) >> 3
4814
+ };
4631
4815
 
4632
4816
  case "RS256":
4633
4817
  case "RS384":
4634
4818
  case "RS512":
4635
- {
4636
- if (!isAlgorithm(key.algorithm, "RSASSA-PKCS1-v1_5")) throw unusable("RSASSA-PKCS1-v1_5");
4637
- const expected = parseInt(alg.slice(2), 10);
4638
- const actual = getHashLength(key.algorithm.hash);
4639
- if (actual !== expected) throw unusable("SHA-".concat(expected), "algorithm.hash");
4640
- break;
4819
+ return {
4820
+ hash: hash,
4821
+ name: "RSASSA-PKCS1-v1_5"
4822
+ };
4823
+
4824
+ case "ES256":
4825
+ case "ES384":
4826
+ case "ES512":
4827
+ return {
4828
+ hash: hash,
4829
+ name: "ECDSA",
4830
+ namedCurve: algorithm.namedCurve
4831
+ };
4832
+
4833
+ case "Ed25519":
4834
+ case "EdDSA":
4835
+ return {
4836
+ name: "Ed25519"
4837
+ };
4838
+
4839
+ case "ML-DSA-44":
4840
+ case "ML-DSA-65":
4841
+ case "ML-DSA-87":
4842
+ return {
4843
+ name: alg
4844
+ };
4845
+
4846
+ default:
4847
+ throw new JOSENotSupported("alg ".concat(alg, " is not supported either by JOSE or your javascript runtime"));
4848
+ }
4849
+ }
4850
+
4851
+ async function getSigKey(alg, key, usage) {
4852
+ if (key instanceof Uint8Array) {
4853
+ if (!alg.startsWith("HS")) {
4854
+ throw new TypeError(invalidKeyInput(key, "CryptoKey", "KeyObject", "JSON Web Key"));
4641
4855
  }
4856
+ return crypto.subtle.importKey("raw", key, {
4857
+ hash: "SHA-".concat(alg.slice(-3)),
4858
+ name: "HMAC"
4859
+ }, false, [ usage ]);
4860
+ }
4861
+ checkSigCryptoKey(key, alg, usage);
4862
+ return key;
4863
+ }
4642
4864
 
4643
- case "PS256":
4644
- case "PS384":
4645
- case "PS512":
4865
+ async function verify(alg, key, signature, data) {
4866
+ const cryptoKey = await getSigKey(alg, key, "verify");
4867
+ checkKeyLength(alg, cryptoKey);
4868
+ const algorithm = subtleAlgorithm(alg, cryptoKey.algorithm);
4869
+ try {
4870
+ return await crypto.subtle.verify(algorithm, cryptoKey, signature, data);
4871
+ } catch (_unused) {
4872
+ return false;
4873
+ }
4874
+ }
4875
+
4876
+ const unsupportedAlg = 'Invalid or unsupported JWK "alg" (Algorithm) Parameter value';
4877
+
4878
+ function subtleMapping(jwk) {
4879
+ let algorithm;
4880
+ let keyUsages;
4881
+ switch (jwk.kty) {
4882
+ case "AKP":
4646
4883
  {
4647
- if (!isAlgorithm(key.algorithm, "RSA-PSS")) throw unusable("RSA-PSS");
4648
- const expected = parseInt(alg.slice(2), 10);
4649
- const actual = getHashLength(key.algorithm.hash);
4650
- if (actual !== expected) throw unusable("SHA-".concat(expected), "algorithm.hash");
4884
+ switch (jwk.alg) {
4885
+ case "ML-DSA-44":
4886
+ case "ML-DSA-65":
4887
+ case "ML-DSA-87":
4888
+ algorithm = {
4889
+ name: jwk.alg
4890
+ };
4891
+ keyUsages = jwk.priv ? [ "sign" ] : [ "verify" ];
4892
+ break;
4893
+
4894
+ default:
4895
+ throw new JOSENotSupported(unsupportedAlg);
4896
+ }
4651
4897
  break;
4652
4898
  }
4653
4899
 
4654
- case "Ed25519":
4655
- case "EdDSA":
4900
+ case "RSA":
4656
4901
  {
4657
- if (!isAlgorithm(key.algorithm, "Ed25519")) throw unusable("Ed25519");
4902
+ switch (jwk.alg) {
4903
+ case "PS256":
4904
+ case "PS384":
4905
+ case "PS512":
4906
+ algorithm = {
4907
+ name: "RSA-PSS",
4908
+ hash: "SHA-".concat(jwk.alg.slice(-3))
4909
+ };
4910
+ keyUsages = jwk.d ? [ "sign" ] : [ "verify" ];
4911
+ break;
4912
+
4913
+ case "RS256":
4914
+ case "RS384":
4915
+ case "RS512":
4916
+ algorithm = {
4917
+ name: "RSASSA-PKCS1-v1_5",
4918
+ hash: "SHA-".concat(jwk.alg.slice(-3))
4919
+ };
4920
+ keyUsages = jwk.d ? [ "sign" ] : [ "verify" ];
4921
+ break;
4922
+
4923
+ case "RSA-OAEP":
4924
+ case "RSA-OAEP-256":
4925
+ case "RSA-OAEP-384":
4926
+ case "RSA-OAEP-512":
4927
+ algorithm = {
4928
+ name: "RSA-OAEP",
4929
+ hash: "SHA-".concat(parseInt(jwk.alg.slice(-3), 10) || 1)
4930
+ };
4931
+ keyUsages = jwk.d ? [ "decrypt", "unwrapKey" ] : [ "encrypt", "wrapKey" ];
4932
+ break;
4933
+
4934
+ default:
4935
+ throw new JOSENotSupported(unsupportedAlg);
4936
+ }
4658
4937
  break;
4659
4938
  }
4660
4939
 
4661
- case "ML-DSA-44":
4662
- case "ML-DSA-65":
4663
- case "ML-DSA-87":
4940
+ case "EC":
4664
4941
  {
4665
- if (!isAlgorithm(key.algorithm, alg)) throw unusable(alg);
4942
+ switch (jwk.alg) {
4943
+ case "ES256":
4944
+ case "ES384":
4945
+ case "ES512":
4946
+ algorithm = {
4947
+ name: "ECDSA",
4948
+ namedCurve: {
4949
+ ES256: "P-256",
4950
+ ES384: "P-384",
4951
+ ES512: "P-521"
4952
+ }[jwk.alg]
4953
+ };
4954
+ keyUsages = jwk.d ? [ "sign" ] : [ "verify" ];
4955
+ break;
4956
+
4957
+ case "ECDH-ES":
4958
+ case "ECDH-ES+A128KW":
4959
+ case "ECDH-ES+A192KW":
4960
+ case "ECDH-ES+A256KW":
4961
+ algorithm = {
4962
+ name: "ECDH",
4963
+ namedCurve: jwk.crv
4964
+ };
4965
+ keyUsages = jwk.d ? [ "deriveBits" ] : [];
4966
+ break;
4967
+
4968
+ default:
4969
+ throw new JOSENotSupported(unsupportedAlg);
4970
+ }
4666
4971
  break;
4667
4972
  }
4668
4973
 
4669
- case "ES256":
4670
- case "ES384":
4671
- case "ES512":
4974
+ case "OKP":
4672
4975
  {
4673
- if (!isAlgorithm(key.algorithm, "ECDSA")) throw unusable("ECDSA");
4674
- const expected = getNamedCurve(alg);
4675
- const actual = key.algorithm.namedCurve;
4676
- if (actual !== expected) throw unusable(expected, "algorithm.namedCurve");
4976
+ switch (jwk.alg) {
4977
+ case "Ed25519":
4978
+ case "EdDSA":
4979
+ algorithm = {
4980
+ name: "Ed25519"
4981
+ };
4982
+ keyUsages = jwk.d ? [ "sign" ] : [ "verify" ];
4983
+ break;
4984
+
4985
+ case "ECDH-ES":
4986
+ case "ECDH-ES+A128KW":
4987
+ case "ECDH-ES+A192KW":
4988
+ case "ECDH-ES+A256KW":
4989
+ algorithm = {
4990
+ name: jwk.crv
4991
+ };
4992
+ keyUsages = jwk.d ? [ "deriveBits" ] : [];
4993
+ break;
4994
+
4995
+ default:
4996
+ throw new JOSENotSupported(unsupportedAlg);
4997
+ }
4677
4998
  break;
4678
4999
  }
4679
5000
 
4680
5001
  default:
4681
- throw new TypeError("CryptoKey does not support this operation");
5002
+ throw new JOSENotSupported('Invalid or unsupported JWK "kty" (Key Type) Parameter value');
4682
5003
  }
4683
- checkUsage(key, usage);
5004
+ return {
5005
+ algorithm: algorithm,
5006
+ keyUsages: keyUsages
5007
+ };
4684
5008
  }
4685
5009
 
4686
- function message(msg, actual) {
4687
- for (var _len = arguments.length, types = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
4688
- types[_key - 2] = arguments[_key];
4689
- }
4690
- types = types.filter(Boolean);
4691
- if (types.length > 2) {
4692
- const last = types.pop();
4693
- msg += "one of type ".concat(types.join(", "), ", or ").concat(last, ".");
4694
- } else if (types.length === 2) {
4695
- msg += "one of type ".concat(types[0], " or ").concat(types[1], ".");
4696
- } else {
4697
- msg += "of type ".concat(types[0], ".");
5010
+ async function jwkToKey(jwk) {
5011
+ var _jwk$ext, _jwk$key_ops;
5012
+ if (!jwk.alg) {
5013
+ throw new TypeError('"alg" argument is required when "jwk.alg" is not present');
4698
5014
  }
4699
- if (actual == null) {
4700
- msg += " Received ".concat(actual);
4701
- } else if (typeof actual === "function" && actual.name) {
4702
- msg += " Received function ".concat(actual.name);
4703
- } else if (typeof actual === "object" && actual != null) {
4704
- var _actual$constructor;
4705
- if ((_actual$constructor = actual.constructor) !== null && _actual$constructor !== void 0 && _actual$constructor.name) {
4706
- msg += " Received an instance of ".concat(actual.constructor.name);
4707
- }
5015
+ const {algorithm: algorithm, keyUsages: keyUsages} = subtleMapping(jwk);
5016
+ const keyData = _objectSpread2({}, jwk);
5017
+ if (keyData.kty !== "AKP") {
5018
+ delete keyData.alg;
4708
5019
  }
4709
- return msg;
5020
+ delete keyData.use;
5021
+ return crypto.subtle.importKey("jwk", keyData, algorithm, (_jwk$ext = jwk.ext) !== null && _jwk$ext !== void 0 ? _jwk$ext : jwk.d || jwk.priv ? false : true, (_jwk$key_ops = jwk.key_ops) !== null && _jwk$key_ops !== void 0 ? _jwk$key_ops : keyUsages);
4710
5022
  }
4711
5023
 
4712
- const invalidKeyInput = function invalidKeyInput(actual) {
4713
- for (var _len2 = arguments.length, types = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
4714
- types[_key2 - 1] = arguments[_key2];
5024
+ const unusableForAlg = "given KeyObject instance cannot be used for this algorithm";
5025
+
5026
+ let cache;
5027
+
5028
+ const handleJWK = async function handleJWK(key, jwk, alg) {
5029
+ let freeze = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
5030
+ cache || (cache = new WeakMap);
5031
+ let cached = cache.get(key);
5032
+ if (cached !== null && cached !== void 0 && cached[alg]) {
5033
+ return cached[alg];
4715
5034
  }
4716
- return message("Key must be ", actual, ...types);
5035
+ const cryptoKey = await jwkToKey(_objectSpread2(_objectSpread2({}, jwk), {}, {
5036
+ alg: alg
5037
+ }));
5038
+ if (freeze) Object.freeze(key);
5039
+ if (!cached) {
5040
+ cache.set(key, {
5041
+ [alg]: cryptoKey
5042
+ });
5043
+ } else {
5044
+ cached[alg] = cryptoKey;
5045
+ }
5046
+ return cryptoKey;
4717
5047
  };
4718
5048
 
4719
- const withAlg = function withAlg(alg, actual) {
4720
- for (var _len3 = arguments.length, types = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {
4721
- types[_key3 - 2] = arguments[_key3];
5049
+ const handleKeyObject = (keyObject, alg) => {
5050
+ cache || (cache = new WeakMap);
5051
+ let cached = cache.get(keyObject);
5052
+ if (cached !== null && cached !== void 0 && cached[alg]) {
5053
+ return cached[alg];
4722
5054
  }
4723
- return message("Key for the ".concat(alg, " algorithm must be "), actual, ...types);
4724
- };
5055
+ const isPublic = keyObject.type === "public";
5056
+ const extractable = isPublic ? true : false;
5057
+ let cryptoKey;
5058
+ if (keyObject.asymmetricKeyType === "x25519") {
5059
+ switch (alg) {
5060
+ case "ECDH-ES":
5061
+ case "ECDH-ES+A128KW":
5062
+ case "ECDH-ES+A192KW":
5063
+ case "ECDH-ES+A256KW":
5064
+ break;
4725
5065
 
4726
- const isCryptoKey = key => {
4727
- if ((key === null || key === void 0 ? void 0 : key[Symbol.toStringTag]) === "CryptoKey") return true;
4728
- try {
4729
- return key instanceof CryptoKey;
4730
- } catch (_unused) {
4731
- return false;
5066
+ default:
5067
+ throw new TypeError(unusableForAlg);
5068
+ }
5069
+ cryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, isPublic ? [] : [ "deriveBits" ]);
5070
+ }
5071
+ if (keyObject.asymmetricKeyType === "ed25519") {
5072
+ if (alg !== "EdDSA" && alg !== "Ed25519") {
5073
+ throw new TypeError(unusableForAlg);
5074
+ }
5075
+ cryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, [ isPublic ? "verify" : "sign" ]);
5076
+ }
5077
+ switch (keyObject.asymmetricKeyType) {
5078
+ case "ml-dsa-44":
5079
+ case "ml-dsa-65":
5080
+ case "ml-dsa-87":
5081
+ {
5082
+ if (alg !== keyObject.asymmetricKeyType.toUpperCase()) {
5083
+ throw new TypeError(unusableForAlg);
5084
+ }
5085
+ cryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, [ isPublic ? "verify" : "sign" ]);
5086
+ }
5087
+ }
5088
+ if (keyObject.asymmetricKeyType === "rsa") {
5089
+ let hash;
5090
+ switch (alg) {
5091
+ case "RSA-OAEP":
5092
+ hash = "SHA-1";
5093
+ break;
5094
+
5095
+ case "RS256":
5096
+ case "PS256":
5097
+ case "RSA-OAEP-256":
5098
+ hash = "SHA-256";
5099
+ break;
5100
+
5101
+ case "RS384":
5102
+ case "PS384":
5103
+ case "RSA-OAEP-384":
5104
+ hash = "SHA-384";
5105
+ break;
5106
+
5107
+ case "RS512":
5108
+ case "PS512":
5109
+ case "RSA-OAEP-512":
5110
+ hash = "SHA-512";
5111
+ break;
5112
+
5113
+ default:
5114
+ throw new TypeError(unusableForAlg);
5115
+ }
5116
+ if (alg.startsWith("RSA-OAEP")) {
5117
+ return keyObject.toCryptoKey({
5118
+ name: "RSA-OAEP",
5119
+ hash: hash
5120
+ }, extractable, isPublic ? [ "encrypt" ] : [ "decrypt" ]);
5121
+ }
5122
+ cryptoKey = keyObject.toCryptoKey({
5123
+ name: alg.startsWith("PS") ? "RSA-PSS" : "RSASSA-PKCS1-v1_5",
5124
+ hash: hash
5125
+ }, extractable, [ isPublic ? "verify" : "sign" ]);
5126
+ }
5127
+ if (keyObject.asymmetricKeyType === "ec") {
5128
+ var _keyObject$asymmetric;
5129
+ const nist = new Map([ [ "prime256v1", "P-256" ], [ "secp384r1", "P-384" ], [ "secp521r1", "P-521" ] ]);
5130
+ const namedCurve = nist.get((_keyObject$asymmetric = keyObject.asymmetricKeyDetails) === null || _keyObject$asymmetric === void 0 ? void 0 : _keyObject$asymmetric.namedCurve);
5131
+ if (!namedCurve) {
5132
+ throw new TypeError(unusableForAlg);
5133
+ }
5134
+ const expectedCurve = {
5135
+ ES256: "P-256",
5136
+ ES384: "P-384",
5137
+ ES512: "P-521"
5138
+ };
5139
+ if (expectedCurve[alg] && namedCurve === expectedCurve[alg]) {
5140
+ cryptoKey = keyObject.toCryptoKey({
5141
+ name: "ECDSA",
5142
+ namedCurve: namedCurve
5143
+ }, extractable, [ isPublic ? "verify" : "sign" ]);
5144
+ }
5145
+ if (alg.startsWith("ECDH-ES")) {
5146
+ cryptoKey = keyObject.toCryptoKey({
5147
+ name: "ECDH",
5148
+ namedCurve: namedCurve
5149
+ }, extractable, isPublic ? [] : [ "deriveBits" ]);
5150
+ }
5151
+ }
5152
+ if (!cryptoKey) {
5153
+ throw new TypeError(unusableForAlg);
5154
+ }
5155
+ if (!cached) {
5156
+ cache.set(keyObject, {
5157
+ [alg]: cryptoKey
5158
+ });
5159
+ } else {
5160
+ cached[alg] = cryptoKey;
4732
5161
  }
5162
+ return cryptoKey;
4733
5163
  };
4734
5164
 
4735
- const isKeyObject = key => (key === null || key === void 0 ? void 0 : key[Symbol.toStringTag]) === "KeyObject";
4736
-
4737
- const isKeyLike = key => isCryptoKey(key) || isKeyObject(key);
4738
-
4739
- function isDisjoint() {
4740
- for (var _len = arguments.length, headers = new Array(_len), _key = 0; _key < _len; _key++) {
4741
- headers[_key] = arguments[_key];
5165
+ async function normalizeKey(key, alg) {
5166
+ if (key instanceof Uint8Array) {
5167
+ return key;
4742
5168
  }
4743
- const sources = headers.filter(Boolean);
4744
- if (sources.length === 0 || sources.length === 1) {
4745
- return true;
5169
+ if (isCryptoKey(key)) {
5170
+ return key;
4746
5171
  }
4747
- let acc;
4748
- for (const header of sources) {
4749
- const parameters = Object.keys(header);
4750
- if (!acc || acc.size === 0) {
4751
- acc = new Set(parameters);
4752
- continue;
5172
+ if (isKeyObject(key)) {
5173
+ if (key.type === "secret") {
5174
+ return key.export();
4753
5175
  }
4754
- for (const parameter of parameters) {
4755
- if (acc.has(parameter)) {
4756
- return false;
5176
+ if ("toCryptoKey" in key && typeof key.toCryptoKey === "function") {
5177
+ try {
5178
+ return handleKeyObject(key, alg);
5179
+ } catch (err) {
5180
+ if (err instanceof TypeError) {
5181
+ throw err;
5182
+ }
4757
5183
  }
4758
- acc.add(parameter);
4759
5184
  }
5185
+ let jwk = key.export({
5186
+ format: "jwk"
5187
+ });
5188
+ return handleJWK(key, jwk, alg);
4760
5189
  }
4761
- return true;
4762
- }
4763
-
4764
- const isObjectLike = value => typeof value === "object" && value !== null;
4765
-
4766
- function isObject(input) {
4767
- if (!isObjectLike(input) || Object.prototype.toString.call(input) !== "[object Object]") {
4768
- return false;
4769
- }
4770
- if (Object.getPrototypeOf(input) === null) {
4771
- return true;
4772
- }
4773
- let proto = input;
4774
- while (Object.getPrototypeOf(proto) !== null) {
4775
- proto = Object.getPrototypeOf(proto);
4776
- }
4777
- return Object.getPrototypeOf(input) === proto;
4778
- }
4779
-
4780
- function checkKeyLength(alg, key) {
4781
- if (alg.startsWith("RS") || alg.startsWith("PS")) {
4782
- const {modulusLength: modulusLength} = key.algorithm;
4783
- if (typeof modulusLength !== "number" || modulusLength < 2048) {
4784
- throw new TypeError("".concat(alg, " requires key modulusLength to be 2048 bits or larger"));
5190
+ if (isJWK(key)) {
5191
+ if (key.k) {
5192
+ return decode(key.k);
4785
5193
  }
5194
+ return handleJWK(key, key, alg, true);
4786
5195
  }
5196
+ throw new Error("unreachable");
4787
5197
  }
4788
5198
 
4789
5199
  const bytesEqual = (a, b) => {
@@ -4933,217 +5343,61 @@ const genericImport = async (keyFormat, keyData, alg, options) => {
4933
5343
  case "ECDH-ES+A128KW":
4934
5344
  case "ECDH-ES+A192KW":
4935
5345
  case "ECDH-ES+A256KW":
4936
- {
4937
- try {
4938
- const namedCurve = options.getNamedCurve(keyData);
4939
- algorithm = namedCurve === "X25519" ? {
4940
- name: "X25519"
4941
- } : {
4942
- name: "ECDH",
4943
- namedCurve: namedCurve
4944
- };
4945
- } catch (cause) {
4946
- throw new JOSENotSupported("Invalid or unsupported key format");
4947
- }
4948
- keyUsages = isPublic ? [] : [ "deriveBits" ];
4949
- break;
4950
- }
4951
-
4952
- case "Ed25519":
4953
- case "EdDSA":
4954
- algorithm = {
4955
- name: "Ed25519"
4956
- };
4957
- keyUsages = getSigUsages();
4958
- break;
4959
-
4960
- case "ML-DSA-44":
4961
- case "ML-DSA-65":
4962
- case "ML-DSA-87":
4963
- algorithm = {
4964
- name: alg
4965
- };
4966
- keyUsages = getSigUsages();
4967
- break;
4968
-
4969
- default:
4970
- throw new JOSENotSupported('Invalid or unsupported "alg" (Algorithm) value');
4971
- }
4972
- return crypto.subtle.importKey(keyFormat, keyData, algorithm, (_options$extractable = options === null || options === void 0 ? void 0 : options.extractable) !== null && _options$extractable !== void 0 ? _options$extractable : isPublic ? true : false, keyUsages);
4973
- };
4974
-
4975
- const processPEMData = (pem, pattern) => decodeBase64(pem.replace(pattern, ""));
4976
-
4977
- const fromPKCS8 = (pem, alg, options) => {
4978
- var _alg$startsWith;
4979
- const keyData = processPEMData(pem, /(?:-----(?:BEGIN|END) PRIVATE KEY-----|\s)/g);
4980
- let opts = options;
4981
- if (alg !== null && alg !== void 0 && (_alg$startsWith = alg.startsWith) !== null && _alg$startsWith !== void 0 && _alg$startsWith.call(alg, "ECDH-ES")) {
4982
- opts || (opts = {});
4983
- opts.getNamedCurve = keyData => {
4984
- const state = createASN1State(keyData);
4985
- parsePKCS8Header(state);
4986
- return parseECAlgorithmIdentifier(state);
4987
- };
4988
- }
4989
- return genericImport("pkcs8", keyData, alg, opts);
4990
- };
4991
-
4992
- function subtleMapping(jwk) {
4993
- let algorithm;
4994
- let keyUsages;
4995
- switch (jwk.kty) {
4996
- case "AKP":
4997
- {
4998
- switch (jwk.alg) {
4999
- case "ML-DSA-44":
5000
- case "ML-DSA-65":
5001
- case "ML-DSA-87":
5002
- algorithm = {
5003
- name: jwk.alg
5004
- };
5005
- keyUsages = jwk.priv ? [ "sign" ] : [ "verify" ];
5006
- break;
5007
-
5008
- default:
5009
- throw new JOSENotSupported('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');
5010
- }
5011
- break;
5012
- }
5013
-
5014
- case "RSA":
5015
- {
5016
- switch (jwk.alg) {
5017
- case "PS256":
5018
- case "PS384":
5019
- case "PS512":
5020
- algorithm = {
5021
- name: "RSA-PSS",
5022
- hash: "SHA-".concat(jwk.alg.slice(-3))
5023
- };
5024
- keyUsages = jwk.d ? [ "sign" ] : [ "verify" ];
5025
- break;
5026
-
5027
- case "RS256":
5028
- case "RS384":
5029
- case "RS512":
5030
- algorithm = {
5031
- name: "RSASSA-PKCS1-v1_5",
5032
- hash: "SHA-".concat(jwk.alg.slice(-3))
5033
- };
5034
- keyUsages = jwk.d ? [ "sign" ] : [ "verify" ];
5035
- break;
5036
-
5037
- case "RSA-OAEP":
5038
- case "RSA-OAEP-256":
5039
- case "RSA-OAEP-384":
5040
- case "RSA-OAEP-512":
5041
- algorithm = {
5042
- name: "RSA-OAEP",
5043
- hash: "SHA-".concat(parseInt(jwk.alg.slice(-3), 10) || 1)
5044
- };
5045
- keyUsages = jwk.d ? [ "decrypt", "unwrapKey" ] : [ "encrypt", "wrapKey" ];
5046
- break;
5047
-
5048
- default:
5049
- throw new JOSENotSupported('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');
5050
- }
5051
- break;
5052
- }
5053
-
5054
- case "EC":
5055
- {
5056
- switch (jwk.alg) {
5057
- case "ES256":
5058
- algorithm = {
5059
- name: "ECDSA",
5060
- namedCurve: "P-256"
5061
- };
5062
- keyUsages = jwk.d ? [ "sign" ] : [ "verify" ];
5063
- break;
5064
-
5065
- case "ES384":
5066
- algorithm = {
5067
- name: "ECDSA",
5068
- namedCurve: "P-384"
5069
- };
5070
- keyUsages = jwk.d ? [ "sign" ] : [ "verify" ];
5071
- break;
5072
-
5073
- case "ES512":
5074
- algorithm = {
5075
- name: "ECDSA",
5076
- namedCurve: "P-521"
5077
- };
5078
- keyUsages = jwk.d ? [ "sign" ] : [ "verify" ];
5079
- break;
5080
-
5081
- case "ECDH-ES":
5082
- case "ECDH-ES+A128KW":
5083
- case "ECDH-ES+A192KW":
5084
- case "ECDH-ES+A256KW":
5085
- algorithm = {
5086
- name: "ECDH",
5087
- namedCurve: jwk.crv
5088
- };
5089
- keyUsages = jwk.d ? [ "deriveBits" ] : [];
5090
- break;
5091
-
5092
- default:
5093
- throw new JOSENotSupported('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');
5094
- }
5095
- break;
5096
- }
5097
-
5098
- case "OKP":
5099
- {
5100
- switch (jwk.alg) {
5101
- case "Ed25519":
5102
- case "EdDSA":
5103
- algorithm = {
5104
- name: "Ed25519"
5105
- };
5106
- keyUsages = jwk.d ? [ "sign" ] : [ "verify" ];
5107
- break;
5108
-
5109
- case "ECDH-ES":
5110
- case "ECDH-ES+A128KW":
5111
- case "ECDH-ES+A192KW":
5112
- case "ECDH-ES+A256KW":
5113
- algorithm = {
5114
- name: jwk.crv
5346
+ {
5347
+ try {
5348
+ const namedCurve = options.getNamedCurve(keyData);
5349
+ algorithm = namedCurve === "X25519" ? {
5350
+ name: "X25519"
5351
+ } : {
5352
+ name: "ECDH",
5353
+ namedCurve: namedCurve
5115
5354
  };
5116
- keyUsages = jwk.d ? [ "deriveBits" ] : [];
5117
- break;
5118
-
5119
- default:
5120
- throw new JOSENotSupported('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');
5355
+ } catch (cause) {
5356
+ throw new JOSENotSupported("Invalid or unsupported key format");
5121
5357
  }
5358
+ keyUsages = isPublic ? [] : [ "deriveBits" ];
5122
5359
  break;
5123
5360
  }
5124
5361
 
5362
+ case "Ed25519":
5363
+ case "EdDSA":
5364
+ algorithm = {
5365
+ name: "Ed25519"
5366
+ };
5367
+ keyUsages = getSigUsages();
5368
+ break;
5369
+
5370
+ case "ML-DSA-44":
5371
+ case "ML-DSA-65":
5372
+ case "ML-DSA-87":
5373
+ algorithm = {
5374
+ name: alg
5375
+ };
5376
+ keyUsages = getSigUsages();
5377
+ break;
5378
+
5125
5379
  default:
5126
- throw new JOSENotSupported('Invalid or unsupported JWK "kty" (Key Type) Parameter value');
5380
+ throw new JOSENotSupported('Invalid or unsupported "alg" (Algorithm) value');
5127
5381
  }
5128
- return {
5129
- algorithm: algorithm,
5130
- keyUsages: keyUsages
5131
- };
5132
- }
5382
+ return crypto.subtle.importKey(keyFormat, keyData, algorithm, (_options$extractable = options === null || options === void 0 ? void 0 : options.extractable) !== null && _options$extractable !== void 0 ? _options$extractable : isPublic ? true : false, keyUsages);
5383
+ };
5133
5384
 
5134
- async function jwkToKey(jwk) {
5135
- var _jwk$ext, _jwk$key_ops;
5136
- if (!jwk.alg) {
5137
- throw new TypeError('"alg" argument is required when "jwk.alg" is not present');
5138
- }
5139
- const {algorithm: algorithm, keyUsages: keyUsages} = subtleMapping(jwk);
5140
- const keyData = _objectSpread2({}, jwk);
5141
- if (keyData.kty !== "AKP") {
5142
- delete keyData.alg;
5385
+ const processPEMData = (pem, pattern) => decodeBase64(pem.replace(pattern, ""));
5386
+
5387
+ const fromPKCS8 = (pem, alg, options) => {
5388
+ var _alg$startsWith;
5389
+ const keyData = processPEMData(pem, /(?:-----(?:BEGIN|END) PRIVATE KEY-----|\s)/g);
5390
+ let opts = options;
5391
+ if (alg !== null && alg !== void 0 && (_alg$startsWith = alg.startsWith) !== null && _alg$startsWith !== void 0 && _alg$startsWith.call(alg, "ECDH-ES")) {
5392
+ opts || (opts = {});
5393
+ opts.getNamedCurve = keyData => {
5394
+ const state = createASN1State(keyData);
5395
+ parsePKCS8Header(state);
5396
+ return parseECAlgorithmIdentifier(state);
5397
+ };
5143
5398
  }
5144
- delete keyData.use;
5145
- return crypto.subtle.importKey("jwk", keyData, algorithm, (_jwk$ext = jwk.ext) !== null && _jwk$ext !== void 0 ? _jwk$ext : jwk.d || jwk.priv ? false : true, (_jwk$key_ops = jwk.key_ops) !== null && _jwk$key_ops !== void 0 ? _jwk$key_ops : keyUsages);
5146
- }
5399
+ return genericImport("pkcs8", keyData, alg, opts);
5400
+ };
5147
5401
 
5148
5402
  async function importPKCS8(pkcs8, alg, options) {
5149
5403
  if (typeof pkcs8 !== "string" || pkcs8.indexOf("-----BEGIN PRIVATE KEY-----") !== 0) {
@@ -5192,241 +5446,53 @@ async function importJWK(jwk, alg, options) {
5192
5446
  case "EC":
5193
5447
  case "OKP":
5194
5448
  return jwkToKey(_objectSpread2(_objectSpread2({}, jwk), {}, {
5195
- alg: alg,
5196
- ext: ext
5197
- }));
5198
-
5199
- default:
5200
- throw new JOSENotSupported('Unsupported "kty" (Key Type) Parameter value');
5201
- }
5202
- }
5203
-
5204
- function validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) {
5205
- if (joseHeader.crit !== undefined && (protectedHeader === null || protectedHeader === void 0 ? void 0 : protectedHeader.crit) === undefined) {
5206
- throw new Err('"crit" (Critical) Header Parameter MUST be integrity protected');
5207
- }
5208
- if (!protectedHeader || protectedHeader.crit === undefined) {
5209
- return new Set;
5210
- }
5211
- if (!Array.isArray(protectedHeader.crit) || protectedHeader.crit.length === 0 || protectedHeader.crit.some((input => typeof input !== "string" || input.length === 0))) {
5212
- throw new Err('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');
5213
- }
5214
- let recognized;
5215
- if (recognizedOption !== undefined) {
5216
- recognized = new Map([ ...Object.entries(recognizedOption), ...recognizedDefault.entries() ]);
5217
- } else {
5218
- recognized = recognizedDefault;
5219
- }
5220
- for (const parameter of protectedHeader.crit) {
5221
- if (!recognized.has(parameter)) {
5222
- throw new JOSENotSupported('Extension Header Parameter "'.concat(parameter, '" is not recognized'));
5223
- }
5224
- if (joseHeader[parameter] === undefined) {
5225
- throw new Err('Extension Header Parameter "'.concat(parameter, '" is missing'));
5226
- }
5227
- if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {
5228
- throw new Err('Extension Header Parameter "'.concat(parameter, '" MUST be integrity protected'));
5229
- }
5230
- }
5231
- return new Set(protectedHeader.crit);
5232
- }
5233
-
5234
- function validateAlgorithms(option, algorithms) {
5235
- if (algorithms !== undefined && (!Array.isArray(algorithms) || algorithms.some((s => typeof s !== "string")))) {
5236
- throw new TypeError('"'.concat(option, '" option must be an array of strings'));
5237
- }
5238
- if (!algorithms) {
5239
- return undefined;
5240
- }
5241
- return new Set(algorithms);
5242
- }
5243
-
5244
- const isJWK = key => isObject(key) && typeof key.kty === "string";
5245
-
5246
- const isPrivateJWK = key => key.kty !== "oct" && (key.kty === "AKP" && typeof key.priv === "string" || typeof key.d === "string");
5247
-
5248
- const isPublicJWK = key => key.kty !== "oct" && key.d === undefined && key.priv === undefined;
5249
-
5250
- const isSecretJWK = key => key.kty === "oct" && typeof key.k === "string";
5251
-
5252
- let cache;
5253
-
5254
- const handleJWK = async function handleJWK(key, jwk, alg) {
5255
- let freeze = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
5256
- cache || (cache = new WeakMap);
5257
- let cached = cache.get(key);
5258
- if (cached !== null && cached !== void 0 && cached[alg]) {
5259
- return cached[alg];
5260
- }
5261
- const cryptoKey = await jwkToKey(_objectSpread2(_objectSpread2({}, jwk), {}, {
5262
- alg: alg
5263
- }));
5264
- if (freeze) Object.freeze(key);
5265
- if (!cached) {
5266
- cache.set(key, {
5267
- [alg]: cryptoKey
5268
- });
5269
- } else {
5270
- cached[alg] = cryptoKey;
5271
- }
5272
- return cryptoKey;
5273
- };
5274
-
5275
- const handleKeyObject = (keyObject, alg) => {
5276
- cache || (cache = new WeakMap);
5277
- let cached = cache.get(keyObject);
5278
- if (cached !== null && cached !== void 0 && cached[alg]) {
5279
- return cached[alg];
5280
- }
5281
- const isPublic = keyObject.type === "public";
5282
- const extractable = isPublic ? true : false;
5283
- let cryptoKey;
5284
- if (keyObject.asymmetricKeyType === "x25519") {
5285
- switch (alg) {
5286
- case "ECDH-ES":
5287
- case "ECDH-ES+A128KW":
5288
- case "ECDH-ES+A192KW":
5289
- case "ECDH-ES+A256KW":
5290
- break;
5291
-
5292
- default:
5293
- throw new TypeError("given KeyObject instance cannot be used for this algorithm");
5294
- }
5295
- cryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, isPublic ? [] : [ "deriveBits" ]);
5296
- }
5297
- if (keyObject.asymmetricKeyType === "ed25519") {
5298
- if (alg !== "EdDSA" && alg !== "Ed25519") {
5299
- throw new TypeError("given KeyObject instance cannot be used for this algorithm");
5300
- }
5301
- cryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, [ isPublic ? "verify" : "sign" ]);
5302
- }
5303
- switch (keyObject.asymmetricKeyType) {
5304
- case "ml-dsa-44":
5305
- case "ml-dsa-65":
5306
- case "ml-dsa-87":
5307
- {
5308
- if (alg !== keyObject.asymmetricKeyType.toUpperCase()) {
5309
- throw new TypeError("given KeyObject instance cannot be used for this algorithm");
5310
- }
5311
- cryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, [ isPublic ? "verify" : "sign" ]);
5312
- }
5313
- }
5314
- if (keyObject.asymmetricKeyType === "rsa") {
5315
- let hash;
5316
- switch (alg) {
5317
- case "RSA-OAEP":
5318
- hash = "SHA-1";
5319
- break;
5320
-
5321
- case "RS256":
5322
- case "PS256":
5323
- case "RSA-OAEP-256":
5324
- hash = "SHA-256";
5325
- break;
5326
-
5327
- case "RS384":
5328
- case "PS384":
5329
- case "RSA-OAEP-384":
5330
- hash = "SHA-384";
5331
- break;
5332
-
5333
- case "RS512":
5334
- case "PS512":
5335
- case "RSA-OAEP-512":
5336
- hash = "SHA-512";
5337
- break;
5338
-
5339
- default:
5340
- throw new TypeError("given KeyObject instance cannot be used for this algorithm");
5341
- }
5342
- if (alg.startsWith("RSA-OAEP")) {
5343
- return keyObject.toCryptoKey({
5344
- name: "RSA-OAEP",
5345
- hash: hash
5346
- }, extractable, isPublic ? [ "encrypt" ] : [ "decrypt" ]);
5347
- }
5348
- cryptoKey = keyObject.toCryptoKey({
5349
- name: alg.startsWith("PS") ? "RSA-PSS" : "RSASSA-PKCS1-v1_5",
5350
- hash: hash
5351
- }, extractable, [ isPublic ? "verify" : "sign" ]);
5352
- }
5353
- if (keyObject.asymmetricKeyType === "ec") {
5354
- var _keyObject$asymmetric;
5355
- const nist = new Map([ [ "prime256v1", "P-256" ], [ "secp384r1", "P-384" ], [ "secp521r1", "P-521" ] ]);
5356
- const namedCurve = nist.get((_keyObject$asymmetric = keyObject.asymmetricKeyDetails) === null || _keyObject$asymmetric === void 0 ? void 0 : _keyObject$asymmetric.namedCurve);
5357
- if (!namedCurve) {
5358
- throw new TypeError("given KeyObject instance cannot be used for this algorithm");
5359
- }
5360
- if (alg === "ES256" && namedCurve === "P-256") {
5361
- cryptoKey = keyObject.toCryptoKey({
5362
- name: "ECDSA",
5363
- namedCurve: namedCurve
5364
- }, extractable, [ isPublic ? "verify" : "sign" ]);
5365
- }
5366
- if (alg === "ES384" && namedCurve === "P-384") {
5367
- cryptoKey = keyObject.toCryptoKey({
5368
- name: "ECDSA",
5369
- namedCurve: namedCurve
5370
- }, extractable, [ isPublic ? "verify" : "sign" ]);
5371
- }
5372
- if (alg === "ES512" && namedCurve === "P-521") {
5373
- cryptoKey = keyObject.toCryptoKey({
5374
- name: "ECDSA",
5375
- namedCurve: namedCurve
5376
- }, extractable, [ isPublic ? "verify" : "sign" ]);
5377
- }
5378
- if (alg.startsWith("ECDH-ES")) {
5379
- cryptoKey = keyObject.toCryptoKey({
5380
- name: "ECDH",
5381
- namedCurve: namedCurve
5382
- }, extractable, isPublic ? [] : [ "deriveBits" ]);
5383
- }
5384
- }
5385
- if (!cryptoKey) {
5386
- throw new TypeError("given KeyObject instance cannot be used for this algorithm");
5387
- }
5388
- if (!cached) {
5389
- cache.set(keyObject, {
5390
- [alg]: cryptoKey
5391
- });
5392
- } else {
5393
- cached[alg] = cryptoKey;
5449
+ alg: alg,
5450
+ ext: ext
5451
+ }));
5452
+
5453
+ default:
5454
+ throw new JOSENotSupported('Unsupported "kty" (Key Type) Parameter value');
5394
5455
  }
5395
- return cryptoKey;
5396
- };
5456
+ }
5397
5457
 
5398
- async function normalizeKey(key, alg) {
5399
- if (key instanceof Uint8Array) {
5400
- return key;
5458
+ function validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) {
5459
+ if (joseHeader.crit !== undefined && (protectedHeader === null || protectedHeader === void 0 ? void 0 : protectedHeader.crit) === undefined) {
5460
+ throw new Err('"crit" (Critical) Header Parameter MUST be integrity protected');
5401
5461
  }
5402
- if (isCryptoKey(key)) {
5403
- return key;
5462
+ if (!protectedHeader || protectedHeader.crit === undefined) {
5463
+ return new Set;
5404
5464
  }
5405
- if (isKeyObject(key)) {
5406
- if (key.type === "secret") {
5407
- return key.export();
5465
+ if (!Array.isArray(protectedHeader.crit) || protectedHeader.crit.length === 0 || protectedHeader.crit.some(input => typeof input !== "string" || input.length === 0)) {
5466
+ throw new Err('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');
5467
+ }
5468
+ let recognized;
5469
+ if (recognizedOption !== undefined) {
5470
+ recognized = new Map([ ...Object.entries(recognizedOption), ...recognizedDefault.entries() ]);
5471
+ } else {
5472
+ recognized = recognizedDefault;
5473
+ }
5474
+ for (const parameter of protectedHeader.crit) {
5475
+ if (!recognized.has(parameter)) {
5476
+ throw new JOSENotSupported('Extension Header Parameter "'.concat(parameter, '" is not recognized'));
5408
5477
  }
5409
- if ("toCryptoKey" in key && typeof key.toCryptoKey === "function") {
5410
- try {
5411
- return handleKeyObject(key, alg);
5412
- } catch (err) {
5413
- if (err instanceof TypeError) {
5414
- throw err;
5415
- }
5416
- }
5478
+ if (joseHeader[parameter] === undefined) {
5479
+ throw new Err('Extension Header Parameter "'.concat(parameter, '" is missing'));
5417
5480
  }
5418
- let jwk = key.export({
5419
- format: "jwk"
5420
- });
5421
- return handleJWK(key, jwk, alg);
5422
- }
5423
- if (isJWK(key)) {
5424
- if (key.k) {
5425
- return decode(key.k);
5481
+ if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {
5482
+ throw new Err('Extension Header Parameter "'.concat(parameter, '" MUST be integrity protected'));
5426
5483
  }
5427
- return handleJWK(key, key, alg, true);
5428
5484
  }
5429
- throw new Error("unreachable");
5485
+ return new Set(protectedHeader.crit);
5486
+ }
5487
+
5488
+ function validateAlgorithms(option, algorithms) {
5489
+ if (algorithms !== undefined && (!Array.isArray(algorithms) || algorithms.some(s => typeof s !== "string"))) {
5490
+ throw new TypeError('"'.concat(option, '" option must be an array of strings'));
5491
+ }
5492
+ if (!algorithms) {
5493
+ return undefined;
5494
+ }
5495
+ return new Set(algorithms);
5430
5496
  }
5431
5497
 
5432
5498
  const tag = key => key === null || key === void 0 ? void 0 : key[Symbol.toStringTag];
@@ -5566,7 +5632,7 @@ let USER_AGENT$1;
5566
5632
 
5567
5633
  if (typeof navigator === "undefined" || !((_navigator$userAgent$1 = navigator.userAgent) !== null && _navigator$userAgent$1 !== void 0 && (_navigator$userAgent$$1 = _navigator$userAgent$1.startsWith) !== null && _navigator$userAgent$$1 !== void 0 && _navigator$userAgent$$1.call(_navigator$userAgent$1, "Mozilla/5.0 "))) {
5568
5634
  const NAME = "openid-client";
5569
- const VERSION = "v6.8.1";
5635
+ const VERSION = "v6.8.2";
5570
5636
  USER_AGENT$1 = "".concat(NAME, "/").concat(VERSION);
5571
5637
  headers = {
5572
5638
  "user-agent": USER_AGENT$1
@@ -5778,7 +5844,7 @@ async function performDiscovery(server, options) {
5778
5844
  method: "GET",
5779
5845
  redirect: "manual",
5780
5846
  signal: signal
5781
- })).then((response => processDiscoveryResponse(_nodiscoverycheck, response))).catch(errorHandler);
5847
+ })).then(response => processDiscoveryResponse(_nodiscoverycheck, response)).catch(errorHandler);
5782
5848
  if (resolve && new URL(as.issuer).href !== server.href) {
5783
5849
  handleEntraId(server, as, options) || handleB2Clogin(server, options) || (() => {
5784
5850
  throw new ClientError("discovered metadata issuer does not match the expected issuer", {
@@ -5953,7 +6019,7 @@ async function handleRetryAfter(response, currentInterval, signal) {
5953
6019
  }
5954
6020
 
5955
6021
  function wait(duration, signal) {
5956
- return new Promise(((resolve, reject) => {
6022
+ return new Promise((resolve, reject) => {
5957
6023
  const waitStep = remaining => {
5958
6024
  try {
5959
6025
  signal.throwIfAborted();
@@ -5966,10 +6032,10 @@ function wait(duration, signal) {
5966
6032
  return;
5967
6033
  }
5968
6034
  const currentWait = Math.min(remaining, 5);
5969
- setTimeout((() => waitStep(remaining - currentWait)), currentWait * 1e3);
6035
+ setTimeout(() => waitStep(remaining - currentWait), currentWait * 1e3);
5970
6036
  };
5971
6037
  waitStep(duration);
5972
- }));
6038
+ });
5973
6039
  }
5974
6040
 
5975
6041
  async function initiateBackchannelAuthentication(config, parameters) {
@@ -5980,7 +6046,7 @@ async function initiateBackchannelAuthentication(config, parameters) {
5980
6046
  [allowInsecureRequests$1]: !tlsOnly,
5981
6047
  headers: new Headers(headers),
5982
6048
  signal: signal(timeout)
5983
- }).then((response => processBackchannelAuthenticationResponse(as, c, response))).catch(errorHandler);
6049
+ }).then(response => processBackchannelAuthenticationResponse(as, c, response)).catch(errorHandler);
5984
6050
  }
5985
6051
 
5986
6052
  async function pollBackchannelAuthenticationGrant(config, backchannelAuthenticationResponse, parameters, options) {
@@ -6307,7 +6373,7 @@ async function genericGrantRequest(config, grantType, parameters, options) {
6307
6373
  DPoP: options === null || options === void 0 ? void 0 : options.DPoP,
6308
6374
  headers: new Headers(headers),
6309
6375
  signal: signal(timeout)
6310
- }).then((response => {
6376
+ }).then(response => {
6311
6377
  let recognizedTokenTypes;
6312
6378
  if (grantType === "urn:ietf:params:oauth:grant-type:token-exchange") {
6313
6379
  recognizedTokenTypes = {
@@ -6318,91 +6384,11 @@ async function genericGrantRequest(config, grantType, parameters, options) {
6318
6384
  [jweDecrypt]: decrypt,
6319
6385
  recognizedTokenTypes: recognizedTokenTypes
6320
6386
  });
6321
- })).catch(errorHandler);
6387
+ }).catch(errorHandler);
6322
6388
  addHelpers(result);
6323
6389
  return result;
6324
6390
  }
6325
6391
 
6326
- function subtleAlgorithm(alg, algorithm) {
6327
- const hash = "SHA-".concat(alg.slice(-3));
6328
- switch (alg) {
6329
- case "HS256":
6330
- case "HS384":
6331
- case "HS512":
6332
- return {
6333
- hash: hash,
6334
- name: "HMAC"
6335
- };
6336
-
6337
- case "PS256":
6338
- case "PS384":
6339
- case "PS512":
6340
- return {
6341
- hash: hash,
6342
- name: "RSA-PSS",
6343
- saltLength: parseInt(alg.slice(-3), 10) >> 3
6344
- };
6345
-
6346
- case "RS256":
6347
- case "RS384":
6348
- case "RS512":
6349
- return {
6350
- hash: hash,
6351
- name: "RSASSA-PKCS1-v1_5"
6352
- };
6353
-
6354
- case "ES256":
6355
- case "ES384":
6356
- case "ES512":
6357
- return {
6358
- hash: hash,
6359
- name: "ECDSA",
6360
- namedCurve: algorithm.namedCurve
6361
- };
6362
-
6363
- case "Ed25519":
6364
- case "EdDSA":
6365
- return {
6366
- name: "Ed25519"
6367
- };
6368
-
6369
- case "ML-DSA-44":
6370
- case "ML-DSA-65":
6371
- case "ML-DSA-87":
6372
- return {
6373
- name: alg
6374
- };
6375
-
6376
- default:
6377
- throw new JOSENotSupported("alg ".concat(alg, " is not supported either by JOSE or your javascript runtime"));
6378
- }
6379
- }
6380
-
6381
- async function getSigKey(alg, key, usage) {
6382
- if (key instanceof Uint8Array) {
6383
- if (!alg.startsWith("HS")) {
6384
- throw new TypeError(invalidKeyInput(key, "CryptoKey", "KeyObject", "JSON Web Key"));
6385
- }
6386
- return crypto.subtle.importKey("raw", key, {
6387
- hash: "SHA-".concat(alg.slice(-3)),
6388
- name: "HMAC"
6389
- }, false, [ usage ]);
6390
- }
6391
- checkSigCryptoKey(key, alg, usage);
6392
- return key;
6393
- }
6394
-
6395
- async function verify(alg, key, signature, data) {
6396
- const cryptoKey = await getSigKey(alg, key, "verify");
6397
- checkKeyLength(alg, cryptoKey);
6398
- const algorithm = subtleAlgorithm(alg, cryptoKey.algorithm);
6399
- try {
6400
- return await crypto.subtle.verify(algorithm, cryptoKey, signature, data);
6401
- } catch (_unused) {
6402
- return false;
6403
- }
6404
- }
6405
-
6406
6392
  async function flattenedVerify(jws, key, options) {
6407
6393
  if (!isObject(jws)) {
6408
6394
  throw new JWSInvalid("Flattened JWS must be an object");
@@ -6465,12 +6451,7 @@ async function flattenedVerify(jws, key, options) {
6465
6451
  }
6466
6452
  checkKeyType(alg, key, "verify");
6467
6453
  const data = concat(jws.protected !== undefined ? encode(jws.protected) : new Uint8Array, encode("."), typeof jws.payload === "string" ? b64 ? encode(jws.payload) : encoder.encode(jws.payload) : jws.payload);
6468
- let signature;
6469
- try {
6470
- signature = decode(jws.signature);
6471
- } catch (_unused2) {
6472
- throw new JWSInvalid("Failed to base64url decode the signature");
6473
- }
6454
+ const signature = decodeBase64url(jws.signature, "signature", JWSInvalid);
6474
6455
  const k = await normalizeKey(key, alg);
6475
6456
  const verified = await verify(alg, k, signature, data);
6476
6457
  if (!verified) {
@@ -6478,11 +6459,7 @@ async function flattenedVerify(jws, key, options) {
6478
6459
  }
6479
6460
  let payload;
6480
6461
  if (b64) {
6481
- try {
6482
- payload = decode(jws.payload);
6483
- } catch (_unused3) {
6484
- throw new JWSInvalid("Failed to base64url decode the payload");
6485
- }
6462
+ payload = decodeBase64url(jws.payload, "payload", JWSInvalid);
6486
6463
  } else if (typeof jws.payload === "string") {
6487
6464
  payload = encoder.encode(jws.payload);
6488
6465
  } else {
@@ -6769,7 +6746,7 @@ class LocalJWKSet {
6769
6746
  async getKey(protectedHeader, token) {
6770
6747
  const {alg: alg, kid: kid} = _objectSpread2(_objectSpread2({}, protectedHeader), token === null || token === void 0 ? void 0 : token.header);
6771
6748
  const kty = getKtyFromAlg(alg);
6772
- const candidates = _classPrivateFieldGet2(_jwks$1, this).keys.filter((jwk => {
6749
+ const candidates = _classPrivateFieldGet2(_jwks$1, this).keys.filter(jwk => {
6773
6750
  let candidate = kty === jwk.kty;
6774
6751
  if (candidate && typeof kid === "string") {
6775
6752
  candidate = kid === jwk.kid;
@@ -6804,7 +6781,7 @@ class LocalJWKSet {
6804
6781
  }
6805
6782
  }
6806
6783
  return candidate;
6807
- }));
6784
+ });
6808
6785
  const {0: jwk, length: length} = candidates;
6809
6786
  if (length === 0) {
6810
6787
  throw new JWKSNoMatchingKey;
@@ -6812,13 +6789,13 @@ class LocalJWKSet {
6812
6789
  if (length !== 1) {
6813
6790
  const error = new JWKSMultipleMatchingKeys;
6814
6791
  const _cached = _classPrivateFieldGet2(_cached2, this);
6815
- error[Symbol.asyncIterator] = _wrapAsyncGenerator((function*() {
6792
+ error[Symbol.asyncIterator] = _wrapAsyncGenerator(function*() {
6816
6793
  for (const jwk of candidates) {
6817
6794
  try {
6818
6795
  yield yield _awaitAsyncGenerator(importWithAlgCache(_cached, jwk, alg));
6819
6796
  } catch (_unused) {}
6820
6797
  }
6821
- }));
6798
+ });
6822
6799
  throw error;
6823
6800
  }
6824
6801
  return importWithAlgCache(_classPrivateFieldGet2(_cached2, this), jwk, alg);
@@ -6863,7 +6840,7 @@ let USER_AGENT;
6863
6840
 
6864
6841
  if (typeof navigator === "undefined" || !((_navigator$userAgent = navigator.userAgent) !== null && _navigator$userAgent !== void 0 && (_navigator$userAgent$ = _navigator$userAgent.startsWith) !== null && _navigator$userAgent$ !== void 0 && _navigator$userAgent$.call(_navigator$userAgent, "Mozilla/5.0 "))) {
6865
6842
  const NAME = "jose";
6866
- const VERSION = "v6.1.3";
6843
+ const VERSION = "v6.2.2";
6867
6844
  USER_AGENT = "".concat(NAME, "/").concat(VERSION);
6868
6845
  }
6869
6846
 
@@ -6876,12 +6853,12 @@ async function fetchJwks(url, headers, signal) {
6876
6853
  signal: signal,
6877
6854
  redirect: "manual",
6878
6855
  headers: headers
6879
- }).catch((err => {
6856
+ }).catch(err => {
6880
6857
  if (err.name === "TimeoutError") {
6881
6858
  throw new JWKSTimeout;
6882
6859
  }
6883
6860
  throw err;
6884
- }));
6861
+ });
6885
6862
  if (response.status !== 200) {
6886
6863
  throw new JOSEError("Expected 200 OK from the JSON Web Key Set HTTP response");
6887
6864
  }
@@ -6996,7 +6973,7 @@ class RemoteJWKSet {
6996
6973
  if (_classPrivateFieldGet2(_pendingFetch, this) && isCloudflareWorkers()) {
6997
6974
  _classPrivateFieldSet2(_pendingFetch, this, undefined);
6998
6975
  }
6999
- _classPrivateFieldGet2(_pendingFetch, this) || _classPrivateFieldSet2(_pendingFetch, this, fetchJwks(_classPrivateFieldGet2(_url, this).href, _classPrivateFieldGet2(_headers, this), AbortSignal.timeout(_classPrivateFieldGet2(_timeoutDuration, this)), _classPrivateFieldGet2(_customFetch$1, this)).then((json => {
6976
+ _classPrivateFieldGet2(_pendingFetch, this) || _classPrivateFieldSet2(_pendingFetch, this, fetchJwks(_classPrivateFieldGet2(_url, this).href, _classPrivateFieldGet2(_headers, this), AbortSignal.timeout(_classPrivateFieldGet2(_timeoutDuration, this)), _classPrivateFieldGet2(_customFetch$1, this)).then(json => {
7000
6977
  _classPrivateFieldSet2(_local, this, createLocalJWKSet(json));
7001
6978
  if (_classPrivateFieldGet2(_cache, this)) {
7002
6979
  _classPrivateFieldGet2(_cache, this).uat = Date.now();
@@ -7004,10 +6981,10 @@ class RemoteJWKSet {
7004
6981
  }
7005
6982
  _classPrivateFieldSet2(_jwksTimestamp, this, Date.now());
7006
6983
  _classPrivateFieldSet2(_pendingFetch, this, undefined);
7007
- })).catch((err => {
6984
+ }).catch(err => {
7008
6985
  _classPrivateFieldSet2(_pendingFetch, this, undefined);
7009
6986
  throw err;
7010
- })));
6987
+ }));
7011
6988
  await _classPrivateFieldGet2(_pendingFetch, this);
7012
6989
  }
7013
6990
  }
@@ -7049,7 +7026,7 @@ function createRemoteJWKSet(url, options) {
7049
7026
 
7050
7027
  const _excluded = [ "mfaToken" ], _excluded2 = [ "mfaToken" ];
7051
7028
 
7052
- var _baseUrl, _clientId, _customFetch, _configuration, _serverMetadata, _options, _jwks, _Class8_brand;
7029
+ var _baseUrl, _clientId, _customFetch, _entries, _ttlMs, _maxEntries, _configuration, _serverMetadata, _clientAuthPromise, _options, _customFetch2, _jwks, _discoveryCache, _inFlightDiscovery, _jwksCache, _Class9_brand;
7053
7030
 
7054
7031
  var NotSupportedError = class NotSupportedError extends Error {
7055
7032
  constructor(code, message) {
@@ -7155,12 +7132,12 @@ var MissingClientAuthError = class MissingClientAuthError extends Error {
7155
7132
  };
7156
7133
 
7157
7134
  function stripUndefinedProperties(value) {
7158
- return Object.entries(value).filter((_ref => {
7135
+ return Object.entries(value).filter(_ref => {
7159
7136
  let [, value2] = _ref;
7160
7137
  return typeof value2 !== "undefined";
7161
- })).reduce(((acc, curr) => _objectSpread2(_objectSpread2({}, acc), {}, {
7138
+ }).reduce((acc, curr) => _objectSpread2(_objectSpread2({}, acc), {}, {
7162
7139
  [curr[0]]: curr[1]
7163
- })), {});
7140
+ }), {});
7164
7141
  }
7165
7142
 
7166
7143
  var MfaError$1 = class MfaError extends Error {
@@ -7232,7 +7209,9 @@ function transformEnrollmentResponse(api) {
7232
7209
  oobChannel: api.oob_channel,
7233
7210
  oobCode: api.oob_code,
7234
7211
  bindingMethod: api.binding_method,
7235
- id: api.id
7212
+ id: api.id,
7213
+ barcodeUri: api.barcode_uri,
7214
+ recoveryCodes: api.recovery_codes
7236
7215
  };
7237
7216
  }
7238
7217
  throw new Error("Unexpected authenticator type: ".concat(api.authenticator_type));
@@ -7353,6 +7332,42 @@ class MfaClient {
7353
7332
  }
7354
7333
  });
7355
7334
 
7335
+ function createTelemetryFetch(baseFetch, config) {
7336
+ if (config.enabled === false) {
7337
+ return baseFetch;
7338
+ }
7339
+ const telemetryData = {
7340
+ name: config.name,
7341
+ version: config.version
7342
+ };
7343
+ const headerValue = btoa(JSON.stringify(telemetryData));
7344
+ return async (input, init) => {
7345
+ const headers = input instanceof Request ? new Headers(input.headers) : new Headers;
7346
+ if (init !== null && init !== void 0 && init.headers) {
7347
+ const initHeaders = new Headers(init.headers);
7348
+ initHeaders.forEach((value, key) => {
7349
+ headers.set(key, value);
7350
+ });
7351
+ }
7352
+ headers.set("Auth0-Client", headerValue);
7353
+ return baseFetch(input, _objectSpread2(_objectSpread2({}, init), {}, {
7354
+ headers: headers
7355
+ }));
7356
+ };
7357
+ }
7358
+
7359
+ function getTelemetryConfig(config) {
7360
+ var _config$name, _config$version;
7361
+ if ((config === null || config === void 0 ? void 0 : config.enabled) === false) {
7362
+ return config;
7363
+ }
7364
+ return {
7365
+ enabled: true,
7366
+ name: (_config$name = config === null || config === void 0 ? void 0 : config.name) !== null && _config$name !== void 0 ? _config$name : "@auth0/auth0-auth-js",
7367
+ version: (_config$version = config === null || config === void 0 ? void 0 : config.version) !== null && _config$version !== void 0 ? _config$version : "1.5.0"
7368
+ };
7369
+ }
7370
+
7356
7371
  var TokenResponse = class _TokenResponse {
7357
7372
  constructor(accessToken, expiresAt, idToken, refreshToken, scope, claims, authorizationDetails) {
7358
7373
  _defineProperty(this, "accessToken", void 0);
@@ -7381,6 +7396,81 @@ var TokenResponse = class _TokenResponse {
7381
7396
  }
7382
7397
  };
7383
7398
 
7399
+ var LruCache = (_entries = new WeakMap, _ttlMs = new WeakMap, _maxEntries = new WeakMap,
7400
+ class LruCache {
7401
+ constructor(maxEntries, ttlMs) {
7402
+ _classPrivateFieldInitSpec(this, _entries, new Map);
7403
+ _classPrivateFieldInitSpec(this, _ttlMs, void 0);
7404
+ _classPrivateFieldInitSpec(this, _maxEntries, void 0);
7405
+ _classPrivateFieldSet2(_maxEntries, this, Math.max(1, Math.floor(maxEntries)));
7406
+ _classPrivateFieldSet2(_ttlMs, this, Math.max(0, Math.floor(ttlMs)));
7407
+ }
7408
+ get(key) {
7409
+ const entry = _classPrivateFieldGet2(_entries, this).get(key);
7410
+ if (!entry) {
7411
+ return;
7412
+ }
7413
+ if (Date.now() >= entry.expiresAt) {
7414
+ _classPrivateFieldGet2(_entries, this).delete(key);
7415
+ return;
7416
+ }
7417
+ _classPrivateFieldGet2(_entries, this).delete(key);
7418
+ _classPrivateFieldGet2(_entries, this).set(key, entry);
7419
+ return entry.value;
7420
+ }
7421
+ set(key, value) {
7422
+ if (_classPrivateFieldGet2(_entries, this).has(key)) {
7423
+ _classPrivateFieldGet2(_entries, this).delete(key);
7424
+ }
7425
+ _classPrivateFieldGet2(_entries, this).set(key, {
7426
+ value: value,
7427
+ expiresAt: Date.now() + _classPrivateFieldGet2(_ttlMs, this)
7428
+ });
7429
+ while (_classPrivateFieldGet2(_entries, this).size > _classPrivateFieldGet2(_maxEntries, this)) {
7430
+ const oldestKey = _classPrivateFieldGet2(_entries, this).keys().next().value;
7431
+ if (oldestKey === void 0) {
7432
+ break;
7433
+ }
7434
+ _classPrivateFieldGet2(_entries, this).delete(oldestKey);
7435
+ }
7436
+ }
7437
+ });
7438
+
7439
+ var globalCaches = new Map;
7440
+
7441
+ function getGlobalCache(key) {
7442
+ return globalCaches.get(key);
7443
+ }
7444
+
7445
+ function getGlobalCacheKey(maxEntries, ttlMs) {
7446
+ return "".concat(maxEntries, ":").concat(ttlMs);
7447
+ }
7448
+
7449
+ function resolveCacheConfig(options) {
7450
+ const ttlSeconds = typeof (options === null || options === void 0 ? void 0 : options.ttl) === "number" ? options.ttl : 600;
7451
+ const maxEntries = typeof (options === null || options === void 0 ? void 0 : options.maxEntries) === "number" && options.maxEntries > 0 ? options.maxEntries : 100;
7452
+ const ttlMs = ttlSeconds * 1e3;
7453
+ return {
7454
+ ttlMs: ttlMs,
7455
+ maxEntries: maxEntries
7456
+ };
7457
+ }
7458
+
7459
+ var DiscoveryCacheFactory = class {
7460
+ static createDiscoveryCache(config) {
7461
+ const cacheKey = getGlobalCacheKey(config.maxEntries, config.ttlMs);
7462
+ let cache = getGlobalCache(cacheKey);
7463
+ if (!cache) {
7464
+ cache = new LruCache(config.maxEntries, config.ttlMs);
7465
+ globalCaches.set(cacheKey, cache);
7466
+ }
7467
+ return cache;
7468
+ }
7469
+ static createJwksCache() {
7470
+ return {};
7471
+ }
7472
+ };
7473
+
7384
7474
  var DEFAULT_SCOPES = "openid profile email offline_access";
7385
7475
 
7386
7476
  var MAX_ARRAY_VALUES_PER_KEY = 20;
@@ -7413,9 +7503,9 @@ function appendExtraParams(params, extra) {
7413
7503
  if (parameterValue.length > MAX_ARRAY_VALUES_PER_KEY) {
7414
7504
  throw new TokenExchangeError("Parameter '".concat(parameterKey, "' exceeds maximum array size of ").concat(MAX_ARRAY_VALUES_PER_KEY));
7415
7505
  }
7416
- parameterValue.forEach((arrayItem => {
7506
+ parameterValue.forEach(arrayItem => {
7417
7507
  params.append(parameterKey, arrayItem);
7418
- }));
7508
+ });
7419
7509
  } else {
7420
7510
  params.append(parameterKey, parameterValue);
7421
7511
  }
@@ -7432,39 +7522,58 @@ var SUBJECT_TYPE_ACCESS_TOKEN = "urn:ietf:params:oauth:token-type:access_token";
7432
7522
 
7433
7523
  var REQUESTED_TOKEN_TYPE_FEDERATED_CONNECTION_ACCESS_TOKEN = "http://auth0.com/oauth/token-type/federated-connection-access-token";
7434
7524
 
7435
- var AuthClient = (_configuration = new WeakMap, _serverMetadata = new WeakMap, _options = new WeakMap,
7436
- _jwks = new WeakMap, _Class8_brand = new WeakSet, class AuthClient {
7525
+ var AuthClient = (_configuration = new WeakMap, _serverMetadata = new WeakMap, _clientAuthPromise = new WeakMap,
7526
+ _options = new WeakMap, _customFetch2 = new WeakMap, _jwks = new WeakMap, _discoveryCache = new WeakMap,
7527
+ _inFlightDiscovery = new WeakMap, _jwksCache = new WeakMap, _Class9_brand = new WeakSet,
7528
+ class AuthClient {
7437
7529
  constructor(_options2) {
7438
- _classPrivateMethodInitSpec(this, _Class8_brand);
7530
+ var _options2$customFetch;
7531
+ _classPrivateMethodInitSpec(this, _Class9_brand);
7439
7532
  _classPrivateFieldInitSpec(this, _configuration, void 0);
7440
7533
  _classPrivateFieldInitSpec(this, _serverMetadata, void 0);
7534
+ _classPrivateFieldInitSpec(this, _clientAuthPromise, void 0);
7441
7535
  _classPrivateFieldInitSpec(this, _options, void 0);
7536
+ _classPrivateFieldInitSpec(this, _customFetch2, void 0);
7442
7537
  _classPrivateFieldInitSpec(this, _jwks, void 0);
7538
+ _classPrivateFieldInitSpec(this, _discoveryCache, void 0);
7539
+ _classPrivateFieldInitSpec(this, _inFlightDiscovery, void 0);
7540
+ _classPrivateFieldInitSpec(this, _jwksCache, void 0);
7443
7541
  _defineProperty(this, "mfa", void 0);
7444
7542
  _classPrivateFieldSet2(_options, this, _options2);
7445
7543
  if (_options2.useMtls && !_options2.customFetch) {
7446
7544
  throw new NotSupportedError("mtls_without_custom_fetch_not_supported", "Using mTLS without a custom fetch implementation is not supported");
7447
7545
  }
7546
+ _classPrivateFieldSet2(_customFetch2, this, createTelemetryFetch((_options2$customFetch = _options2.customFetch) !== null && _options2$customFetch !== void 0 ? _options2$customFetch : function() {
7547
+ return fetch(...arguments);
7548
+ }, getTelemetryConfig(_options2.telemetry)));
7549
+ const cacheConfig = resolveCacheConfig(_options2.discoveryCache);
7550
+ _classPrivateFieldSet2(_discoveryCache, this, DiscoveryCacheFactory.createDiscoveryCache(cacheConfig));
7551
+ _classPrivateFieldSet2(_inFlightDiscovery, this, new Map);
7552
+ _classPrivateFieldSet2(_jwksCache, this, DiscoveryCacheFactory.createJwksCache());
7448
7553
  this.mfa = new MfaClient({
7449
7554
  domain: _classPrivateFieldGet2(_options, this).domain,
7450
7555
  clientId: _classPrivateFieldGet2(_options, this).clientId,
7451
- customFetch: _classPrivateFieldGet2(_options, this).customFetch
7556
+ customFetch: _classPrivateFieldGet2(_customFetch2, this)
7452
7557
  });
7453
7558
  }
7559
+ async getServerMetadata() {
7560
+ const {serverMetadata: serverMetadata} = await _assertClassBrand(_Class9_brand, this, _discover).call(this);
7561
+ return serverMetadata;
7562
+ }
7454
7563
  async buildAuthorizationUrl(options) {
7455
- const {serverMetadata: serverMetadata} = await _assertClassBrand(_Class8_brand, this, _discover).call(this);
7564
+ const {serverMetadata: serverMetadata} = await _assertClassBrand(_Class9_brand, this, _discover).call(this);
7456
7565
  if (options !== null && options !== void 0 && options.pushedAuthorizationRequests && !serverMetadata.pushed_authorization_request_endpoint) {
7457
7566
  throw new NotSupportedError("par_not_supported_error", "The Auth0 tenant does not have pushed authorization requests enabled. Learn how to enable it here: https://auth0.com/docs/get-started/applications/configure-par");
7458
7567
  }
7459
7568
  try {
7460
- return await _assertClassBrand(_Class8_brand, this, _buildAuthorizationUrl).call(this, options);
7569
+ return await _assertClassBrand(_Class9_brand, this, _buildAuthorizationUrl).call(this, options);
7461
7570
  } catch (e) {
7462
7571
  throw new BuildAuthorizationUrlError(e);
7463
7572
  }
7464
7573
  }
7465
7574
  async buildLinkUserUrl(options) {
7466
7575
  try {
7467
- const result = await _assertClassBrand(_Class8_brand, this, _buildAuthorizationUrl).call(this, {
7576
+ const result = await _assertClassBrand(_Class9_brand, this, _buildAuthorizationUrl).call(this, {
7468
7577
  authorizationParams: _objectSpread2(_objectSpread2({}, options.authorizationParams), {}, {
7469
7578
  requested_connection: options.connection,
7470
7579
  requested_connection_scope: options.connectionScope,
@@ -7482,7 +7591,7 @@ _jwks = new WeakMap, _Class8_brand = new WeakSet, class AuthClient {
7482
7591
  }
7483
7592
  async buildUnlinkUserUrl(options) {
7484
7593
  try {
7485
- const result = await _assertClassBrand(_Class8_brand, this, _buildAuthorizationUrl).call(this, {
7594
+ const result = await _assertClassBrand(_Class9_brand, this, _buildAuthorizationUrl).call(this, {
7486
7595
  authorizationParams: _objectSpread2(_objectSpread2({}, options.authorizationParams), {}, {
7487
7596
  requested_connection: options.connection,
7488
7597
  scope: "openid unlink_account",
@@ -7498,7 +7607,7 @@ _jwks = new WeakMap, _Class8_brand = new WeakSet, class AuthClient {
7498
7607
  }
7499
7608
  }
7500
7609
  async backchannelAuthentication(options) {
7501
- const {configuration: configuration, serverMetadata: serverMetadata} = await _assertClassBrand(_Class8_brand, this, _discover).call(this);
7610
+ const {configuration: configuration, serverMetadata: serverMetadata} = await _assertClassBrand(_Class9_brand, this, _discover).call(this);
7502
7611
  const additionalParams = stripUndefinedProperties(_objectSpread2(_objectSpread2({}, _classPrivateFieldGet2(_options, this).authorizationParams), options === null || options === void 0 ? void 0 : options.authorizationParams));
7503
7612
  const params = new URLSearchParams(_objectSpread2(_objectSpread2({
7504
7613
  scope: DEFAULT_SCOPES
@@ -7526,7 +7635,7 @@ _jwks = new WeakMap, _Class8_brand = new WeakSet, class AuthClient {
7526
7635
  }
7527
7636
  }
7528
7637
  async initiateBackchannelAuthentication(options) {
7529
- const {configuration: configuration, serverMetadata: serverMetadata} = await _assertClassBrand(_Class8_brand, this, _discover).call(this);
7638
+ const {configuration: configuration, serverMetadata: serverMetadata} = await _assertClassBrand(_Class9_brand, this, _discover).call(this);
7530
7639
  const additionalParams = stripUndefinedProperties(_objectSpread2(_objectSpread2({}, _classPrivateFieldGet2(_options, this).authorizationParams), options === null || options === void 0 ? void 0 : options.authorizationParams));
7531
7640
  const params = new URLSearchParams(_objectSpread2(_objectSpread2({
7532
7641
  scope: DEFAULT_SCOPES
@@ -7558,7 +7667,7 @@ _jwks = new WeakMap, _Class8_brand = new WeakSet, class AuthClient {
7558
7667
  }
7559
7668
  async backchannelAuthenticationGrant(_ref2) {
7560
7669
  let {authReqId: authReqId} = _ref2;
7561
- const {configuration: configuration} = await _assertClassBrand(_Class8_brand, this, _discover).call(this);
7670
+ const {configuration: configuration} = await _assertClassBrand(_Class9_brand, this, _discover).call(this);
7562
7671
  const params = new URLSearchParams({
7563
7672
  auth_req_id: authReqId
7564
7673
  });
@@ -7593,10 +7702,10 @@ _jwks = new WeakMap, _Class8_brand = new WeakSet, class AuthClient {
7593
7702
  }
7594
7703
  }
7595
7704
  async exchangeToken(options) {
7596
- return "connection" in options ? _assertClassBrand(_Class8_brand, this, _exchangeTokenVaultToken).call(this, options) : _assertClassBrand(_Class8_brand, this, _exchangeProfileToken).call(this, options);
7705
+ return "connection" in options ? _assertClassBrand(_Class9_brand, this, _exchangeTokenVaultToken).call(this, options) : _assertClassBrand(_Class9_brand, this, _exchangeProfileToken).call(this, options);
7597
7706
  }
7598
7707
  async getTokenByCode(url, options) {
7599
- const {configuration: configuration} = await _assertClassBrand(_Class8_brand, this, _discover).call(this);
7708
+ const {configuration: configuration} = await _assertClassBrand(_Class9_brand, this, _discover).call(this);
7600
7709
  try {
7601
7710
  const tokenEndpointResponse = await authorizationCodeGrant(configuration, url, {
7602
7711
  pkceCodeVerifier: options.codeVerifier
@@ -7607,16 +7716,23 @@ _jwks = new WeakMap, _Class8_brand = new WeakSet, class AuthClient {
7607
7716
  }
7608
7717
  }
7609
7718
  async getTokenByRefreshToken(options) {
7610
- const {configuration: configuration} = await _assertClassBrand(_Class8_brand, this, _discover).call(this);
7719
+ const {configuration: configuration} = await _assertClassBrand(_Class9_brand, this, _discover).call(this);
7720
+ const additionalParameters = new URLSearchParams;
7721
+ if (options.audience) {
7722
+ additionalParameters.append("audience", options.audience);
7723
+ }
7724
+ if (options.scope) {
7725
+ additionalParameters.append("scope", options.scope);
7726
+ }
7611
7727
  try {
7612
- const tokenEndpointResponse = await refreshTokenGrant(configuration, options.refreshToken);
7728
+ const tokenEndpointResponse = await refreshTokenGrant(configuration, options.refreshToken, additionalParameters);
7613
7729
  return TokenResponse.fromTokenEndpointResponse(tokenEndpointResponse);
7614
7730
  } catch (e) {
7615
7731
  throw new TokenByRefreshTokenError("The access token has expired and there was an error while trying to refresh it.", e);
7616
7732
  }
7617
7733
  }
7618
7734
  async getTokenByClientCredentials(options) {
7619
- const {configuration: configuration} = await _assertClassBrand(_Class8_brand, this, _discover).call(this);
7735
+ const {configuration: configuration} = await _assertClassBrand(_Class9_brand, this, _discover).call(this);
7620
7736
  try {
7621
7737
  const params = new URLSearchParams({
7622
7738
  audience: options.audience
@@ -7631,7 +7747,7 @@ _jwks = new WeakMap, _Class8_brand = new WeakSet, class AuthClient {
7631
7747
  }
7632
7748
  }
7633
7749
  async buildLogoutUrl(options) {
7634
- const {configuration: configuration, serverMetadata: serverMetadata} = await _assertClassBrand(_Class8_brand, this, _discover).call(this);
7750
+ const {configuration: configuration, serverMetadata: serverMetadata} = await _assertClassBrand(_Class9_brand, this, _discover).call(this);
7635
7751
  if (!serverMetadata.end_session_endpoint) {
7636
7752
  const url = new URL("https://".concat(_classPrivateFieldGet2(_options, this).domain, "/v2/logout"));
7637
7753
  url.searchParams.set("returnTo", options.returnTo);
@@ -7643,9 +7759,13 @@ _jwks = new WeakMap, _Class8_brand = new WeakSet, class AuthClient {
7643
7759
  });
7644
7760
  }
7645
7761
  async verifyLogoutToken(options) {
7646
- const {serverMetadata: serverMetadata} = await _assertClassBrand(_Class8_brand, this, _discover).call(this);
7647
- _classPrivateFieldGet2(_jwks, this) || _classPrivateFieldSet2(_jwks, this, createRemoteJWKSet(new URL(serverMetadata.jwks_uri), {
7648
- [customFetch]: _classPrivateFieldGet2(_options, this).customFetch
7762
+ const {serverMetadata: serverMetadata} = await _assertClassBrand(_Class9_brand, this, _discover).call(this);
7763
+ const cacheConfig = resolveCacheConfig(_classPrivateFieldGet2(_options, this).discoveryCache);
7764
+ const jwksUri = serverMetadata.jwks_uri;
7765
+ _classPrivateFieldGet2(_jwks, this) || _classPrivateFieldSet2(_jwks, this, createRemoteJWKSet(new URL(jwksUri), {
7766
+ cacheMaxAge: cacheConfig.ttlMs,
7767
+ [customFetch]: _classPrivateFieldGet2(_customFetch2, this),
7768
+ [jwksCache]: _classPrivateFieldGet2(_jwksCache, this)
7649
7769
  }));
7650
7770
  const {payload: payload} = await jwtVerify(options.logoutToken, _classPrivateFieldGet2(_jwks, this), {
7651
7771
  issuer: serverMetadata.issuer,
@@ -7684,6 +7804,18 @@ _jwks = new WeakMap, _Class8_brand = new WeakSet, class AuthClient {
7684
7804
  }
7685
7805
  });
7686
7806
 
7807
+ function _getDiscoveryCacheKey() {
7808
+ const domain = _classPrivateFieldGet2(_options, this).domain.toLowerCase();
7809
+ return "".concat(domain, "|mtls:").concat(_classPrivateFieldGet2(_options, this).useMtls ? "1" : "0");
7810
+ }
7811
+
7812
+ async function _createConfiguration(serverMetadata) {
7813
+ const clientAuth = await _assertClassBrand(_Class9_brand, this, _getClientAuth).call(this);
7814
+ const configuration = new Configuration(serverMetadata, _classPrivateFieldGet2(_options, this).clientId, _classPrivateFieldGet2(_options, this).clientSecret, clientAuth);
7815
+ configuration[customFetch$1] = _classPrivateFieldGet2(_customFetch2, this);
7816
+ return configuration;
7817
+ }
7818
+
7687
7819
  async function _discover() {
7688
7820
  if (_classPrivateFieldGet2(_configuration, this) && _classPrivateFieldGet2(_serverMetadata, this)) {
7689
7821
  return {
@@ -7691,14 +7823,58 @@ async function _discover() {
7691
7823
  serverMetadata: _classPrivateFieldGet2(_serverMetadata, this)
7692
7824
  };
7693
7825
  }
7694
- const clientAuth = await _assertClassBrand(_Class8_brand, this, _getClientAuth).call(this);
7695
- _classPrivateFieldSet2(_configuration, this, await discovery(new URL("https://".concat(_classPrivateFieldGet2(_options, this).domain)), _classPrivateFieldGet2(_options, this).clientId, {
7696
- use_mtls_endpoint_aliases: _classPrivateFieldGet2(_options, this).useMtls
7697
- }, clientAuth, {
7698
- [customFetch$1]: _classPrivateFieldGet2(_options, this).customFetch
7699
- }));
7700
- _classPrivateFieldSet2(_serverMetadata, this, _classPrivateFieldGet2(_configuration, this).serverMetadata());
7701
- _classPrivateFieldGet2(_configuration, this)[customFetch$1] = _classPrivateFieldGet2(_options, this).customFetch || fetch;
7826
+ const cacheKey = _assertClassBrand(_Class9_brand, this, _getDiscoveryCacheKey).call(this);
7827
+ const cached = _classPrivateFieldGet2(_discoveryCache, this).get(cacheKey);
7828
+ if (cached) {
7829
+ _classPrivateFieldSet2(_serverMetadata, this, cached.serverMetadata);
7830
+ _classPrivateFieldSet2(_configuration, this, await _assertClassBrand(_Class9_brand, this, _createConfiguration).call(this, cached.serverMetadata));
7831
+ return {
7832
+ configuration: _classPrivateFieldGet2(_configuration, this),
7833
+ serverMetadata: _classPrivateFieldGet2(_serverMetadata, this)
7834
+ };
7835
+ }
7836
+ const inFlight = _classPrivateFieldGet2(_inFlightDiscovery, this).get(cacheKey);
7837
+ if (inFlight) {
7838
+ const entry = await inFlight;
7839
+ _classPrivateFieldSet2(_serverMetadata, this, entry.serverMetadata);
7840
+ _classPrivateFieldSet2(_configuration, this, await _assertClassBrand(_Class9_brand, this, _createConfiguration).call(this, entry.serverMetadata));
7841
+ return {
7842
+ configuration: _classPrivateFieldGet2(_configuration, this),
7843
+ serverMetadata: _classPrivateFieldGet2(_serverMetadata, this)
7844
+ };
7845
+ }
7846
+ const discoveryPromise = (async () => {
7847
+ const clientAuth = await _assertClassBrand(_Class9_brand, this, _getClientAuth).call(this);
7848
+ const configuration = await discovery(new URL("https://".concat(_classPrivateFieldGet2(_options, this).domain)), _classPrivateFieldGet2(_options, this).clientId, {
7849
+ use_mtls_endpoint_aliases: _classPrivateFieldGet2(_options, this).useMtls
7850
+ }, clientAuth, {
7851
+ [customFetch$1]: _classPrivateFieldGet2(_customFetch2, this)
7852
+ });
7853
+ const serverMetadata = configuration.serverMetadata();
7854
+ _classPrivateFieldGet2(_discoveryCache, this).set(cacheKey, {
7855
+ serverMetadata: serverMetadata
7856
+ });
7857
+ return {
7858
+ configuration: configuration,
7859
+ serverMetadata: serverMetadata
7860
+ };
7861
+ })();
7862
+ const inFlightEntry = discoveryPromise.then(_ref3 => {
7863
+ let {serverMetadata: serverMetadata} = _ref3;
7864
+ return {
7865
+ serverMetadata: serverMetadata
7866
+ };
7867
+ });
7868
+ void inFlightEntry.catch(() => void 0);
7869
+ _classPrivateFieldGet2(_inFlightDiscovery, this).set(cacheKey, inFlightEntry);
7870
+ try {
7871
+ const {configuration: configuration, serverMetadata: serverMetadata} = await discoveryPromise;
7872
+ _classPrivateFieldSet2(_configuration, this, configuration);
7873
+ _classPrivateFieldSet2(_serverMetadata, this, serverMetadata);
7874
+ _classPrivateFieldGet2(_configuration, this)[customFetch$1] = _classPrivateFieldGet2(_customFetch2, this);
7875
+ } finally {
7876
+ _classPrivateFieldGet2(_inFlightDiscovery, this).delete(cacheKey);
7877
+ }
7702
7878
  return {
7703
7879
  configuration: _classPrivateFieldGet2(_configuration, this),
7704
7880
  serverMetadata: _classPrivateFieldGet2(_serverMetadata, this)
@@ -7707,7 +7883,7 @@ async function _discover() {
7707
7883
 
7708
7884
  async function _exchangeTokenVaultToken(options) {
7709
7885
  var _options$subjectToken, _options$requestedTok;
7710
- const {configuration: configuration} = await _assertClassBrand(_Class8_brand, this, _discover).call(this);
7886
+ const {configuration: configuration} = await _assertClassBrand(_Class9_brand, this, _discover).call(this);
7711
7887
  if ("audience" in options || "resource" in options) {
7712
7888
  throw new TokenExchangeError("audience and resource parameters are not supported for Token Vault exchanges");
7713
7889
  }
@@ -7734,7 +7910,7 @@ async function _exchangeTokenVaultToken(options) {
7734
7910
  }
7735
7911
 
7736
7912
  async function _exchangeProfileToken(options) {
7737
- const {configuration: configuration} = await _assertClassBrand(_Class8_brand, this, _discover).call(this);
7913
+ const {configuration: configuration} = await _assertClassBrand(_Class9_brand, this, _discover).call(this);
7738
7914
  validateSubjectToken(options.subjectToken);
7739
7915
  const tokenRequestParams = new URLSearchParams({
7740
7916
  subject_token_type: options.subjectTokenType,
@@ -7762,21 +7938,29 @@ async function _exchangeProfileToken(options) {
7762
7938
  }
7763
7939
 
7764
7940
  async function _getClientAuth() {
7765
- if (!_classPrivateFieldGet2(_options, this).clientSecret && !_classPrivateFieldGet2(_options, this).clientAssertionSigningKey && !_classPrivateFieldGet2(_options, this).useMtls) {
7766
- throw new MissingClientAuthError;
7767
- }
7768
- if (_classPrivateFieldGet2(_options, this).useMtls) {
7769
- return TlsClientAuth();
7770
- }
7771
- let clientPrivateKey = _classPrivateFieldGet2(_options, this).clientAssertionSigningKey;
7772
- if (clientPrivateKey && !(clientPrivateKey instanceof CryptoKey)) {
7773
- clientPrivateKey = await importPKCS8(clientPrivateKey, _classPrivateFieldGet2(_options, this).clientAssertionSigningAlg || "RS256");
7941
+ if (!_classPrivateFieldGet2(_clientAuthPromise, this)) {
7942
+ _classPrivateFieldSet2(_clientAuthPromise, this, (async () => {
7943
+ if (!_classPrivateFieldGet2(_options, this).clientSecret && !_classPrivateFieldGet2(_options, this).clientAssertionSigningKey && !_classPrivateFieldGet2(_options, this).useMtls) {
7944
+ throw new MissingClientAuthError;
7945
+ }
7946
+ if (_classPrivateFieldGet2(_options, this).useMtls) {
7947
+ return TlsClientAuth();
7948
+ }
7949
+ let clientPrivateKey = _classPrivateFieldGet2(_options, this).clientAssertionSigningKey;
7950
+ if (clientPrivateKey && !(clientPrivateKey instanceof CryptoKey)) {
7951
+ clientPrivateKey = await importPKCS8(clientPrivateKey, _classPrivateFieldGet2(_options, this).clientAssertionSigningAlg || "RS256");
7952
+ }
7953
+ return clientPrivateKey ? PrivateKeyJwt(clientPrivateKey) : ClientSecretPost(_classPrivateFieldGet2(_options, this).clientSecret);
7954
+ })().catch(error => {
7955
+ _classPrivateFieldSet2(_clientAuthPromise, this, void 0);
7956
+ throw error;
7957
+ }));
7774
7958
  }
7775
- return clientPrivateKey ? PrivateKeyJwt(clientPrivateKey) : ClientSecretPost(_classPrivateFieldGet2(_options, this).clientSecret);
7959
+ return _classPrivateFieldGet2(_clientAuthPromise, this);
7776
7960
  }
7777
7961
 
7778
7962
  async function _buildAuthorizationUrl(options) {
7779
- const {configuration: configuration} = await _assertClassBrand(_Class8_brand, this, _discover).call(this);
7963
+ const {configuration: configuration} = await _assertClassBrand(_Class9_brand, this, _discover).call(this);
7780
7964
  const codeChallengeMethod = "S256";
7781
7965
  const codeVerifier = randomPKCECodeVerifier();
7782
7966
  const codeChallenge = await calculatePKCECodeChallenge(codeVerifier);
@@ -7901,15 +8085,15 @@ class MfaApiClient {
7901
8085
  if (!((_a = context === null || context === void 0 ? void 0 : context.mfaRequirements) === null || _a === void 0 ? void 0 : _a.challenge) || context.mfaRequirements.challenge.length === 0) {
7902
8086
  throw new MfaListAuthenticatorsError("invalid_request", "challengeType is required and must contain at least one challenge type, please check mfa_required error payload");
7903
8087
  }
7904
- const challengeTypes = context.mfaRequirements.challenge.map((c => c.type));
8088
+ const challengeTypes = context.mfaRequirements.challenge.map(c => c.type);
7905
8089
  try {
7906
8090
  const allAuthenticators = await this.authJsMfaClient.listAuthenticators({
7907
8091
  mfaToken: mfaToken
7908
8092
  });
7909
- return allAuthenticators.filter((auth => {
8093
+ return allAuthenticators.filter(auth => {
7910
8094
  if (!auth.type) return false;
7911
8095
  return challengeTypes.includes(auth.type);
7912
- }));
8096
+ });
7913
8097
  } catch (error) {
7914
8098
  if (error instanceof MfaListAuthenticatorsError$1) {
7915
8099
  throw new MfaListAuthenticatorsError((_b = error.cause) === null || _b === void 0 ? void 0 : _b.error, error.message);
@@ -8100,6 +8284,31 @@ class Auth0Client {
8100
8284
  });
8101
8285
  }
8102
8286
  }
8287
+ _extractSessionTransferToken(paramName) {
8288
+ const params = new URLSearchParams(window.location.search);
8289
+ return params.get(paramName) || undefined;
8290
+ }
8291
+ _clearSessionTransferTokenFromUrl(paramName) {
8292
+ try {
8293
+ const url = new URL(window.location.href);
8294
+ if (url.searchParams.has(paramName)) {
8295
+ url.searchParams.delete(paramName);
8296
+ window.history.replaceState({}, "", url.toString());
8297
+ }
8298
+ } catch (_a) {}
8299
+ }
8300
+ _applySessionTransferToken(authorizationParams) {
8301
+ const paramName = this.options.sessionTransferTokenQueryParamName;
8302
+ if (!paramName || authorizationParams.session_transfer_token) {
8303
+ return authorizationParams;
8304
+ }
8305
+ const token = this._extractSessionTransferToken(paramName);
8306
+ if (!token) return authorizationParams;
8307
+ this._clearSessionTransferTokenFromUrl(paramName);
8308
+ return Object.assign(Object.assign({}, authorizationParams), {
8309
+ session_transfer_token: token
8310
+ });
8311
+ }
8103
8312
  async _prepareAuthorizeUrl(authorizationParams, authorizeOptions, fallbackRedirectUri) {
8104
8313
  var _a;
8105
8314
  const state = encode$2(createRandomString());
@@ -8130,7 +8339,8 @@ class Auth0Client {
8130
8339
  throw new PopupOpenError;
8131
8340
  }
8132
8341
  }
8133
- const params = await this._prepareAuthorizeUrl(options.authorizationParams || {}, {
8342
+ const authorizationParams = this._applySessionTransferToken(options.authorizationParams || {});
8343
+ const params = await this._prepareAuthorizeUrl(authorizationParams, {
8134
8344
  response_mode: "web_message"
8135
8345
  }, window.location.origin);
8136
8346
  config.popup.location.href = params.url;
@@ -8168,7 +8378,8 @@ class Auth0Client {
8168
8378
  var _a;
8169
8379
  const _b = patchOpenUrlWithOnRedirect(options), {openUrl: openUrl, fragment: fragment, appState: appState} = _b, urlOptions = __rest(_b, [ "openUrl", "fragment", "appState" ]);
8170
8380
  const organization = ((_a = urlOptions.authorizationParams) === null || _a === void 0 ? void 0 : _a.organization) || this.options.authorizationParams.organization;
8171
- const _c = await this._prepareAuthorizeUrl(urlOptions.authorizationParams || {}), {url: url} = _c, transaction = __rest(_c, [ "url" ]);
8381
+ const authorizationParams = this._applySessionTransferToken(urlOptions.authorizationParams || {});
8382
+ const _c = await this._prepareAuthorizeUrl(authorizationParams), {url: url} = _c, transaction = __rest(_c, [ "url" ]);
8172
8383
  this.transactionManager.create(Object.assign(Object.assign(Object.assign({}, transaction), {
8173
8384
  appState: appState,
8174
8385
  response_type: exports.ResponseType.Code
@@ -8275,7 +8486,7 @@ class Auth0Client {
8275
8486
  scope: scopesToRequest(this.scope, (_a = options.authorizationParams) === null || _a === void 0 ? void 0 : _a.scope, ((_b = options.authorizationParams) === null || _b === void 0 ? void 0 : _b.audience) || this.options.authorizationParams.audience)
8276
8487
  })
8277
8488
  });
8278
- const result = await singlePromise((() => this._getTokenSilently(localOptions)), "".concat(this.options.clientId, "::").concat(localOptions.authorizationParams.audience, "::").concat(localOptions.authorizationParams.scope));
8489
+ const result = await singlePromise(() => this._getTokenSilently(localOptions), "".concat(this.options.clientId, "::").concat(localOptions.authorizationParams.audience, "::").concat(localOptions.authorizationParams.scope));
8279
8490
  return options.detailedResponse ? result : result === null || result === void 0 ? void 0 : result.access_token;
8280
8491
  }
8281
8492
  async _getTokenSilently(options) {
@@ -8296,7 +8507,7 @@ class Auth0Client {
8296
8507
  }
8297
8508
  const lockKey = buildGetTokenSilentlyLockKey(this.options.clientId, getTokenOptions.authorizationParams.audience || "default");
8298
8509
  try {
8299
- return await this.lockManager.runWithLock(lockKey, 5e3, (async () => {
8510
+ return await this.lockManager.runWithLock(lockKey, 5e3, async () => {
8300
8511
  if (cacheMode !== "off") {
8301
8512
  const entry = await this._getEntryFromCache({
8302
8513
  scope: getTokenOptions.authorizationParams.scope,
@@ -8318,7 +8529,7 @@ class Auth0Client {
8318
8529
  } : null), {
8319
8530
  expires_in: expires_in
8320
8531
  });
8321
- }));
8532
+ });
8322
8533
  } catch (error) {
8323
8534
  if (this._isInteractiveError(error) && this.options.interactiveErrorHandler === "popup") {
8324
8535
  return await this._handleInteractiveErrorWithPopup(getTokenOptions);
@@ -8412,7 +8623,7 @@ class Auth0Client {
8412
8623
  async _getTokenFromIFrame(options) {
8413
8624
  const iframeLockKey = buildIframeLockKey(this.options.clientId);
8414
8625
  try {
8415
- return await this.lockManager.runWithLock(iframeLockKey, 5e3, (async () => {
8626
+ return await this.lockManager.runWithLock(iframeLockKey, 5e3, async () => {
8416
8627
  const params = Object.assign(Object.assign({}, options.authorizationParams), {
8417
8628
  prompt: "none"
8418
8629
  });
@@ -8452,7 +8663,7 @@ class Auth0Client {
8452
8663
  oauthTokenScope: tokenResult.scope,
8453
8664
  audience: audience
8454
8665
  });
8455
- }));
8666
+ });
8456
8667
  } catch (e) {
8457
8668
  if (e.error === "login_required") {
8458
8669
  const shouldSkipLogoutForMfaStepUp = e instanceof GenericError && this._isIframeMfaError(e) && this.options.interactiveErrorHandler === "popup";