{"version":3,"file":"static/js/main.2663c732.js","mappings":"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","sources":["../node_modules/crypto-js/core.js","../node_modules/crypto-js/enc-base64.js","../node_modules/crypto-js/enc-utf8.js","../node_modules/crypto-js/sha256.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../webpack/bootstrap","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/jwt-decode/lib/atob.js","../node_modules/jwt-decode/lib/base64_url_decode.js","../node_modules/jwt-decode/lib/index.js","../node_modules/oidc-client-ts/src/utils/Logger.ts","../node_modules/oidc-client-ts/src/utils/CryptoUtils.ts","../node_modules/oidc-client-ts/src/utils/Event.ts","../node_modules/oidc-client-ts/src/utils/JwtUtils.ts","../node_modules/oidc-client-ts/src/utils/PopupUtils.ts","../node_modules/oidc-client-ts/src/utils/Timer.ts","../node_modules/oidc-client-ts/src/utils/UrlUtils.ts","../node_modules/oidc-client-ts/src/errors/ErrorResponse.ts","../node_modules/oidc-client-ts/src/errors/ErrorTimeout.ts","../node_modules/oidc-client-ts/src/AccessTokenEvents.ts","../node_modules/oidc-client-ts/src/CheckSessionIFrame.ts","../node_modules/oidc-client-ts/src/InMemoryWebStorage.ts","../node_modules/oidc-client-ts/src/JsonService.ts","../node_modules/oidc-client-ts/src/MetadataService.ts","../node_modules/oidc-client-ts/src/WebStorageStateStore.ts","../node_modules/oidc-client-ts/src/OidcClientSettings.ts","../node_modules/oidc-client-ts/src/UserInfoService.ts","../node_modules/oidc-client-ts/src/TokenClient.ts","../node_modules/oidc-client-ts/src/ResponseValidator.ts","../node_modules/oidc-client-ts/src/State.ts","../node_modules/oidc-client-ts/src/SigninState.ts","../node_modules/oidc-client-ts/src/SigninRequest.ts","../node_modules/oidc-client-ts/src/SigninResponse.ts","../node_modules/oidc-client-ts/src/SignoutRequest.ts","../node_modules/oidc-client-ts/src/SignoutResponse.ts","../node_modules/oidc-client-ts/src/ClaimsService.ts","../node_modules/oidc-client-ts/src/OidcClient.ts","../node_modules/oidc-client-ts/src/SessionMonitor.ts","../node_modules/oidc-client-ts/src/User.ts","../node_modules/oidc-client-ts/src/navigators/AbstractChildWindow.ts","../node_modules/oidc-client-ts/src/UserManagerSettings.ts","../node_modules/oidc-client-ts/src/navigators/IFrameWindow.ts","../node_modules/oidc-client-ts/src/navigators/IFrameNavigator.ts","../node_modules/oidc-client-ts/src/navigators/PopupWindow.ts","../node_modules/oidc-client-ts/src/navigators/PopupNavigator.ts","../node_modules/oidc-client-ts/src/navigators/RedirectNavigator.ts","../node_modules/oidc-client-ts/src/UserManagerEvents.ts","../node_modules/oidc-client-ts/src/SilentRenewService.ts","../node_modules/oidc-client-ts/src/RefreshState.ts","../node_modules/react-oidc-context/src/AuthContext.ts","../node_modules/react-oidc-context/src/AuthState.ts","../node_modules/react-oidc-context/src/utils.ts","../node_modules/@remix-run/router/history.ts","../node_modules/react-oidc-context/src/reducer.ts","../node_modules/react-oidc-context/src/AuthProvider.tsx","../node_modules/oidc-client-ts/src/UserManager.ts","../node_modules/react-oidc-context/src/useAuth.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router/index.ts","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","App.js","reportWebVitals.js","index.js"],"sourcesContent":[";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS.enc.Utf8;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"cb11bad1\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"oidc:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkoidc\"] = self[\"webpackChunkoidc\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nfunction InvalidCharacterError(message) {\n this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = \"InvalidCharacterError\";\n\nfunction polyfill(input) {\n var str = String(input).replace(/=+$/, \"\");\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\n \"'atob' failed: The string to be decoded is not correctly encoded.\"\n );\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = \"\";\n // get next character\n (buffer = str.charAt(idx++));\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer &&\n ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ?\n (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6)))) :\n 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n}\n\nexport default (typeof window !== \"undefined\" &&\n window.atob &&\n window.atob.bind(window)) ||\npolyfill;","import atob from \"./atob\";\n\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(\n atob(str).replace(/(.)/g, function(m, p) {\n var code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n })\n );\n}\n\nexport default function(str) {\n var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw \"Illegal base64url string!\";\n }\n\n try {\n return b64DecodeUnicode(output);\n } catch (err) {\n return atob(output);\n }\n}","\"use strict\";\n\nimport base64_url_decode from \"./base64_url_decode\";\n\nexport function InvalidTokenError(message) {\n this.message = message;\n}\n\nInvalidTokenError.prototype = new Error();\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\n\nexport default function(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified\");\n }\n\n options = options || {};\n var pos = options.header === true ? 0 : 1;\n try {\n return JSON.parse(base64_url_decode(token.split(\".\")[pos]));\n } catch (e) {\n throw new InvalidTokenError(\"Invalid token specified: \" + e.message);\n }\n}","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\n/**\n * Native interface\n *\n * @public\n */\nexport interface ILogger {\n debug(...args: unknown[]): void;\n info(...args: unknown[]): void;\n warn(...args: unknown[]): void;\n error(...args: unknown[]): void;\n}\n\nconst nopLogger: ILogger = {\n debug: () => undefined,\n info: () => undefined,\n warn: () => undefined,\n error: () => undefined,\n};\n\nlet level: number;\nlet logger: ILogger;\n\n/**\n * Log levels\n *\n * @public\n */\nexport enum Log {\n NONE,\n ERROR,\n WARN,\n INFO,\n DEBUG\n}\n\n/**\n * Log manager\n *\n * @public\n */\nexport namespace Log { // eslint-disable-line @typescript-eslint/no-namespace\n export function reset(): void {\n level = Log.INFO;\n logger = nopLogger;\n }\n\n export function setLevel(value: Log): void {\n if (!(Log.NONE <= value && value <= Log.DEBUG)) {\n throw new Error(\"Invalid log level\");\n }\n level = value;\n }\n\n export function setLogger(value: ILogger): void {\n logger = value;\n }\n}\n\n/**\n * Internal logger instance\n *\n * @public\n */\nexport class Logger {\n private _method?: string;\n public constructor(private _name: string) {}\n\n /* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */\n public debug(...args: unknown[]): void {\n if (level >= Log.DEBUG) {\n logger.debug(Logger._format(this._name, this._method), ...args);\n }\n }\n public info(...args: unknown[]): void {\n if (level >= Log.INFO) {\n logger.info(Logger._format(this._name, this._method), ...args);\n }\n }\n public warn(...args: unknown[]): void {\n if (level >= Log.WARN) {\n logger.warn(Logger._format(this._name, this._method), ...args);\n }\n }\n public error(...args: unknown[]): void {\n if (level >= Log.ERROR) {\n logger.error(Logger._format(this._name, this._method), ...args);\n }\n }\n /* eslint-enable @typescript-eslint/no-unsafe-enum-comparison */\n\n public throw(err: Error): never {\n this.error(err);\n throw err;\n }\n\n public create(method: string): Logger {\n const methodLogger: Logger = Object.create(this);\n methodLogger._method = method;\n methodLogger.debug(\"begin\");\n return methodLogger;\n }\n\n public static createStatic(name: string, staticMethod: string): Logger {\n const staticLogger = new Logger(`${name}.${staticMethod}`);\n staticLogger.debug(\"begin\");\n return staticLogger;\n }\n\n private static _format(name: string, method?: string) {\n const prefix = `[${name}]`;\n return method ? `${prefix} ${method}:` : prefix;\n }\n\n /* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */\n // helpers for static class methods\n public static debug(name: string, ...args: unknown[]): void {\n if (level >= Log.DEBUG) {\n logger.debug(Logger._format(name), ...args);\n }\n }\n public static info(name: string, ...args: unknown[]): void {\n if (level >= Log.INFO) {\n logger.info(Logger._format(name), ...args);\n }\n }\n public static warn(name: string, ...args: unknown[]): void {\n if (level >= Log.WARN) {\n logger.warn(Logger._format(name), ...args);\n }\n }\n public static error(name: string, ...args: unknown[]): void {\n if (level >= Log.ERROR) {\n logger.error(Logger._format(name), ...args);\n }\n }\n /* eslint-enable @typescript-eslint/no-unsafe-enum-comparison */\n}\n\nLog.reset();\n","import CryptoJS from \"crypto-js/core.js\";\nimport sha256 from \"crypto-js/sha256.js\";\nimport Base64 from \"crypto-js/enc-base64.js\";\nimport Utf8 from \"crypto-js/enc-utf8.js\";\n\nimport { Logger } from \"./Logger\";\n\nconst UUID_V4_TEMPLATE = \"10000000-1000-4000-8000-100000000000\";\n\n/**\n * @internal\n */\nexport class CryptoUtils {\n private static _randomWord(): number {\n return CryptoJS.lib.WordArray.random(1).words[0];\n }\n\n /**\n * Generates RFC4122 version 4 guid\n */\n public static generateUUIDv4(): string {\n const uuid = UUID_V4_TEMPLATE.replace(/[018]/g, c =>\n (+c ^ CryptoUtils._randomWord() & 15 >> +c / 4).toString(16),\n );\n return uuid.replace(/-/g, \"\");\n }\n\n /**\n * PKCE: Generate a code verifier\n */\n public static generateCodeVerifier(): string {\n return CryptoUtils.generateUUIDv4() + CryptoUtils.generateUUIDv4() + CryptoUtils.generateUUIDv4();\n }\n\n /**\n * PKCE: Generate a code challenge\n */\n public static generateCodeChallenge(code_verifier: string): string {\n try {\n const hashed = sha256(code_verifier);\n return Base64.stringify(hashed).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n }\n catch (err) {\n Logger.error(\"CryptoUtils.generateCodeChallenge\", err);\n throw err;\n }\n }\n\n /**\n * Generates a base64-encoded string for a basic auth header\n */\n public static generateBasicAuth(client_id: string, client_secret: string): string {\n const basicAuth = Utf8.parse([client_id, client_secret].join(\":\"));\n return Base64.stringify(basicAuth);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"./Logger\";\n\n/**\n * @internal\n */\nexport type Callback = (...ev: EventType) => (Promise | void);\n\n/**\n * @internal\n */\nexport class Event {\n protected readonly _logger = new Logger(`Event('${this._name}')`);\n\n private _callbacks: Array> = [];\n\n public constructor(protected readonly _name: string) {}\n\n public addHandler(cb: Callback): () => void {\n this._callbacks.push(cb);\n return () => this.removeHandler(cb);\n }\n\n public removeHandler(cb: Callback): void {\n const idx = this._callbacks.lastIndexOf(cb);\n if (idx >= 0) {\n this._callbacks.splice(idx, 1);\n }\n }\n\n public raise(...ev: EventType): void {\n this._logger.debug(\"raise:\", ...ev);\n for (const cb of this._callbacks) {\n void cb(...ev);\n }\n }\n}\n","import jwt_decode from \"jwt-decode\";\n\nimport { Logger } from \"./Logger\";\nimport type { JwtClaims } from \"../Claims\";\n\n/**\n * @internal\n */\nexport class JwtUtils {\n // IMPORTANT: doesn't validate the token\n public static decode(token: string): JwtClaims {\n try {\n return jwt_decode(token);\n }\n catch (err) {\n Logger.error(\"JwtUtils.decode\", err);\n throw err;\n }\n }\n}\n","/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/open#window_features\n *\n * @public\n */\nexport interface PopupWindowFeatures {\n left?: number;\n top?: number;\n width?: number;\n height?: number;\n menubar?: boolean | string;\n toolbar?: boolean | string;\n location?: boolean | string;\n status?: boolean | string;\n resizable?: boolean | string;\n scrollbars?: boolean | string;\n /** Close popup window after time in seconds, by default it is -1. To enable this feature set value greater than 0 */\n closePopupWindowAfterInSeconds?: number;\n\n [k: string]: boolean | string | number | undefined;\n}\n\nexport class PopupUtils {\n /**\n * Populates a map of window features with a placement centered in front of\n * the current window. If no explicit width is given, a default value is\n * binned into [800, 720, 600, 480, 360] based on the current window's width.\n */\n static center({ ...features }: PopupWindowFeatures): PopupWindowFeatures {\n if (features.width == null)\n features.width = [800, 720, 600, 480].find(width => width <= window.outerWidth / 1.618) ?? 360;\n features.left ??= Math.max(0, Math.round(window.screenX + (window.outerWidth - features.width) / 2));\n if (features.height != null)\n features.top ??= Math.max(0, Math.round(window.screenY + (window.outerHeight - features.height) / 2));\n return features;\n }\n\n static serialize(features: PopupWindowFeatures): string {\n return Object.entries(features)\n .filter(([, value]) => value != null)\n .map(([key, value]) => `${key}=${typeof value !== \"boolean\" ? value as string : value ? \"yes\" : \"no\"}`)\n .join(\",\");\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Event } from \"./Event\";\nimport { Logger } from \"./Logger\";\n\n/**\n * @internal\n */\nexport class Timer extends Event<[void]> {\n protected readonly _logger = new Logger(`Timer('${this._name}')`);\n private _timerHandle: ReturnType | null = null;\n private _expiration = 0;\n\n // get the time\n public static getEpochTime(): number {\n return Math.floor(Date.now() / 1000);\n }\n\n public init(durationInSeconds: number): void {\n const logger = this._logger.create(\"init\");\n durationInSeconds = Math.max(Math.floor(durationInSeconds), 1);\n const expiration = Timer.getEpochTime() + durationInSeconds;\n if (this.expiration === expiration && this._timerHandle) {\n // no need to reinitialize to same expiration, so bail out\n logger.debug(\"skipping since already initialized for expiration at\", this.expiration);\n return;\n }\n\n this.cancel();\n\n logger.debug(\"using duration\", durationInSeconds);\n this._expiration = expiration;\n\n // we're using a fairly short timer and then checking the expiration in the\n // callback to handle scenarios where the browser device sleeps, and then\n // the timers end up getting delayed.\n const timerDurationInSeconds = Math.min(durationInSeconds, 5);\n this._timerHandle = setInterval(this._callback, timerDurationInSeconds * 1000);\n }\n\n public get expiration(): number {\n return this._expiration;\n }\n\n public cancel(): void {\n this._logger.create(\"cancel\");\n if (this._timerHandle) {\n clearInterval(this._timerHandle);\n this._timerHandle = null;\n }\n }\n\n protected _callback = (): void => {\n const diff = this._expiration - Timer.getEpochTime();\n this._logger.debug(\"timer completes in\", diff);\n\n if (this._expiration <= Timer.getEpochTime()) {\n this.cancel();\n super.raise();\n }\n };\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\n/**\n * @internal\n */\nexport class UrlUtils {\n public static readParams(url: string, responseMode: \"query\" | \"fragment\" = \"query\"): URLSearchParams {\n if (!url) throw new TypeError(\"Invalid URL\");\n // the base URL is irrelevant, it's just here to support relative url arguments\n const parsedUrl = new URL(url, \"http://127.0.0.1\");\n const params = parsedUrl[responseMode === \"fragment\" ? \"hash\" : \"search\"];\n return new URLSearchParams(params.slice(1));\n }\n}\n\n/**\n * @internal\n */\nexport const URL_STATE_DELIMITER = \";\";","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"../utils\";\n\n/**\n * Error class thrown in case of an authentication error.\n *\n * See https://openid.net/specs/openid-connect-core-1_0.html#AuthError\n *\n * @public\n */\nexport class ErrorResponse extends Error {\n /** Marker to detect class: \"ErrorResponse\" */\n public readonly name: string = \"ErrorResponse\";\n\n /** An error code string that can be used to classify the types of errors that occur and to respond to errors. */\n public readonly error: string | null;\n /** additional information that can help a developer identify the cause of the error.*/\n public readonly error_description: string | null;\n /**\n * URI identifying a human-readable web page with information about the error, used to provide the client\n developer with additional information about the error.\n */\n public readonly error_uri: string | null;\n\n /** custom state data set during the initial signin request */\n public state?: unknown;\n\n public readonly session_state: string | null;\n\n public url_state?: string;\n\n public constructor(\n args: {\n error?: string | null; error_description?: string | null; error_uri?: string | null;\n userState?: unknown; session_state?: string | null; url_state?: string;\n },\n /** The x-www-form-urlencoded request body sent to the authority server */\n public readonly form?: URLSearchParams,\n ) {\n super(args.error_description || args.error || \"\");\n\n if (!args.error) {\n Logger.error(\"ErrorResponse\", \"No error passed\");\n throw new Error(\"No error passed\");\n }\n\n this.error = args.error;\n this.error_description = args.error_description ?? null;\n this.error_uri = args.error_uri ?? null;\n\n this.state = args.userState;\n this.session_state = args.session_state ?? null;\n this.url_state = args.url_state;\n }\n}\n","// Copyright (C) 2021 AuthTS Contributors\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\n/**\n * Error class thrown in case of network timeouts (e.g IFrame time out).\n *\n * @public\n */\nexport class ErrorTimeout extends Error {\n /** Marker to detect class: \"ErrorTimeout\" */\n public readonly name: string = \"ErrorTimeout\";\n\n public constructor(message?: string) {\n super(message);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, Timer } from \"./utils\";\nimport type { User } from \"./User\";\n\n/**\n * @public\n */\nexport type AccessTokenCallback = (...ev: unknown[]) => (Promise | void);\n\n/**\n * @public\n */\nexport class AccessTokenEvents {\n protected readonly _logger = new Logger(\"AccessTokenEvents\");\n\n private readonly _expiringTimer = new Timer(\"Access token expiring\");\n private readonly _expiredTimer = new Timer(\"Access token expired\");\n private readonly _expiringNotificationTimeInSeconds: number;\n\n public constructor(args: { expiringNotificationTimeInSeconds: number }) {\n this._expiringNotificationTimeInSeconds = args.expiringNotificationTimeInSeconds;\n }\n\n public load(container: User): void {\n const logger = this._logger.create(\"load\");\n // only register events if there's an access token and it has an expiration\n if (container.access_token && container.expires_in !== undefined) {\n const duration = container.expires_in;\n logger.debug(\"access token present, remaining duration:\", duration);\n\n if (duration > 0) {\n // only register expiring if we still have time\n let expiring = duration - this._expiringNotificationTimeInSeconds;\n if (expiring <= 0) {\n expiring = 1;\n }\n\n logger.debug(\"registering expiring timer, raising in\", expiring, \"seconds\");\n this._expiringTimer.init(expiring);\n }\n else {\n logger.debug(\"canceling existing expiring timer because we're past expiration.\");\n this._expiringTimer.cancel();\n }\n\n // if it's negative, it will still fire\n const expired = duration + 1;\n logger.debug(\"registering expired timer, raising in\", expired, \"seconds\");\n this._expiredTimer.init(expired);\n }\n else {\n this._expiringTimer.cancel();\n this._expiredTimer.cancel();\n }\n }\n\n public unload(): void {\n this._logger.debug(\"unload: canceling existing access token timers\");\n this._expiringTimer.cancel();\n this._expiredTimer.cancel();\n }\n\n /**\n * Add callback: Raised prior to the access token expiring.\n */\n public addAccessTokenExpiring(cb: AccessTokenCallback): () => void {\n return this._expiringTimer.addHandler(cb);\n }\n /**\n * Remove callback: Raised prior to the access token expiring.\n */\n public removeAccessTokenExpiring(cb: AccessTokenCallback): void {\n this._expiringTimer.removeHandler(cb);\n }\n\n /**\n * Add callback: Raised after the access token has expired.\n */\n public addAccessTokenExpired(cb: AccessTokenCallback): () => void {\n return this._expiredTimer.addHandler(cb);\n }\n /**\n * Remove callback: Raised after the access token has expired.\n */\n public removeAccessTokenExpired(cb: AccessTokenCallback): void {\n this._expiredTimer.removeHandler(cb);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"./utils\";\n\n/**\n * @internal\n */\nexport class CheckSessionIFrame {\n private readonly _logger = new Logger(\"CheckSessionIFrame\");\n private _frame_origin: string;\n private _frame: HTMLIFrameElement;\n private _timer: ReturnType | null = null;\n private _session_state: string | null = null;\n\n public constructor(\n private _callback: () => Promise,\n private _client_id: string,\n url: string,\n private _intervalInSeconds: number,\n private _stopOnError: boolean,\n ) {\n const parsedUrl = new URL(url);\n this._frame_origin = parsedUrl.origin;\n\n this._frame = window.document.createElement(\"iframe\");\n\n // shotgun approach\n this._frame.style.visibility = \"hidden\";\n this._frame.style.position = \"fixed\";\n this._frame.style.left = \"-1000px\";\n this._frame.style.top = \"0\";\n this._frame.width = \"0\";\n this._frame.height = \"0\";\n this._frame.src = parsedUrl.href;\n }\n\n public load(): Promise {\n return new Promise((resolve) => {\n this._frame.onload = () => {\n resolve();\n };\n\n window.document.body.appendChild(this._frame);\n window.addEventListener(\"message\", this._message, false);\n });\n }\n\n private _message = (e: MessageEvent): void => {\n if (e.origin === this._frame_origin &&\n e.source === this._frame.contentWindow\n ) {\n if (e.data === \"error\") {\n this._logger.error(\"error message from check session op iframe\");\n if (this._stopOnError) {\n this.stop();\n }\n }\n else if (e.data === \"changed\") {\n this._logger.debug(\"changed message from check session op iframe\");\n this.stop();\n void this._callback();\n }\n else {\n this._logger.debug(e.data + \" message from check session op iframe\");\n }\n }\n };\n\n public start(session_state: string): void {\n if (this._session_state === session_state) {\n return;\n }\n\n this._logger.create(\"start\");\n\n this.stop();\n\n this._session_state = session_state;\n\n const send = () => {\n if (!this._frame.contentWindow || !this._session_state) {\n return;\n }\n\n this._frame.contentWindow.postMessage(this._client_id + \" \" + this._session_state, this._frame_origin);\n };\n\n // trigger now\n send();\n\n // and setup timer\n this._timer = setInterval(send, this._intervalInSeconds * 1000);\n }\n\n public stop(): void {\n this._logger.create(\"stop\");\n this._session_state = null;\n\n if (this._timer) {\n\n clearInterval(this._timer);\n this._timer = null;\n }\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"./utils\";\n\n/**\n * @public\n */\nexport class InMemoryWebStorage implements Storage {\n private readonly _logger = new Logger(\"InMemoryWebStorage\");\n private _data: Record = {};\n\n public clear(): void {\n this._logger.create(\"clear\");\n this._data = {};\n }\n\n public getItem(key: string): string {\n this._logger.create(`getItem('${key}')`);\n return this._data[key];\n }\n\n public setItem(key: string, value: string): void {\n this._logger.create(`setItem('${key}')`);\n this._data[key] = value;\n }\n\n public removeItem(key: string): void {\n this._logger.create(`removeItem('${key}')`);\n delete this._data[key];\n }\n\n public get length(): number {\n return Object.getOwnPropertyNames(this._data).length;\n }\n\n public key(index: number): string {\n return Object.getOwnPropertyNames(this._data)[index];\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { ErrorResponse, ErrorTimeout } from \"./errors\";\nimport type { ExtraHeader } from \"./OidcClientSettings\";\nimport { Logger } from \"./utils\";\n\n/**\n * @internal\n */\nexport type JwtHandler = (text: string) => Promise>;\n\n/**\n * @internal\n */\nexport interface GetJsonOpts {\n token?: string;\n credentials?: RequestCredentials;\n}\n\n/**\n * @internal\n */\nexport interface PostFormOpts {\n body: URLSearchParams;\n basicAuth?: string;\n timeoutInSeconds?: number;\n initCredentials?: \"same-origin\" | \"include\" | \"omit\";\n}\n\n/**\n * @internal\n */\nexport class JsonService {\n private readonly _logger = new Logger(\"JsonService\");\n\n private _contentTypes: string[] = [];\n\n public constructor(\n additionalContentTypes: string[] = [],\n private _jwtHandler: JwtHandler | null = null,\n private _extraHeaders: Record = {},\n ) {\n this._contentTypes.push(...additionalContentTypes, \"application/json\");\n if (_jwtHandler) {\n this._contentTypes.push(\"application/jwt\");\n }\n }\n\n protected async fetchWithTimeout(input: RequestInfo, init: RequestInit & { timeoutInSeconds?: number } = {}) {\n const { timeoutInSeconds, ...initFetch } = init;\n if (!timeoutInSeconds) {\n return await fetch(input, initFetch);\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeoutInSeconds * 1000);\n\n try {\n const response = await fetch(input, {\n ...init,\n signal: controller.signal,\n });\n return response;\n }\n catch (err) {\n if (err instanceof DOMException && err.name === \"AbortError\") {\n throw new ErrorTimeout(\"Network timed out\");\n }\n throw err;\n }\n finally {\n clearTimeout(timeoutId);\n }\n }\n\n public async getJson(url: string, {\n token,\n credentials,\n }: GetJsonOpts = {}): Promise> {\n const logger = this._logger.create(\"getJson\");\n const headers: HeadersInit = {\n \"Accept\": this._contentTypes.join(\", \"),\n };\n if (token) {\n logger.debug(\"token passed, setting Authorization header\");\n headers[\"Authorization\"] = \"Bearer \" + token;\n }\n\n this.appendExtraHeaders(headers);\n\n let response: Response;\n try {\n logger.debug(\"url:\", url);\n response = await this.fetchWithTimeout(url, { method: \"GET\", headers, credentials });\n }\n catch (err) {\n logger.error(\"Network Error\");\n throw err;\n }\n\n logger.debug(\"HTTP response received, status\", response.status);\n const contentType = response.headers.get(\"Content-Type\");\n if (contentType && !this._contentTypes.find(item => contentType.startsWith(item))) {\n logger.throw(new Error(`Invalid response Content-Type: ${(contentType ?? \"undefined\")}, from URL: ${url}`));\n }\n if (response.ok && this._jwtHandler && contentType?.startsWith(\"application/jwt\")) {\n return await this._jwtHandler(await response.text());\n }\n let json: Record;\n try {\n json = await response.json();\n }\n catch (err) {\n logger.error(\"Error parsing JSON response\", err);\n if (response.ok) throw err;\n throw new Error(`${response.statusText} (${response.status})`);\n }\n if (!response.ok) {\n logger.error(\"Error from server:\", json);\n if (json.error) {\n throw new ErrorResponse(json);\n }\n throw new Error(`${response.statusText} (${response.status}): ${JSON.stringify(json)}`);\n }\n return json;\n }\n\n public async postForm(url: string, {\n body,\n basicAuth,\n timeoutInSeconds,\n initCredentials,\n }: PostFormOpts): Promise> {\n const logger = this._logger.create(\"postForm\");\n const headers: HeadersInit = {\n \"Accept\": this._contentTypes.join(\", \"),\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n };\n if (basicAuth !== undefined) {\n headers[\"Authorization\"] = \"Basic \" + basicAuth;\n }\n\n this.appendExtraHeaders(headers);\n\n let response: Response;\n try {\n logger.debug(\"url:\", url);\n response = await this.fetchWithTimeout(url, { method: \"POST\", headers, body, timeoutInSeconds, credentials: initCredentials });\n }\n catch (err) {\n logger.error(\"Network error\");\n throw err;\n }\n\n logger.debug(\"HTTP response received, status\", response.status);\n const contentType = response.headers.get(\"Content-Type\");\n if (contentType && !this._contentTypes.find(item => contentType.startsWith(item))) {\n throw new Error(`Invalid response Content-Type: ${(contentType ?? \"undefined\")}, from URL: ${url}`);\n }\n\n const responseText = await response.text();\n\n let json: Record = {};\n if (responseText) {\n try {\n json = JSON.parse(responseText);\n }\n catch (err) {\n logger.error(\"Error parsing JSON response\", err);\n if (response.ok) throw err;\n throw new Error(`${response.statusText} (${response.status})`);\n }\n }\n\n if (!response.ok) {\n logger.error(\"Error from server:\", json);\n if (json.error) {\n throw new ErrorResponse(json, body);\n }\n throw new Error(`${response.statusText} (${response.status}): ${JSON.stringify(json)}`);\n }\n\n return json;\n }\n\n private appendExtraHeaders(\n headers: Record,\n ): void {\n const logger = this._logger.create(\"appendExtraHeaders\");\n const customKeys = Object.keys(this._extraHeaders);\n const protectedHeaders = [\n \"authorization\",\n \"accept\",\n \"content-type\",\n ];\n if (customKeys.length === 0) {\n return;\n }\n customKeys.forEach((headerName) => {\n if (protectedHeaders.includes(headerName.toLocaleLowerCase())) {\n logger.warn(\"Protected header could not be overridden\", headerName, protectedHeaders);\n return;\n }\n const content = (typeof this._extraHeaders[headerName] === \"function\") ?\n (this._extraHeaders[headerName] as ()=>string)() :\n this._extraHeaders[headerName];\n if (content && content !== \"\") {\n headers[headerName] = content as string;\n }\n });\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"./utils\";\nimport { JsonService } from \"./JsonService\";\nimport type { OidcClientSettingsStore, SigningKey } from \"./OidcClientSettings\";\nimport type { OidcMetadata } from \"./OidcMetadata\";\n\n/**\n * @public\n * @see https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata\n */\nexport class MetadataService {\n private readonly _logger = new Logger(\"MetadataService\");\n private readonly _jsonService;\n\n // cache\n private _metadataUrl: string;\n private _signingKeys: SigningKey[] | null = null;\n private _metadata: Partial | null = null;\n private _fetchRequestCredentials: RequestCredentials | undefined;\n\n public constructor(private readonly _settings: OidcClientSettingsStore) {\n this._metadataUrl = this._settings.metadataUrl;\n this._jsonService = new JsonService(\n [\"application/jwk-set+json\"],\n null,\n this._settings.extraHeaders,\n );\n if (this._settings.signingKeys) {\n this._logger.debug(\"using signingKeys from settings\");\n this._signingKeys = this._settings.signingKeys;\n }\n\n if (this._settings.metadata) {\n this._logger.debug(\"using metadata from settings\");\n this._metadata = this._settings.metadata;\n }\n\n if (this._settings.fetchRequestCredentials) {\n this._logger.debug(\"using fetchRequestCredentials from settings\");\n this._fetchRequestCredentials = this._settings.fetchRequestCredentials;\n }\n }\n\n public resetSigningKeys(): void {\n this._signingKeys = null;\n }\n\n public async getMetadata(): Promise> {\n const logger = this._logger.create(\"getMetadata\");\n if (this._metadata) {\n logger.debug(\"using cached values\");\n return this._metadata;\n }\n\n if (!this._metadataUrl) {\n logger.throw(new Error(\"No authority or metadataUrl configured on settings\"));\n throw null;\n }\n\n logger.debug(\"getting metadata from\", this._metadataUrl);\n const metadata = await this._jsonService.getJson(this._metadataUrl, { credentials: this._fetchRequestCredentials });\n\n logger.debug(\"merging remote JSON with seed metadata\");\n this._metadata = Object.assign({}, this._settings.metadataSeed, metadata);\n return this._metadata;\n }\n\n public getIssuer(): Promise {\n return this._getMetadataProperty(\"issuer\") as Promise;\n }\n\n public getAuthorizationEndpoint(): Promise {\n return this._getMetadataProperty(\"authorization_endpoint\") as Promise;\n }\n\n public getUserInfoEndpoint(): Promise {\n return this._getMetadataProperty(\"userinfo_endpoint\") as Promise;\n }\n\n public getTokenEndpoint(optional: false): Promise;\n public getTokenEndpoint(optional?: true): Promise;\n public getTokenEndpoint(optional = true): Promise {\n return this._getMetadataProperty(\"token_endpoint\", optional) as Promise;\n }\n\n public getCheckSessionIframe(): Promise {\n return this._getMetadataProperty(\"check_session_iframe\", true) as Promise;\n }\n\n public getEndSessionEndpoint(): Promise {\n return this._getMetadataProperty(\"end_session_endpoint\", true) as Promise;\n }\n\n public getRevocationEndpoint(optional: false): Promise;\n public getRevocationEndpoint(optional?: true): Promise;\n public getRevocationEndpoint(optional = true): Promise {\n return this._getMetadataProperty(\"revocation_endpoint\", optional) as Promise;\n }\n\n public getKeysEndpoint(optional: false): Promise;\n public getKeysEndpoint(optional?: true): Promise;\n public getKeysEndpoint(optional = true): Promise {\n return this._getMetadataProperty(\"jwks_uri\", optional) as Promise;\n }\n\n protected async _getMetadataProperty(name: keyof OidcMetadata, optional=false): Promise {\n const logger = this._logger.create(`_getMetadataProperty('${name}')`);\n\n const metadata = await this.getMetadata();\n logger.debug(\"resolved\");\n\n if (metadata[name] === undefined) {\n if (optional === true) {\n logger.warn(\"Metadata does not contain optional property\");\n return undefined;\n }\n\n logger.throw(new Error(\"Metadata does not contain property \" + name));\n }\n\n return metadata[name];\n }\n\n public async getSigningKeys(): Promise {\n const logger = this._logger.create(\"getSigningKeys\");\n if (this._signingKeys) {\n logger.debug(\"returning signingKeys from cache\");\n return this._signingKeys;\n }\n\n const jwks_uri = await this.getKeysEndpoint(false);\n logger.debug(\"got jwks_uri\", jwks_uri);\n\n const keySet = await this._jsonService.getJson(jwks_uri);\n logger.debug(\"got key set\", keySet);\n\n if (!Array.isArray(keySet.keys)) {\n logger.throw(new Error(\"Missing keys on keyset\"));\n throw null; // https://github.com/microsoft/TypeScript/issues/46972\n }\n\n this._signingKeys = keySet.keys;\n return this._signingKeys;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"./utils\";\nimport type { StateStore } from \"./StateStore\";\nimport type { AsyncStorage } from \"./AsyncStorage\";\n\n/**\n * @public\n */\nexport class WebStorageStateStore implements StateStore {\n private readonly _logger = new Logger(\"WebStorageStateStore\");\n\n private readonly _store: AsyncStorage | Storage;\n private readonly _prefix: string;\n\n public constructor({\n prefix = \"oidc.\",\n store = localStorage,\n }: { prefix?: string; store?: AsyncStorage | Storage } = {}) {\n this._store = store;\n this._prefix = prefix;\n }\n\n public async set(key: string, value: string): Promise {\n this._logger.create(`set('${key}')`);\n\n key = this._prefix + key;\n await this._store.setItem(key, value);\n }\n\n public async get(key: string): Promise {\n this._logger.create(`get('${key}')`);\n\n key = this._prefix + key;\n const item = await this._store.getItem(key);\n return item;\n }\n\n public async remove(key: string): Promise {\n this._logger.create(`remove('${key}')`);\n\n key = this._prefix + key;\n const item = await this._store.getItem(key);\n await this._store.removeItem(key);\n return item;\n }\n\n public async getAllKeys(): Promise {\n this._logger.create(\"getAllKeys\");\n const len = await this._store.length;\n\n const keys = [];\n for (let index = 0; index < len; index++) {\n const key = await this._store.key(index);\n if (key && key.indexOf(this._prefix) === 0) {\n keys.push(key.substr(this._prefix.length));\n }\n }\n return keys;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { WebStorageStateStore } from \"./WebStorageStateStore\";\nimport type { OidcMetadata } from \"./OidcMetadata\";\nimport type { StateStore } from \"./StateStore\";\nimport { InMemoryWebStorage } from \"./InMemoryWebStorage\";\n\nconst DefaultResponseType = \"code\";\nconst DefaultScope = \"openid\";\nconst DefaultClientAuthentication = \"client_secret_post\";\nconst DefaultResponseMode = \"query\";\nconst DefaultStaleStateAgeInSeconds = 60 * 15;\nconst DefaultClockSkewInSeconds = 60 * 5;\n\n/**\n * @public\n */\nexport type SigningKey = Record;\n\n/**\n * @public\n */\nexport type ExtraHeader = string | (() => string);\n\n/**\n * The settings used to configure the {@link OidcClient}.\n *\n * @public\n */\nexport interface OidcClientSettings {\n /** The URL of the OIDC/OAuth2 provider */\n authority: string;\n metadataUrl?: string;\n /** Provide metadata when authority server does not allow CORS on the metadata endpoint */\n metadata?: Partial;\n /** Can be used to seed or add additional values to the results of the discovery request */\n metadataSeed?: Partial;\n /** Provide signingKeys when authority server does not allow CORS on the jwks uri */\n signingKeys?: SigningKey[];\n\n /** Your client application's identifier as registered with the OIDC/OAuth2 */\n client_id: string;\n client_secret?: string;\n /** The type of response desired from the OIDC/OAuth2 provider (default: \"code\") */\n response_type?: string;\n /** The scope being requested from the OIDC/OAuth2 provider (default: \"openid\") */\n scope?: string;\n /** The redirect URI of your client application to receive a response from the OIDC/OAuth2 provider */\n redirect_uri: string;\n /** The OIDC/OAuth2 post-logout redirect URI */\n post_logout_redirect_uri?: string;\n\n /**\n * Client authentication method that is used to authenticate when using the token endpoint (default: \"client_secret_post\")\n * - \"client_secret_basic\": using the HTTP Basic authentication scheme\n * - \"client_secret_post\": including the client credentials in the request body\n *\n * See https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication\n */\n client_authentication?: \"client_secret_basic\" | \"client_secret_post\";\n\n /** optional protocol param */\n prompt?: string;\n /** optional protocol param */\n display?: string;\n /** optional protocol param */\n max_age?: number;\n /** optional protocol param */\n ui_locales?: string;\n /** optional protocol param */\n acr_values?: string;\n /** optional protocol param */\n resource?: string | string[];\n\n /** optional protocol param (default: \"query\") */\n response_mode?: \"query\" | \"fragment\";\n\n /**\n * Should optional OIDC protocol claims be removed from profile or specify the ones to be removed (default: true)\n * When true, the following claims are removed by default: [\"nbf\", \"jti\", \"auth_time\", \"nonce\", \"acr\", \"amr\", \"azp\", \"at_hash\"]\n * When specifying claims, the following claims are not allowed: [\"sub\", \"iss\", \"aud\", \"exp\", \"iat\"]\n */\n filterProtocolClaims?: boolean | string[];\n /** Flag to control if additional identity data is loaded from the user info endpoint in order to populate the user's profile (default: false) */\n loadUserInfo?: boolean;\n /** Number (in seconds) indicating the age of state entries in storage for authorize requests that are considered abandoned and thus can be cleaned up (default: 900) */\n staleStateAgeInSeconds?: number;\n\n /** @deprecated Unused */\n clockSkewInSeconds?: number;\n /** @deprecated Unused */\n userInfoJwtIssuer?: /*\"ANY\" | \"OP\" |*/ string;\n\n /**\n * Indicates if objects returned from the user info endpoint as claims (e.g. `address`) are merged into the claims from the id token as a single object.\n * Otherwise, they are added to an array as distinct objects for the claim type. (default: false)\n */\n mergeClaims?: boolean;\n\n /**\n * Storage object used to persist interaction state (default: window.localStorage, InMemoryWebStorage iff no window).\n * E.g. `stateStore: new WebStorageStateStore({ store: window.localStorage })`\n */\n stateStore?: StateStore;\n\n /**\n * An object containing additional query string parameters to be including in the authorization request.\n * E.g, when using Azure AD to obtain an access token an additional resource parameter is required. extraQueryParams: `{resource:\"some_identifier\"}`\n */\n extraQueryParams?: Record;\n\n extraTokenParams?: Record;\n\n /**\n * An object containing additional header to be including in request.\n */\n extraHeaders?: Record;\n\n /**\n * @deprecated since version 2.1.0. Use fetchRequestCredentials instead.\n */\n refreshTokenCredentials?: \"same-origin\" | \"include\" | \"omit\";\n\n /**\n * Will check the content type header of the response of the revocation endpoint to match these passed values (default: [])\n */\n revokeTokenAdditionalContentTypes?: string[];\n /**\n * Will disable pkce validation, changing to true will not append to sign in request code_challenge and code_challenge_method. (default: false)\n */\n disablePKCE?: boolean;\n /**\n * Sets the credentials for fetch requests. (default: \"same-origin\")\n * Use this if you need to send cookies to the OIDC/OAuth2 provider or if you are using a proxy that requires cookies\n */\n fetchRequestCredentials?: RequestCredentials;\n\n /**\n * Only scopes in this list will be passed in the token refresh request.\n */\n refreshTokenAllowedScope?: string | undefined;\n}\n\n/**\n * The settings with defaults applied of the {@link OidcClient}.\n * @see {@link OidcClientSettings}\n *\n * @public\n */\nexport class OidcClientSettingsStore {\n // metadata\n public readonly authority: string;\n public readonly metadataUrl: string;\n public readonly metadata: Partial | undefined;\n public readonly metadataSeed: Partial | undefined;\n public readonly signingKeys: SigningKey[] | undefined;\n\n // client config\n public readonly client_id: string;\n public readonly client_secret: string | undefined;\n public readonly response_type: string;\n public readonly scope: string;\n public readonly redirect_uri: string;\n public readonly post_logout_redirect_uri: string | undefined;\n public readonly client_authentication: \"client_secret_basic\" | \"client_secret_post\";\n\n // optional protocol params\n public readonly prompt: string | undefined;\n public readonly display: string | undefined;\n public readonly max_age: number | undefined;\n public readonly ui_locales: string | undefined;\n public readonly acr_values: string | undefined;\n public readonly resource: string | string[] | undefined;\n public readonly response_mode: \"query\" | \"fragment\";\n\n // behavior flags\n public readonly filterProtocolClaims: boolean | string[];\n public readonly loadUserInfo: boolean;\n public readonly staleStateAgeInSeconds: number;\n public readonly clockSkewInSeconds: number;\n public readonly userInfoJwtIssuer: /*\"ANY\" | \"OP\" |*/ string;\n public readonly mergeClaims: boolean;\n\n public readonly stateStore: StateStore;\n\n // extra\n public readonly extraQueryParams: Record;\n public readonly extraTokenParams: Record;\n public readonly extraHeaders: Record;\n\n public readonly revokeTokenAdditionalContentTypes?: string[];\n public readonly fetchRequestCredentials: RequestCredentials;\n public readonly refreshTokenAllowedScope: string | undefined;\n public readonly disablePKCE: boolean;\n\n public constructor({\n // metadata related\n authority, metadataUrl, metadata, signingKeys, metadataSeed,\n // client related\n client_id, client_secret, response_type = DefaultResponseType, scope = DefaultScope,\n redirect_uri, post_logout_redirect_uri,\n client_authentication = DefaultClientAuthentication,\n // optional protocol\n prompt, display, max_age, ui_locales, acr_values, resource, response_mode = DefaultResponseMode,\n // behavior flags\n filterProtocolClaims = true,\n loadUserInfo = false,\n staleStateAgeInSeconds = DefaultStaleStateAgeInSeconds,\n clockSkewInSeconds = DefaultClockSkewInSeconds,\n userInfoJwtIssuer = \"OP\",\n mergeClaims = false,\n disablePKCE = false,\n // other behavior\n stateStore,\n refreshTokenCredentials,\n revokeTokenAdditionalContentTypes,\n fetchRequestCredentials,\n refreshTokenAllowedScope,\n // extra\n extraQueryParams = {},\n extraTokenParams = {},\n extraHeaders = {},\n }: OidcClientSettings) {\n\n this.authority = authority;\n\n if (metadataUrl) {\n this.metadataUrl = metadataUrl;\n } else {\n this.metadataUrl = authority;\n if (authority) {\n if (!this.metadataUrl.endsWith(\"/\")) {\n this.metadataUrl += \"/\";\n }\n this.metadataUrl += \".well-known/openid-configuration\";\n }\n }\n\n this.metadata = metadata;\n this.metadataSeed = metadataSeed;\n this.signingKeys = signingKeys;\n\n this.client_id = client_id;\n this.client_secret = client_secret;\n this.response_type = response_type;\n this.scope = scope;\n this.redirect_uri = redirect_uri;\n this.post_logout_redirect_uri = post_logout_redirect_uri;\n this.client_authentication = client_authentication;\n\n this.prompt = prompt;\n this.display = display;\n this.max_age = max_age;\n this.ui_locales = ui_locales;\n this.acr_values = acr_values;\n this.resource = resource;\n this.response_mode = response_mode;\n\n this.filterProtocolClaims = filterProtocolClaims ?? true;\n this.loadUserInfo = !!loadUserInfo;\n this.staleStateAgeInSeconds = staleStateAgeInSeconds;\n this.clockSkewInSeconds = clockSkewInSeconds;\n this.userInfoJwtIssuer = userInfoJwtIssuer;\n this.mergeClaims = !!mergeClaims;\n this.disablePKCE = !!disablePKCE;\n this.revokeTokenAdditionalContentTypes = revokeTokenAdditionalContentTypes;\n\n if (fetchRequestCredentials && refreshTokenCredentials) {\n console.warn(\"Both fetchRequestCredentials and refreshTokenCredentials is set. Only fetchRequestCredentials will be used.\");\n }\n this.fetchRequestCredentials = fetchRequestCredentials ? fetchRequestCredentials\n : refreshTokenCredentials ? refreshTokenCredentials : \"same-origin\";\n\n if (stateStore) {\n this.stateStore = stateStore;\n }\n else {\n const store = typeof window !== \"undefined\" ? window.localStorage : new InMemoryWebStorage();\n this.stateStore = new WebStorageStateStore({ store });\n }\n\n this.refreshTokenAllowedScope = refreshTokenAllowedScope;\n\n this.extraQueryParams = extraQueryParams;\n this.extraTokenParams = extraTokenParams;\n this.extraHeaders = extraHeaders;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, JwtUtils } from \"./utils\";\nimport { JsonService } from \"./JsonService\";\nimport type { MetadataService } from \"./MetadataService\";\nimport type { JwtClaims } from \"./Claims\";\nimport type { OidcClientSettingsStore } from \"./OidcClientSettings\";\n\n/**\n * @internal\n */\nexport class UserInfoService {\n protected readonly _logger = new Logger(\"UserInfoService\");\n private readonly _jsonService: JsonService;\n\n public constructor(private readonly _settings: OidcClientSettingsStore,\n private readonly _metadataService: MetadataService,\n ) {\n this._jsonService = new JsonService(\n undefined,\n this._getClaimsFromJwt,\n this._settings.extraHeaders,\n );\n }\n\n public async getClaims(token: string): Promise {\n const logger = this._logger.create(\"getClaims\");\n if (!token) {\n this._logger.throw(new Error(\"No token passed\"));\n }\n\n const url = await this._metadataService.getUserInfoEndpoint();\n logger.debug(\"got userinfo url\", url);\n\n const claims = await this._jsonService.getJson(url, {\n token,\n credentials: this._settings.fetchRequestCredentials,\n });\n logger.debug(\"got claims\", claims);\n\n return claims;\n }\n\n protected _getClaimsFromJwt = async (responseText: string): Promise => {\n const logger = this._logger.create(\"_getClaimsFromJwt\");\n try {\n const payload = JwtUtils.decode(responseText);\n logger.debug(\"JWT decoding successful\");\n\n return payload;\n } catch (err) {\n logger.error(\"Error parsing JWT response\");\n throw err;\n }\n };\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { CryptoUtils, Logger } from \"./utils\";\nimport { JsonService } from \"./JsonService\";\nimport type { MetadataService } from \"./MetadataService\";\nimport type { OidcClientSettingsStore } from \"./OidcClientSettings\";\n\n/**\n * @internal\n */\nexport interface ExchangeCodeArgs {\n client_id?: string;\n client_secret?: string;\n redirect_uri?: string;\n\n grant_type?: string;\n code: string;\n code_verifier?: string;\n}\n\n/**\n * @internal\n */\nexport interface ExchangeCredentialsArgs {\n client_id?: string;\n client_secret?: string;\n\n grant_type?: string;\n scope?: string;\n\n username: string;\n password: string;\n}\n\n/**\n * @internal\n */\nexport interface ExchangeRefreshTokenArgs {\n client_id?: string;\n client_secret?: string;\n\n grant_type?: string;\n refresh_token: string;\n scope?: string;\n resource?: string | string[];\n\n timeoutInSeconds?: number;\n}\n\n/**\n * @internal\n */\nexport interface RevokeArgs {\n token: string;\n token_type_hint?: \"access_token\" | \"refresh_token\";\n}\n\n/**\n * @internal\n */\nexport class TokenClient {\n private readonly _logger = new Logger(\"TokenClient\");\n private readonly _jsonService;\n\n public constructor(\n private readonly _settings: OidcClientSettingsStore,\n private readonly _metadataService: MetadataService,\n ) {\n this._jsonService = new JsonService(\n this._settings.revokeTokenAdditionalContentTypes,\n null,\n this._settings.extraHeaders,\n );\n }\n\n /**\n * Exchange code.\n *\n * @see https://www.rfc-editor.org/rfc/rfc6749#section-4.1.3\n */\n public async exchangeCode({\n grant_type = \"authorization_code\",\n redirect_uri = this._settings.redirect_uri,\n client_id = this._settings.client_id,\n client_secret = this._settings.client_secret,\n ...args\n }: ExchangeCodeArgs): Promise> {\n const logger = this._logger.create(\"exchangeCode\");\n if (!client_id) {\n logger.throw(new Error(\"A client_id is required\"));\n }\n if (!redirect_uri) {\n logger.throw(new Error(\"A redirect_uri is required\"));\n }\n if (!args.code) {\n logger.throw(new Error(\"A code is required\"));\n }\n\n const params = new URLSearchParams({ grant_type, redirect_uri });\n for (const [key, value] of Object.entries(args)) {\n if (value != null) {\n params.set(key, value);\n }\n }\n let basicAuth: string | undefined;\n switch (this._settings.client_authentication) {\n case \"client_secret_basic\":\n if (!client_secret) {\n logger.throw(new Error(\"A client_secret is required\"));\n throw null; // https://github.com/microsoft/TypeScript/issues/46972\n }\n basicAuth = CryptoUtils.generateBasicAuth(client_id, client_secret);\n break;\n case \"client_secret_post\":\n params.append(\"client_id\", client_id);\n if (client_secret) {\n params.append(\"client_secret\", client_secret);\n }\n break;\n }\n\n const url = await this._metadataService.getTokenEndpoint(false);\n logger.debug(\"got token endpoint\");\n\n const response = await this._jsonService.postForm(url, { body: params, basicAuth, initCredentials: this._settings.fetchRequestCredentials });\n logger.debug(\"got response\");\n\n return response;\n }\n\n /**\n * Exchange credentials.\n *\n * @see https://www.rfc-editor.org/rfc/rfc6749#section-4.3.2\n */\n public async exchangeCredentials({\n grant_type = \"password\",\n client_id = this._settings.client_id,\n client_secret = this._settings.client_secret,\n scope = this._settings.scope,\n ...args\n }: ExchangeCredentialsArgs): Promise> {\n const logger = this._logger.create(\"exchangeCredentials\");\n\n if (!client_id) {\n logger.throw(new Error(\"A client_id is required\"));\n }\n\n const params = new URLSearchParams({ grant_type, scope });\n for (const [key, value] of Object.entries(args)) {\n if (value != null) {\n params.set(key, value);\n }\n }\n\n let basicAuth: string | undefined;\n switch (this._settings.client_authentication) {\n case \"client_secret_basic\":\n if (!client_secret) {\n logger.throw(new Error(\"A client_secret is required\"));\n throw null; // https://github.com/microsoft/TypeScript/issues/46972\n }\n basicAuth = CryptoUtils.generateBasicAuth(client_id, client_secret);\n break;\n case \"client_secret_post\":\n params.append(\"client_id\", client_id);\n if (client_secret) {\n params.append(\"client_secret\", client_secret);\n }\n break;\n }\n\n const url = await this._metadataService.getTokenEndpoint(false);\n logger.debug(\"got token endpoint\");\n\n const response = await this._jsonService.postForm(url, { body: params, basicAuth, initCredentials: this._settings.fetchRequestCredentials });\n logger.debug(\"got response\");\n\n return response;\n }\n\n /**\n * Exchange a refresh token.\n *\n * @see https://www.rfc-editor.org/rfc/rfc6749#section-6\n */\n public async exchangeRefreshToken({\n grant_type = \"refresh_token\",\n client_id = this._settings.client_id,\n client_secret = this._settings.client_secret,\n timeoutInSeconds,\n ...args\n }: ExchangeRefreshTokenArgs): Promise> {\n const logger = this._logger.create(\"exchangeRefreshToken\");\n if (!client_id) {\n logger.throw(new Error(\"A client_id is required\"));\n }\n if (!args.refresh_token) {\n logger.throw(new Error(\"A refresh_token is required\"));\n }\n\n const params = new URLSearchParams({ grant_type });\n for (const [key, value] of Object.entries(args)) {\n if (Array.isArray(value)) {\n value.forEach(param => params.append(key, param));\n }\n else if (value != null) {\n params.set(key, value);\n }\n }\n let basicAuth: string | undefined;\n switch (this._settings.client_authentication) {\n case \"client_secret_basic\":\n if (!client_secret) {\n logger.throw(new Error(\"A client_secret is required\"));\n throw null; // https://github.com/microsoft/TypeScript/issues/46972\n }\n basicAuth = CryptoUtils.generateBasicAuth(client_id, client_secret);\n break;\n case \"client_secret_post\":\n params.append(\"client_id\", client_id);\n if (client_secret) {\n params.append(\"client_secret\", client_secret);\n }\n break;\n }\n\n const url = await this._metadataService.getTokenEndpoint(false);\n logger.debug(\"got token endpoint\");\n\n const response = await this._jsonService.postForm(url, { body: params, basicAuth, timeoutInSeconds, initCredentials: this._settings.fetchRequestCredentials });\n logger.debug(\"got response\");\n\n return response;\n }\n\n /**\n * Revoke an access or refresh token.\n *\n * @see https://datatracker.ietf.org/doc/html/rfc7009#section-2.1\n */\n public async revoke(args: RevokeArgs): Promise {\n const logger = this._logger.create(\"revoke\");\n if (!args.token) {\n logger.throw(new Error(\"A token is required\"));\n }\n\n const url = await this._metadataService.getRevocationEndpoint(false);\n\n logger.debug(`got revocation endpoint, revoking ${args.token_type_hint ?? \"default token type\"}`);\n\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(args)) {\n if (value != null) {\n params.set(key, value);\n }\n }\n params.set(\"client_id\", this._settings.client_id);\n if (this._settings.client_secret) {\n params.set(\"client_secret\", this._settings.client_secret);\n }\n\n await this._jsonService.postForm(url, { body: params });\n logger.debug(\"got response\");\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, JwtUtils } from \"./utils\";\nimport { ErrorResponse } from \"./errors\";\nimport type { MetadataService } from \"./MetadataService\";\nimport { UserInfoService } from \"./UserInfoService\";\nimport { TokenClient } from \"./TokenClient\";\nimport type { OidcClientSettingsStore } from \"./OidcClientSettings\";\nimport type { SigninState } from \"./SigninState\";\nimport type { SigninResponse } from \"./SigninResponse\";\nimport type { State } from \"./State\";\nimport type { SignoutResponse } from \"./SignoutResponse\";\nimport type { UserProfile } from \"./User\";\nimport type { RefreshState } from \"./RefreshState\";\nimport type { IdTokenClaims } from \"./Claims\";\nimport type { ClaimsService } from \"./ClaimsService\";\n\n/**\n * @internal\n */\nexport class ResponseValidator {\n protected readonly _logger = new Logger(\"ResponseValidator\");\n protected readonly _userInfoService = new UserInfoService(this._settings, this._metadataService);\n protected readonly _tokenClient = new TokenClient(this._settings, this._metadataService);\n\n public constructor(\n protected readonly _settings: OidcClientSettingsStore,\n protected readonly _metadataService: MetadataService,\n protected readonly _claimsService: ClaimsService,\n ) {}\n\n public async validateSigninResponse(response: SigninResponse, state: SigninState): Promise {\n const logger = this._logger.create(\"validateSigninResponse\");\n\n this._processSigninState(response, state);\n logger.debug(\"state processed\");\n\n await this._processCode(response, state);\n logger.debug(\"code processed\");\n\n if (response.isOpenId) {\n this._validateIdTokenAttributes(response);\n }\n logger.debug(\"tokens validated\");\n\n await this._processClaims(response, state?.skipUserInfo, response.isOpenId);\n logger.debug(\"claims processed\");\n }\n\n public async validateCredentialsResponse(response: SigninResponse, skipUserInfo: boolean): Promise {\n const logger = this._logger.create(\"validateCredentialsResponse\");\n\n if (response.isOpenId && !!response.id_token) {\n this._validateIdTokenAttributes(response);\n }\n logger.debug(\"tokens validated\");\n\n await this._processClaims(response, skipUserInfo, response.isOpenId);\n logger.debug(\"claims processed\");\n }\n\n public async validateRefreshResponse(response: SigninResponse, state: RefreshState): Promise {\n const logger = this._logger.create(\"validateRefreshResponse\");\n\n response.userState = state.data;\n // if there's no session_state on the response, copy over session_state from original request\n response.session_state ??= state.session_state;\n // if there's no scope on the response, then assume all scopes granted (per-spec) and copy over scopes from original request\n response.scope ??= state.scope;\n\n // OpenID Connect Core 1.0 says that id_token is optional in refresh response:\n // https://openid.net/specs/openid-connect-core-1_0.html#RefreshTokenResponse\n if (response.isOpenId && !!response.id_token) {\n this._validateIdTokenAttributes(response, state.id_token);\n logger.debug(\"ID Token validated\");\n }\n\n if (!response.id_token) {\n // if there's no id_token on the response, copy over id_token from original request\n response.id_token = state.id_token;\n // and decoded part too\n response.profile = state.profile;\n }\n\n const hasIdToken = response.isOpenId && !!response.id_token;\n await this._processClaims(response, false, hasIdToken);\n logger.debug(\"claims processed\");\n }\n\n public validateSignoutResponse(response: SignoutResponse, state: State): void {\n const logger = this._logger.create(\"validateSignoutResponse\");\n if (state.id !== response.state) {\n logger.throw(new Error(\"State does not match\"));\n }\n\n // now that we know the state matches, take the stored data\n // and set it into the response so callers can get their state\n // this is important for both success & error outcomes\n logger.debug(\"state validated\");\n response.userState = state.data;\n\n if (response.error) {\n logger.warn(\"Response was error\", response.error);\n throw new ErrorResponse(response);\n }\n }\n\n protected _processSigninState(response: SigninResponse, state: SigninState): void {\n const logger = this._logger.create(\"_processSigninState\");\n if (state.id !== response.state) {\n logger.throw(new Error(\"State does not match\"));\n }\n\n if (!state.client_id) {\n logger.throw(new Error(\"No client_id on state\"));\n }\n\n if (!state.authority) {\n logger.throw(new Error(\"No authority on state\"));\n }\n\n // ensure we're using the correct authority\n if (this._settings.authority !== state.authority) {\n logger.throw(new Error(\"authority mismatch on settings vs. signin state\"));\n }\n if (this._settings.client_id && this._settings.client_id !== state.client_id) {\n logger.throw(new Error(\"client_id mismatch on settings vs. signin state\"));\n }\n\n // now that we know the state matches, take the stored data\n // and set it into the response so callers can get their state\n // this is important for both success & error outcomes\n logger.debug(\"state validated\");\n response.userState = state.data;\n response.url_state = state.url_state;\n // if there's no scope on the response, then assume all scopes granted (per-spec) and copy over scopes from original request\n response.scope ??= state.scope;\n\n if (response.error) {\n logger.warn(\"Response was error\", response.error);\n throw new ErrorResponse(response);\n }\n\n if (state.code_verifier && !response.code) {\n logger.throw(new Error(\"Expected code in response\"));\n }\n\n }\n\n protected async _processClaims(response: SigninResponse, skipUserInfo = false, validateSub = true): Promise {\n const logger = this._logger.create(\"_processClaims\");\n response.profile = this._claimsService.filterProtocolClaims(response.profile);\n\n if (skipUserInfo || !this._settings.loadUserInfo || !response.access_token) {\n logger.debug(\"not loading user info\");\n return;\n }\n\n logger.debug(\"loading user info\");\n const claims = await this._userInfoService.getClaims(response.access_token);\n logger.debug(\"user info claims received from user info endpoint\");\n\n if (validateSub && claims.sub !== response.profile.sub) {\n logger.throw(new Error(\"subject from UserInfo response does not match subject in ID Token\"));\n }\n\n response.profile = this._claimsService.mergeClaims(response.profile, this._claimsService.filterProtocolClaims(claims as IdTokenClaims));\n logger.debug(\"user info claims received, updated profile:\", response.profile);\n }\n\n protected async _processCode(response: SigninResponse, state: SigninState): Promise {\n const logger = this._logger.create(\"_processCode\");\n if (response.code) {\n logger.debug(\"Validating code\");\n const tokenResponse = await this._tokenClient.exchangeCode({\n client_id: state.client_id,\n client_secret: state.client_secret,\n code: response.code,\n redirect_uri: state.redirect_uri,\n code_verifier: state.code_verifier,\n ...state.extraTokenParams,\n });\n Object.assign(response, tokenResponse);\n } else {\n logger.debug(\"No code to process\");\n }\n }\n\n protected _validateIdTokenAttributes(response: SigninResponse, existingToken?: string): void {\n const logger = this._logger.create(\"_validateIdTokenAttributes\");\n\n logger.debug(\"decoding ID Token JWT\");\n const incoming = JwtUtils.decode(response.id_token ?? \"\");\n\n if (!incoming.sub) {\n logger.throw(new Error(\"ID Token is missing a subject claim\"));\n }\n\n if (existingToken) {\n const existing = JwtUtils.decode(existingToken);\n if (incoming.sub !== existing.sub) {\n logger.throw(new Error(\"sub in id_token does not match current sub\"));\n }\n if (incoming.auth_time && incoming.auth_time !== existing.auth_time) {\n logger.throw(new Error(\"auth_time in id_token does not match original auth_time\"));\n }\n if (incoming.azp && incoming.azp !== existing.azp) {\n logger.throw(new Error(\"azp in id_token does not match original azp\"));\n }\n if (!incoming.azp && existing.azp) {\n logger.throw(new Error(\"azp not in id_token, but present in original id_token\"));\n }\n }\n\n response.profile = incoming as UserProfile;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, CryptoUtils, Timer } from \"./utils\";\nimport type { StateStore } from \"./StateStore\";\n\n/**\n * @public\n */\nexport class State {\n public readonly id: string;\n public readonly created: number;\n public readonly request_type: string | undefined;\n public readonly url_state: string | undefined;\n\n /** custom \"state\", which can be used by a caller to have \"data\" round tripped */\n public readonly data?: unknown;\n\n public constructor(args: {\n id?: string;\n data?: unknown;\n created?: number;\n request_type?: string;\n url_state?: string;\n }) {\n this.id = args.id || CryptoUtils.generateUUIDv4();\n this.data = args.data;\n\n if (args.created && args.created > 0) {\n this.created = args.created;\n }\n else {\n this.created = Timer.getEpochTime();\n }\n this.request_type = args.request_type;\n this.url_state = args.url_state;\n }\n\n public toStorageString(): string {\n new Logger(\"State\").create(\"toStorageString\");\n return JSON.stringify({\n id: this.id,\n data: this.data,\n created: this.created,\n request_type: this.request_type,\n url_state: this.url_state,\n });\n }\n\n public static fromStorageString(storageString: string): State {\n Logger.createStatic(\"State\", \"fromStorageString\");\n return new State(JSON.parse(storageString));\n }\n\n public static async clearStaleState(storage: StateStore, age: number): Promise {\n const logger = Logger.createStatic(\"State\", \"clearStaleState\");\n const cutoff = Timer.getEpochTime() - age;\n\n const keys = await storage.getAllKeys();\n logger.debug(\"got keys\", keys);\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const item = await storage.get(key);\n let remove = false;\n\n if (item) {\n try {\n const state = State.fromStorageString(item);\n\n logger.debug(\"got item from key:\", key, state.created);\n if (state.created <= cutoff) {\n remove = true;\n }\n }\n catch (err) {\n logger.error(\"Error parsing state for key:\", key, err);\n remove = true;\n }\n }\n else {\n logger.debug(\"no item in storage for key:\", key);\n remove = true;\n }\n\n if (remove) {\n logger.debug(\"removed item for key:\", key);\n void storage.remove(key);\n }\n }\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, CryptoUtils } from \"./utils\";\nimport { State } from \"./State\";\n\n/**\n * @public\n */\nexport class SigninState extends State {\n // isCode\n /** The same code_verifier that was used to obtain the authorization_code via PKCE. */\n public readonly code_verifier: string | undefined;\n /** Used to secure authorization code grants via Proof Key for Code Exchange (PKCE). */\n public readonly code_challenge: string | undefined;\n\n // to ensure state still matches settings\n /** @see {@link OidcClientSettings.authority} */\n public readonly authority: string;\n /** @see {@link OidcClientSettings.client_id} */\n public readonly client_id: string;\n /** @see {@link OidcClientSettings.redirect_uri} */\n public readonly redirect_uri: string;\n /** @see {@link OidcClientSettings.scope} */\n public readonly scope: string;\n /** @see {@link OidcClientSettings.client_secret} */\n public readonly client_secret: string | undefined;\n /** @see {@link OidcClientSettings.extraTokenParams} */\n public readonly extraTokenParams: Record | undefined;\n /** @see {@link OidcClientSettings.response_mode} */\n public readonly response_mode: \"query\" | \"fragment\" | undefined;\n\n public readonly skipUserInfo: boolean | undefined;\n\n public constructor(args: {\n id?: string;\n data?: unknown;\n created?: number;\n request_type?: string;\n url_state?: string;\n\n code_verifier?: string | boolean;\n authority: string;\n client_id: string;\n redirect_uri: string;\n scope: string;\n client_secret?: string;\n extraTokenParams?: Record;\n response_mode?: \"query\" | \"fragment\";\n skipUserInfo?: boolean;\n }) {\n super(args);\n\n if (args.code_verifier === true) {\n this.code_verifier = CryptoUtils.generateCodeVerifier();\n }\n else if (args.code_verifier) {\n this.code_verifier = args.code_verifier;\n }\n\n if (this.code_verifier) {\n this.code_challenge = CryptoUtils.generateCodeChallenge(this.code_verifier);\n }\n\n this.authority = args.authority;\n this.client_id = args.client_id;\n this.redirect_uri = args.redirect_uri;\n this.scope = args.scope;\n this.client_secret = args.client_secret;\n this.extraTokenParams = args.extraTokenParams;\n\n this.response_mode = args.response_mode;\n this.skipUserInfo = args.skipUserInfo;\n }\n\n public toStorageString(): string {\n new Logger(\"SigninState\").create(\"toStorageString\");\n return JSON.stringify({\n id: this.id,\n data: this.data,\n created: this.created,\n request_type: this.request_type,\n url_state: this.url_state,\n\n code_verifier: this.code_verifier,\n authority: this.authority,\n client_id: this.client_id,\n redirect_uri: this.redirect_uri,\n scope: this.scope,\n client_secret: this.client_secret,\n extraTokenParams : this.extraTokenParams,\n response_mode: this.response_mode,\n skipUserInfo: this.skipUserInfo,\n });\n }\n\n public static fromStorageString(storageString: string): SigninState {\n Logger.createStatic(\"SigninState\", \"fromStorageString\");\n const data = JSON.parse(storageString);\n return new SigninState(data);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, URL_STATE_DELIMITER } from \"./utils\";\nimport { SigninState } from \"./SigninState\";\n\n/**\n * @public\n * @see https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\n */\nexport interface SigninRequestArgs {\n // mandatory\n url: string;\n authority: string;\n client_id: string;\n redirect_uri: string;\n response_type: string;\n scope: string;\n\n // optional\n response_mode?: \"query\" | \"fragment\";\n nonce?: string;\n display?: string;\n prompt?: string;\n max_age?: number;\n ui_locales?: string;\n id_token_hint?: string;\n login_hint?: string;\n acr_values?: string;\n\n // other\n resource?: string | string[];\n request?: string;\n request_uri?: string;\n request_type?: string;\n extraQueryParams?: Record;\n\n // special\n extraTokenParams?: Record;\n client_secret?: string;\n skipUserInfo?: boolean;\n disablePKCE?: boolean;\n /** custom \"state\", which can be used by a caller to have \"data\" round tripped */\n state_data?: unknown;\n url_state?: string;\n}\n\n/**\n * @public\n */\nexport class SigninRequest {\n private readonly _logger = new Logger(\"SigninRequest\");\n\n public readonly url: string;\n public readonly state: SigninState;\n\n public constructor({\n // mandatory\n url, authority, client_id, redirect_uri, response_type, scope,\n // optional\n state_data, response_mode, request_type, client_secret, nonce, url_state,\n resource,\n skipUserInfo,\n extraQueryParams,\n extraTokenParams,\n disablePKCE,\n ...optionalParams\n }: SigninRequestArgs) {\n if (!url) {\n this._logger.error(\"ctor: No url passed\");\n throw new Error(\"url\");\n }\n if (!client_id) {\n this._logger.error(\"ctor: No client_id passed\");\n throw new Error(\"client_id\");\n }\n if (!redirect_uri) {\n this._logger.error(\"ctor: No redirect_uri passed\");\n throw new Error(\"redirect_uri\");\n }\n if (!response_type) {\n this._logger.error(\"ctor: No response_type passed\");\n throw new Error(\"response_type\");\n }\n if (!scope) {\n this._logger.error(\"ctor: No scope passed\");\n throw new Error(\"scope\");\n }\n if (!authority) {\n this._logger.error(\"ctor: No authority passed\");\n throw new Error(\"authority\");\n }\n\n this.state = new SigninState({\n data: state_data,\n request_type,\n url_state,\n code_verifier: !disablePKCE,\n client_id, authority, redirect_uri,\n response_mode,\n client_secret, scope, extraTokenParams,\n skipUserInfo,\n });\n\n const parsedUrl = new URL(url);\n parsedUrl.searchParams.append(\"client_id\", client_id);\n parsedUrl.searchParams.append(\"redirect_uri\", redirect_uri);\n parsedUrl.searchParams.append(\"response_type\", response_type);\n parsedUrl.searchParams.append(\"scope\", scope);\n if (nonce) {\n parsedUrl.searchParams.append(\"nonce\", nonce);\n }\n\n let state = this.state.id;\n if (url_state) {\n state = `${state}${URL_STATE_DELIMITER}${url_state}`;\n }\n parsedUrl.searchParams.append(\"state\", state);\n if (this.state.code_challenge) {\n parsedUrl.searchParams.append(\"code_challenge\", this.state.code_challenge);\n parsedUrl.searchParams.append(\"code_challenge_method\", \"S256\");\n }\n\n if (resource) {\n // https://datatracker.ietf.org/doc/html/rfc8707\n const resources = Array.isArray(resource) ? resource : [resource];\n resources\n .forEach(r => parsedUrl.searchParams.append(\"resource\", r));\n }\n\n for (const [key, value] of Object.entries({ response_mode, ...optionalParams, ...extraQueryParams })) {\n if (value != null) {\n parsedUrl.searchParams.append(key, value.toString());\n }\n }\n\n this.url = parsedUrl.href;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Timer, URL_STATE_DELIMITER } from \"./utils\";\nimport type { UserProfile } from \"./User\";\n\nconst OidcScope = \"openid\";\n\n/**\n * @public\n * @see https://openid.net/specs/openid-connect-core-1_0.html#AuthResponse\n * @see https://openid.net/specs/openid-connect-core-1_0.html#AuthError\n */\nexport class SigninResponse {\n // props present in the initial callback response regardless of success\n public readonly state: string | null;\n /** @see {@link User.session_state} */\n public session_state: string | null;\n\n // error props\n /** @see {@link ErrorResponse.error} */\n public readonly error: string | null;\n /** @see {@link ErrorResponse.error_description} */\n public readonly error_description: string | null;\n /** @see {@link ErrorResponse.error_uri} */\n public readonly error_uri: string | null;\n\n // success props\n public readonly code: string | null;\n\n // props set after validation\n /** @see {@link User.id_token} */\n public id_token?: string;\n /** @see {@link User.access_token} */\n public access_token = \"\";\n /** @see {@link User.token_type} */\n public token_type = \"\";\n /** @see {@link User.refresh_token} */\n public refresh_token?: string;\n /** @see {@link User.scope} */\n public scope?: string;\n /** @see {@link User.expires_at} */\n public expires_at?: number;\n\n /** custom state data set during the initial signin request */\n public userState: unknown;\n public url_state?: string;\n\n /** @see {@link User.profile} */\n public profile: UserProfile = {} as UserProfile;\n\n public constructor(params: URLSearchParams) {\n this.state = params.get(\"state\");\n this.session_state = params.get(\"session_state\");\n if (this.state) {\n const splitState = decodeURIComponent(this.state).split(URL_STATE_DELIMITER);\n this.state = splitState[0];\n if (splitState.length > 1) {\n this.url_state = splitState.slice(1).join(URL_STATE_DELIMITER);\n }\n }\n\n this.error = params.get(\"error\");\n this.error_description = params.get(\"error_description\");\n this.error_uri = params.get(\"error_uri\");\n\n this.code = params.get(\"code\");\n }\n\n public get expires_in(): number | undefined {\n if (this.expires_at === undefined) {\n return undefined;\n }\n return this.expires_at - Timer.getEpochTime();\n }\n public set expires_in(value: number | undefined) {\n // spec expects a number, but normalize here just in case\n if (typeof value === \"string\") value = Number(value);\n if (value !== undefined && value >= 0) {\n this.expires_at = Math.floor(value) + Timer.getEpochTime();\n }\n }\n\n public get isOpenId(): boolean {\n return this.scope?.split(\" \").includes(OidcScope) || !!this.id_token;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"./utils\";\nimport { State } from \"./State\";\n\n/**\n * @public\n * @see https://openid.net/specs/openid-connect-rpinitiated-1_0.html#RPLogout\n */\nexport interface SignoutRequestArgs {\n // mandatory\n url: string;\n\n // optional\n id_token_hint?: string;\n client_id?: string;\n post_logout_redirect_uri?: string;\n extraQueryParams?: Record;\n\n // special\n request_type?: string;\n /** custom \"state\", which can be used by a caller to have \"data\" round tripped */\n state_data?: unknown;\n}\n\n/**\n * @public\n */\nexport class SignoutRequest {\n private readonly _logger = new Logger(\"SignoutRequest\");\n\n public readonly url: string;\n public readonly state?: State;\n\n public constructor({\n url,\n state_data, id_token_hint, post_logout_redirect_uri, extraQueryParams, request_type, client_id,\n }: SignoutRequestArgs) {\n if (!url) {\n this._logger.error(\"ctor: No url passed\");\n throw new Error(\"url\");\n }\n\n const parsedUrl = new URL(url);\n if (id_token_hint) {\n parsedUrl.searchParams.append(\"id_token_hint\", id_token_hint);\n }\n if (client_id) {\n parsedUrl.searchParams.append(\"client_id\", client_id);\n }\n\n if (post_logout_redirect_uri) {\n parsedUrl.searchParams.append(\"post_logout_redirect_uri\", post_logout_redirect_uri);\n\n if (state_data) {\n this.state = new State({ data: state_data, request_type });\n\n parsedUrl.searchParams.append(\"state\", this.state.id);\n }\n }\n\n for (const [key, value] of Object.entries({ ...extraQueryParams })) {\n if (value != null) {\n parsedUrl.searchParams.append(key, value.toString());\n }\n }\n\n this.url = parsedUrl.href;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\n/**\n * @public\n * @see https://openid.net/specs/openid-connect-core-1_0.html#AuthError\n */\nexport class SignoutResponse {\n public readonly state: string | null;\n\n // error props\n /** @see {@link ErrorResponse.error} */\n public error: string | null;\n /** @see {@link ErrorResponse.error_description} */\n public error_description: string | null;\n /** @see {@link ErrorResponse.error_uri} */\n public error_uri: string | null;\n\n /** custom state data set during the initial signin request */\n public userState: unknown;\n\n public constructor(params: URLSearchParams) {\n this.state = params.get(\"state\");\n\n this.error = params.get(\"error\");\n this.error_description = params.get(\"error_description\");\n this.error_uri = params.get(\"error_uri\");\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport type { JwtClaims } from \"./Claims\";\nimport type { OidcClientSettingsStore } from \"./OidcClientSettings\";\nimport type { UserProfile } from \"./User\";\nimport { Logger } from \"./utils\";\n\n/**\n * Protocol claims that could be removed by default from profile.\n * Derived from the following sets of claims:\n * - {@link https://datatracker.ietf.org/doc/html/rfc7519.html#section-4.1}\n * - {@link https://openid.net/specs/openid-connect-core-1_0.html#IDToken}\n * - {@link https://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken}\n *\n * @internal\n */\nconst DefaultProtocolClaims = [\n \"nbf\",\n \"jti\",\n \"auth_time\",\n \"nonce\",\n \"acr\",\n \"amr\",\n \"azp\",\n \"at_hash\", // https://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken\n] as const;\n\n/**\n * Protocol claims that should never be removed from profile.\n * \"sub\" is needed internally and others should remain required as per the OIDC specs.\n *\n * @internal\n */\nconst InternalRequiredProtocolClaims = [\"sub\", \"iss\", \"aud\", \"exp\", \"iat\"];\n\n/**\n * @internal\n */\nexport class ClaimsService {\n protected readonly _logger = new Logger(\"ClaimsService\");\n public constructor(\n protected readonly _settings: OidcClientSettingsStore,\n ) {}\n\n public filterProtocolClaims(claims: UserProfile): UserProfile {\n const result = { ...claims };\n\n if (this._settings.filterProtocolClaims) {\n let protocolClaims;\n if (Array.isArray(this._settings.filterProtocolClaims)) {\n protocolClaims = this._settings.filterProtocolClaims;\n } else {\n protocolClaims = DefaultProtocolClaims;\n }\n\n for (const claim of protocolClaims) {\n if (!InternalRequiredProtocolClaims.includes(claim)) {\n delete result[claim];\n }\n }\n }\n\n return result;\n }\n\n public mergeClaims(claims1: UserProfile, claims2: JwtClaims): UserProfile {\n const result = { ...claims1 };\n\n for (const [claim, values] of Object.entries(claims2)) {\n for (const value of Array.isArray(values) ? values : [values]) {\n const previousValue = result[claim];\n if (previousValue === undefined) {\n result[claim] = value;\n }\n else if (Array.isArray(previousValue)) {\n if (!previousValue.includes(value)) {\n previousValue.push(value);\n }\n }\n else if (result[claim] !== value) {\n if (typeof value === \"object\" && this._settings.mergeClaims) {\n result[claim] = this.mergeClaims(previousValue as UserProfile, value);\n }\n else {\n result[claim] = [previousValue, value];\n }\n }\n }\n }\n\n return result;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, UrlUtils } from \"./utils\";\nimport { ErrorResponse } from \"./errors\";\nimport { type OidcClientSettings, OidcClientSettingsStore } from \"./OidcClientSettings\";\nimport { ResponseValidator } from \"./ResponseValidator\";\nimport { MetadataService } from \"./MetadataService\";\nimport type { RefreshState } from \"./RefreshState\";\nimport { SigninRequest, type SigninRequestArgs } from \"./SigninRequest\";\nimport { SigninResponse } from \"./SigninResponse\";\nimport { SignoutRequest, type SignoutRequestArgs } from \"./SignoutRequest\";\nimport { SignoutResponse } from \"./SignoutResponse\";\nimport { SigninState } from \"./SigninState\";\nimport { State } from \"./State\";\nimport { TokenClient } from \"./TokenClient\";\nimport { ClaimsService } from \"./ClaimsService\";\n\n/**\n * @public\n */\nexport interface CreateSigninRequestArgs\n extends Omit {\n redirect_uri?: string;\n response_type?: string;\n scope?: string;\n\n /** custom \"state\", which can be used by a caller to have \"data\" round tripped */\n state?: unknown;\n}\n\n/**\n * @public\n */\nexport interface UseRefreshTokenArgs {\n state: RefreshState;\n timeoutInSeconds?: number;\n}\n\n/**\n * @public\n */\nexport type CreateSignoutRequestArgs = Omit & {\n /** custom \"state\", which can be used by a caller to have \"data\" round tripped */\n state?: unknown;\n};\n\n/**\n * @public\n */\nexport type ProcessResourceOwnerPasswordCredentialsArgs = {\n username: string;\n password: string;\n skipUserInfo?: boolean;\n extraTokenParams?: Record;\n};\n\n/**\n * Provides the raw OIDC/OAuth2 protocol support for the authorization endpoint and the end session endpoint in the\n * authorization server. It provides a bare-bones protocol implementation and is used by the UserManager class.\n * Only use this class if you simply want protocol support without the additional management features of the\n * UserManager class.\n *\n * @public\n */\nexport class OidcClient {\n public readonly settings: OidcClientSettingsStore;\n protected readonly _logger = new Logger(\"OidcClient\");\n\n public readonly metadataService: MetadataService;\n protected readonly _claimsService: ClaimsService;\n protected readonly _validator: ResponseValidator;\n protected readonly _tokenClient: TokenClient;\n\n public constructor(settings: OidcClientSettings);\n public constructor(settings: OidcClientSettingsStore, metadataService: MetadataService); \n public constructor(settings: OidcClientSettings | OidcClientSettingsStore, metadataService?: MetadataService) {\n this.settings = settings instanceof OidcClientSettingsStore ? settings : new OidcClientSettingsStore(settings);\n\n this.metadataService = metadataService ?? new MetadataService(this.settings);\n this._claimsService = new ClaimsService(this.settings);\n this._validator = new ResponseValidator(this.settings, this.metadataService, this._claimsService);\n this._tokenClient = new TokenClient(this.settings, this.metadataService);\n }\n\n public async createSigninRequest({\n state,\n request,\n request_uri,\n request_type,\n id_token_hint,\n login_hint,\n skipUserInfo,\n nonce,\n url_state,\n response_type = this.settings.response_type,\n scope = this.settings.scope,\n redirect_uri = this.settings.redirect_uri,\n prompt = this.settings.prompt,\n display = this.settings.display,\n max_age = this.settings.max_age,\n ui_locales = this.settings.ui_locales,\n acr_values = this.settings.acr_values,\n resource = this.settings.resource,\n response_mode = this.settings.response_mode,\n extraQueryParams = this.settings.extraQueryParams,\n extraTokenParams = this.settings.extraTokenParams,\n }: CreateSigninRequestArgs): Promise {\n const logger = this._logger.create(\"createSigninRequest\");\n\n if (response_type !== \"code\") {\n throw new Error(\"Only the Authorization Code flow (with PKCE) is supported\");\n }\n\n const url = await this.metadataService.getAuthorizationEndpoint();\n logger.debug(\"Received authorization endpoint\", url);\n\n const signinRequest = new SigninRequest({\n url,\n authority: this.settings.authority,\n client_id: this.settings.client_id,\n redirect_uri,\n response_type,\n scope,\n state_data: state,\n url_state,\n prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values,\n resource, request, request_uri, extraQueryParams, extraTokenParams, request_type, response_mode,\n client_secret: this.settings.client_secret,\n skipUserInfo,\n nonce,\n disablePKCE: this.settings.disablePKCE,\n });\n\n // house cleaning\n await this.clearStaleState();\n\n const signinState = signinRequest.state;\n await this.settings.stateStore.set(signinState.id, signinState.toStorageString());\n return signinRequest;\n }\n\n public async readSigninResponseState(url: string, removeState = false): Promise<{ state: SigninState; response: SigninResponse }> {\n const logger = this._logger.create(\"readSigninResponseState\");\n\n const response = new SigninResponse(UrlUtils.readParams(url, this.settings.response_mode));\n if (!response.state) {\n logger.throw(new Error(\"No state in response\"));\n // need to throw within this function's body for type narrowing to work\n throw null; // https://github.com/microsoft/TypeScript/issues/46972\n }\n\n const storedStateString = await this.settings.stateStore[removeState ? \"remove\" : \"get\"](response.state);\n if (!storedStateString) {\n logger.throw(new Error(\"No matching state found in storage\"));\n throw null; // https://github.com/microsoft/TypeScript/issues/46972\n }\n\n const state = SigninState.fromStorageString(storedStateString);\n return { state, response };\n }\n\n public async processSigninResponse(url: string): Promise {\n const logger = this._logger.create(\"processSigninResponse\");\n\n const { state, response } = await this.readSigninResponseState(url, true);\n logger.debug(\"received state from storage; validating response\");\n await this._validator.validateSigninResponse(response, state);\n return response;\n }\n\n public async processResourceOwnerPasswordCredentials({\n username,\n password,\n skipUserInfo = false,\n extraTokenParams = {},\n }: ProcessResourceOwnerPasswordCredentialsArgs): Promise {\n const tokenResponse: Record = await this._tokenClient.exchangeCredentials({ username, password, ...extraTokenParams });\n const signinResponse: SigninResponse = new SigninResponse(new URLSearchParams());\n Object.assign(signinResponse, tokenResponse);\n await this._validator.validateCredentialsResponse(signinResponse, skipUserInfo);\n return signinResponse;\n }\n\n public async useRefreshToken({\n state,\n timeoutInSeconds,\n }: UseRefreshTokenArgs): Promise {\n const logger = this._logger.create(\"useRefreshToken\");\n\n // https://github.com/authts/oidc-client-ts/issues/695\n // In some cases (e.g. AzureAD), not all granted scopes are allowed on token refresh requests.\n // Therefore, we filter all granted scopes by a list of allowable scopes.\n let scope;\n if (this.settings.refreshTokenAllowedScope === undefined) {\n scope = state.scope;\n } else {\n const allowableScopes = this.settings.refreshTokenAllowedScope.split(\" \");\n const providedScopes = state.scope?.split(\" \") || [];\n\n scope = providedScopes.filter(s => allowableScopes.includes(s)).join(\" \");\n }\n\n const result = await this._tokenClient.exchangeRefreshToken({\n refresh_token: state.refresh_token,\n resource: state.resource,\n // provide the (possible filtered) scope list\n scope,\n timeoutInSeconds,\n });\n const response = new SigninResponse(new URLSearchParams());\n Object.assign(response, result);\n logger.debug(\"validating response\", response);\n await this._validator.validateRefreshResponse(response, {\n ...state,\n // overide the scope in the state handed over to the validator\n // so it can set the granted scope to the requested scope in case none is included in the response\n scope,\n });\n return response;\n }\n\n public async createSignoutRequest({\n state,\n id_token_hint,\n client_id,\n request_type,\n post_logout_redirect_uri = this.settings.post_logout_redirect_uri,\n extraQueryParams = this.settings.extraQueryParams,\n }: CreateSignoutRequestArgs = {}): Promise {\n const logger = this._logger.create(\"createSignoutRequest\");\n\n const url = await this.metadataService.getEndSessionEndpoint();\n if (!url) {\n logger.throw(new Error(\"No end session endpoint\"));\n throw null; // https://github.com/microsoft/TypeScript/issues/46972\n }\n\n logger.debug(\"Received end session endpoint\", url);\n\n // specify the client identifier when post_logout_redirect_uri is used but id_token_hint is not\n if (!client_id && post_logout_redirect_uri && !id_token_hint) {\n client_id = this.settings.client_id;\n }\n\n const request = new SignoutRequest({\n url,\n id_token_hint,\n client_id,\n post_logout_redirect_uri,\n state_data: state,\n extraQueryParams,\n request_type,\n });\n\n // house cleaning\n await this.clearStaleState();\n\n const signoutState = request.state;\n if (signoutState) {\n logger.debug(\"Signout request has state to persist\");\n await this.settings.stateStore.set(signoutState.id, signoutState.toStorageString());\n }\n\n return request;\n }\n\n public async readSignoutResponseState(url: string, removeState = false): Promise<{ state: State | undefined; response: SignoutResponse }> {\n const logger = this._logger.create(\"readSignoutResponseState\");\n\n const response = new SignoutResponse(UrlUtils.readParams(url, this.settings.response_mode));\n if (!response.state) {\n logger.debug(\"No state in response\");\n\n if (response.error) {\n logger.warn(\"Response was error:\", response.error);\n throw new ErrorResponse(response);\n }\n\n return { state: undefined, response };\n }\n\n const storedStateString = await this.settings.stateStore[removeState ? \"remove\" : \"get\"](response.state);\n if (!storedStateString) {\n logger.throw(new Error(\"No matching state found in storage\"));\n throw null; // https://github.com/microsoft/TypeScript/issues/46972\n }\n\n const state = State.fromStorageString(storedStateString);\n return { state, response };\n }\n\n public async processSignoutResponse(url: string): Promise {\n const logger = this._logger.create(\"processSignoutResponse\");\n\n const { state, response } = await this.readSignoutResponseState(url, true);\n if (state) {\n logger.debug(\"Received state from storage; validating response\");\n this._validator.validateSignoutResponse(response, state);\n } else {\n logger.debug(\"No state from storage; skipping response validation\");\n }\n\n return response;\n }\n\n public clearStaleState(): Promise {\n this._logger.create(\"clearStaleState\");\n return State.clearStaleState(this.settings.stateStore, this.settings.staleStateAgeInSeconds);\n }\n\n public async revokeToken(token: string, type?: \"access_token\" | \"refresh_token\"): Promise {\n this._logger.create(\"revokeToken\");\n return await this._tokenClient.revoke({\n token,\n token_type_hint: type,\n });\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"./utils\";\nimport { CheckSessionIFrame } from \"./CheckSessionIFrame\";\nimport type { UserManager } from \"./UserManager\";\nimport type { User } from \"./User\";\n\n/**\n * @public\n */\nexport class SessionMonitor {\n private readonly _logger = new Logger(\"SessionMonitor\");\n\n private _sub: string | undefined;\n private _sid: string | undefined;\n private _checkSessionIFrame?: CheckSessionIFrame;\n\n public constructor(private readonly _userManager: UserManager) {\n if (!_userManager) {\n this._logger.throw(new Error(\"No user manager passed\"));\n }\n\n this._userManager.events.addUserLoaded(this._start);\n this._userManager.events.addUserUnloaded(this._stop);\n\n this._init().catch((err: unknown) => {\n // catch to suppress errors since we're in a ctor\n this._logger.error(err);\n });\n }\n\n protected async _init(): Promise {\n this._logger.create(\"_init\");\n const user = await this._userManager.getUser();\n // doing this manually here since calling getUser\n // doesn't trigger load event.\n if (user) {\n void this._start(user);\n }\n else if (this._userManager.settings.monitorAnonymousSession) {\n const session = await this._userManager.querySessionStatus();\n if (session) {\n const tmpUser = {\n session_state: session.session_state,\n profile: session.sub && session.sid ? {\n sub: session.sub,\n sid: session.sid,\n } : null,\n };\n void this._start(tmpUser);\n }\n }\n }\n\n protected _start = async (\n user: User | {\n session_state: string;\n profile: { sub: string; sid: string } | null;\n },\n ): Promise => {\n const session_state = user.session_state;\n if (!session_state) {\n return;\n }\n const logger = this._logger.create(\"_start\");\n\n if (user.profile) {\n this._sub = user.profile.sub;\n this._sid = user.profile.sid;\n logger.debug(\"session_state\", session_state, \", sub\", this._sub);\n }\n else {\n this._sub = undefined;\n this._sid = undefined;\n logger.debug(\"session_state\", session_state, \", anonymous user\");\n }\n\n if (this._checkSessionIFrame) {\n this._checkSessionIFrame.start(session_state);\n return;\n }\n\n try {\n const url = await this._userManager.metadataService.getCheckSessionIframe();\n if (url) {\n logger.debug(\"initializing check session iframe\");\n\n const client_id = this._userManager.settings.client_id;\n const intervalInSeconds = this._userManager.settings.checkSessionIntervalInSeconds;\n const stopOnError = this._userManager.settings.stopCheckSessionOnError;\n\n const checkSessionIFrame = new CheckSessionIFrame(this._callback, client_id, url, intervalInSeconds, stopOnError);\n await checkSessionIFrame.load();\n this._checkSessionIFrame = checkSessionIFrame;\n checkSessionIFrame.start(session_state);\n }\n else {\n logger.warn(\"no check session iframe found in the metadata\");\n }\n }\n catch (err) {\n // catch to suppress errors since we're in non-promise callback\n logger.error(\"Error from getCheckSessionIframe:\", err instanceof Error ? err.message : err);\n }\n };\n\n protected _stop = (): void => {\n const logger = this._logger.create(\"_stop\");\n this._sub = undefined;\n this._sid = undefined;\n\n if (this._checkSessionIFrame) {\n this._checkSessionIFrame.stop();\n }\n\n if (this._userManager.settings.monitorAnonymousSession) {\n // using a timer to delay re-initialization to avoid race conditions during signout\n // TODO rewrite to use promise correctly\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const timerHandle = setInterval(async () => {\n clearInterval(timerHandle);\n\n try {\n const session = await this._userManager.querySessionStatus();\n if (session) {\n const tmpUser = {\n session_state: session.session_state,\n profile: session.sub && session.sid ? {\n sub: session.sub,\n sid: session.sid,\n } : null,\n };\n void this._start(tmpUser);\n }\n }\n catch (err) {\n // catch to suppress errors since we're in a callback\n logger.error(\"error from querySessionStatus\", err instanceof Error ? err.message : err);\n }\n }, 1000);\n }\n };\n\n protected _callback = async (): Promise => {\n const logger = this._logger.create(\"_callback\");\n try {\n const session = await this._userManager.querySessionStatus();\n let raiseEvent = true;\n\n if (session && this._checkSessionIFrame) {\n if (session.sub === this._sub) {\n raiseEvent = false;\n this._checkSessionIFrame.start(session.session_state);\n\n if (session.sid === this._sid) {\n logger.debug(\"same sub still logged in at OP, restarting check session iframe; session_state\", session.session_state);\n }\n else {\n logger.debug(\"same sub still logged in at OP, session state has changed, restarting check session iframe; session_state\", session.session_state);\n this._userManager.events._raiseUserSessionChanged();\n }\n }\n else {\n logger.debug(\"different subject signed into OP\", session.sub);\n }\n }\n else {\n logger.debug(\"subject no longer signed into OP\");\n }\n\n if (raiseEvent) {\n if (this._sub) {\n this._userManager.events._raiseUserSignedOut();\n }\n else {\n this._userManager.events._raiseUserSignedIn();\n }\n } else {\n logger.debug(\"no change in session detected, no event to raise\");\n }\n }\n catch (err) {\n if (this._sub) {\n logger.debug(\"Error calling queryCurrentSigninSession; raising signed out event\", err);\n this._userManager.events._raiseUserSignedOut();\n }\n }\n };\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, Timer } from \"./utils\";\nimport type { IdTokenClaims } from \"./Claims\";\n\n/**\n * Holds claims represented by a combination of the `id_token` and the user info endpoint.\n * @public\n */\nexport type UserProfile = IdTokenClaims;\n\n/**\n * @public\n */\nexport class User {\n /**\n * A JSON Web Token (JWT). Only provided if `openid` scope was requested.\n * The application can access the data decoded by using the `profile` property.\n */\n public id_token?: string;\n\n /** The session state value returned from the OIDC provider. */\n public session_state: string | null;\n\n /**\n * The requested access token returned from the OIDC provider. The application can use this token to\n * authenticate itself to the secured resource.\n */\n public access_token: string;\n\n /**\n * An OAuth 2.0 refresh token. The app can use this token to acquire additional access tokens after the\n * current access token expires. Refresh tokens are long-lived and can be used to maintain access to resources\n * for extended periods of time.\n */\n public refresh_token?: string;\n\n /** Typically \"Bearer\" */\n public token_type: string;\n\n /** The scopes that the requested access token is valid for. */\n public scope?: string;\n\n /** The claims represented by a combination of the `id_token` and the user info endpoint. */\n public profile: UserProfile;\n\n /** The expires at returned from the OIDC provider. */\n public expires_at?: number;\n\n /** custom state data set during the initial signin request */\n public readonly state: unknown;\n public readonly url_state?: string;\n\n public constructor(args: {\n id_token?: string;\n session_state?: string | null;\n access_token: string;\n refresh_token?: string;\n token_type: string;\n scope?: string;\n profile: UserProfile;\n expires_at?: number;\n userState?: unknown;\n url_state?: string;\n }) {\n this.id_token = args.id_token;\n this.session_state = args.session_state ?? null;\n this.access_token = args.access_token;\n this.refresh_token = args.refresh_token;\n\n this.token_type = args.token_type;\n this.scope = args.scope;\n this.profile = args.profile;\n this.expires_at = args.expires_at;\n this.state = args.userState;\n this.url_state = args.url_state;\n }\n\n /** Computed number of seconds the access token has remaining. */\n public get expires_in(): number | undefined {\n if (this.expires_at === undefined) {\n return undefined;\n }\n return this.expires_at - Timer.getEpochTime();\n }\n\n public set expires_in(value: number | undefined) {\n if (value !== undefined) {\n this.expires_at = Math.floor(value) + Timer.getEpochTime();\n }\n }\n\n /** Computed value indicating if the access token is expired. */\n public get expired(): boolean | undefined {\n const expires_in = this.expires_in;\n if (expires_in === undefined) {\n return undefined;\n }\n return expires_in <= 0;\n }\n\n /** Array representing the parsed values from the `scope`. */\n public get scopes(): string[] {\n return this.scope?.split(\" \") ?? [];\n }\n\n public toStorageString(): string {\n new Logger(\"User\").create(\"toStorageString\");\n return JSON.stringify({\n id_token: this.id_token,\n session_state: this.session_state,\n access_token: this.access_token,\n refresh_token: this.refresh_token,\n token_type: this.token_type,\n scope: this.scope,\n profile: this.profile,\n expires_at: this.expires_at,\n });\n }\n\n public static fromStorageString(storageString: string): User {\n Logger.createStatic(\"User\", \"fromStorageString\");\n return new User(JSON.parse(storageString));\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Event, Logger, UrlUtils } from \"../utils\";\nimport type { IWindow, NavigateParams, NavigateResponse } from \"./IWindow\";\n\nconst messageSource = \"oidc-client\";\n\ninterface MessageData {\n source: string;\n url: string;\n keepOpen: boolean;\n}\n\n/**\n * Window implementation which resolves via communication from a child window\n * via the `Window.postMessage()` interface.\n *\n * @internal\n */\nexport abstract class AbstractChildWindow implements IWindow {\n protected abstract readonly _logger: Logger;\n protected readonly _abort = new Event<[reason: Error]>(\"Window navigation aborted\");\n protected readonly _disposeHandlers = new Set<() => void>();\n\n protected _window: WindowProxy | null = null;\n\n public async navigate(params: NavigateParams): Promise {\n const logger = this._logger.create(\"navigate\");\n if (!this._window) {\n throw new Error(\"Attempted to navigate on a disposed window\");\n }\n\n logger.debug(\"setting URL in window\");\n this._window.location.replace(params.url);\n\n const { url, keepOpen } = await new Promise((resolve, reject) => {\n const listener = (e: MessageEvent) => {\n const data: MessageData | undefined = e.data;\n const origin = params.scriptOrigin ?? window.location.origin;\n if (e.origin !== origin || data?.source !== messageSource) {\n // silently discard events not intended for us\n return;\n }\n try {\n const state = UrlUtils.readParams(data.url, params.response_mode).get(\"state\");\n if (!state) {\n logger.warn(\"no state found in response url\");\n }\n if (e.source !== this._window && state !== params.state) {\n // MessageEvent source is a relatively modern feature, we can't rely on it\n // so we also inspect the payload for a matching state key as an alternative\n return;\n }\n }\n catch (err) {\n this._dispose();\n reject(new Error(\"Invalid response from window\"));\n }\n resolve(data);\n };\n window.addEventListener(\"message\", listener, false);\n this._disposeHandlers.add(() => window.removeEventListener(\"message\", listener, false));\n this._disposeHandlers.add(this._abort.addHandler((reason) => {\n this._dispose();\n reject(reason);\n }));\n });\n logger.debug(\"got response from window\");\n this._dispose();\n\n if (!keepOpen) {\n this.close();\n }\n\n return { url };\n }\n\n public abstract close(): void;\n\n private _dispose(): void {\n this._logger.create(\"_dispose\");\n\n for (const dispose of this._disposeHandlers) {\n dispose();\n }\n this._disposeHandlers.clear();\n }\n\n protected static _notifyParent(parent: Window, url: string, keepOpen = false, targetOrigin = window.location.origin): void {\n parent.postMessage({\n source: messageSource,\n url,\n keepOpen,\n } as MessageData, targetOrigin);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { type OidcClientSettings, OidcClientSettingsStore } from \"./OidcClientSettings\";\nimport type { PopupWindowFeatures } from \"./utils/PopupUtils\";\nimport { WebStorageStateStore } from \"./WebStorageStateStore\";\nimport { InMemoryWebStorage } from \"./InMemoryWebStorage\";\n\nexport const DefaultPopupWindowFeatures: PopupWindowFeatures = {\n location: false,\n toolbar: false,\n height: 640,\n closePopupWindowAfterInSeconds: -1,\n};\nexport const DefaultPopupTarget = \"_blank\";\nconst DefaultAccessTokenExpiringNotificationTimeInSeconds = 60;\nconst DefaultCheckSessionIntervalInSeconds = 2;\nexport const DefaultSilentRequestTimeoutInSeconds = 10;\n\n/**\n * The settings used to configure the {@link UserManager}.\n *\n * @public\n */\nexport interface UserManagerSettings extends OidcClientSettings {\n /** The URL for the page containing the call to signinPopupCallback to handle the callback from the OIDC/OAuth2 */\n popup_redirect_uri?: string;\n popup_post_logout_redirect_uri?: string;\n /**\n * The features parameter to window.open for the popup signin window. By default, the popup is\n * placed centered in front of the window opener.\n * (default: \\{ location: false, menubar: false, height: 640, closePopupWindowAfterInSeconds: -1 \\})\n */\n popupWindowFeatures?: PopupWindowFeatures;\n /** The target parameter to window.open for the popup signin window (default: \"_blank\") */\n popupWindowTarget?: string;\n /** The methods window.location method used to redirect (default: \"assign\") */\n redirectMethod?: \"replace\" | \"assign\";\n /** The methods target window being redirected (default: \"self\") */\n redirectTarget?: \"top\" | \"self\";\n\n /** The target to pass while calling postMessage inside iframe for callback (default: window.location.origin) */\n iframeNotifyParentOrigin?: string;\n\n /** The script origin to check during 'message' callback execution while performing silent auth via iframe (default: window.location.origin) */\n iframeScriptOrigin?: string;\n\n /** The URL for the page containing the code handling the silent renew */\n silent_redirect_uri?: string;\n /** Number of seconds to wait for the silent renew to return before assuming it has failed or timed out (default: 10) */\n silentRequestTimeoutInSeconds?: number;\n /** Flag to indicate if there should be an automatic attempt to renew the access token prior to its expiration. The automatic renew attempt starts 1 minute before the access token expires (default: true) */\n automaticSilentRenew?: boolean;\n /** Flag to validate user.profile.sub in silent renew calls (default: true) */\n validateSubOnSilentRenew?: boolean;\n /** Flag to control if id_token is included as id_token_hint in silent renew calls (default: false) */\n includeIdTokenInSilentRenew?: boolean;\n\n /** Will raise events for when user has performed a signout at the OP (default: false) */\n monitorSession?: boolean;\n monitorAnonymousSession?: boolean;\n /** Interval in seconds to check the user's session (default: 2) */\n checkSessionIntervalInSeconds?: number;\n query_status_response_type?: string;\n stopCheckSessionOnError?: boolean;\n\n /**\n * The `token_type_hint`s to pass to the authority server by default (default: [\"access_token\", \"refresh_token\"])\n *\n * Token types will be revoked in the same order as they are given here.\n */\n revokeTokenTypes?: (\"access_token\" | \"refresh_token\")[];\n /** Will invoke the revocation endpoint on signout if there is an access token for the user (default: false) */\n revokeTokensOnSignout?: boolean;\n /** Flag to control if id_token is included as id_token_hint in silent signout calls (default: false) */\n includeIdTokenInSilentSignout?: boolean;\n\n /** The number of seconds before an access token is to expire to raise the accessTokenExpiring event (default: 60) */\n accessTokenExpiringNotificationTimeInSeconds?: number;\n\n /**\n * Storage object used to persist User for currently authenticated user (default: window.sessionStorage, InMemoryWebStorage iff no window).\n * E.g. `userStore: new WebStorageStateStore({ store: window.localStorage })`\n */\n userStore?: WebStorageStateStore;\n}\n\n/**\n * The settings with defaults applied of the {@link UserManager}.\n * @see {@link UserManagerSettings}\n *\n * @public\n */\nexport class UserManagerSettingsStore extends OidcClientSettingsStore {\n public readonly popup_redirect_uri: string;\n public readonly popup_post_logout_redirect_uri: string | undefined;\n public readonly popupWindowFeatures: PopupWindowFeatures;\n public readonly popupWindowTarget: string;\n public readonly redirectMethod: \"replace\" | \"assign\";\n public readonly redirectTarget: \"top\" | \"self\";\n\n public readonly iframeNotifyParentOrigin: string | undefined;\n public readonly iframeScriptOrigin: string | undefined;\n\n public readonly silent_redirect_uri: string;\n public readonly silentRequestTimeoutInSeconds: number;\n public readonly automaticSilentRenew: boolean;\n public readonly validateSubOnSilentRenew: boolean;\n public readonly includeIdTokenInSilentRenew: boolean;\n\n public readonly monitorSession: boolean;\n public readonly monitorAnonymousSession: boolean;\n public readonly checkSessionIntervalInSeconds: number;\n public readonly query_status_response_type: string;\n public readonly stopCheckSessionOnError: boolean;\n\n public readonly revokeTokenTypes: (\"access_token\" | \"refresh_token\")[];\n public readonly revokeTokensOnSignout: boolean;\n public readonly includeIdTokenInSilentSignout: boolean;\n\n public readonly accessTokenExpiringNotificationTimeInSeconds: number;\n\n public readonly userStore: WebStorageStateStore;\n\n public constructor(args: UserManagerSettings) {\n const {\n popup_redirect_uri = args.redirect_uri,\n popup_post_logout_redirect_uri = args.post_logout_redirect_uri,\n popupWindowFeatures = DefaultPopupWindowFeatures,\n popupWindowTarget = DefaultPopupTarget,\n redirectMethod = \"assign\",\n redirectTarget = \"self\",\n\n iframeNotifyParentOrigin = args.iframeNotifyParentOrigin,\n iframeScriptOrigin = args.iframeScriptOrigin,\n\n silent_redirect_uri = args.redirect_uri,\n silentRequestTimeoutInSeconds = DefaultSilentRequestTimeoutInSeconds,\n automaticSilentRenew = true,\n validateSubOnSilentRenew = true,\n includeIdTokenInSilentRenew = false,\n\n monitorSession = false,\n monitorAnonymousSession = false,\n checkSessionIntervalInSeconds = DefaultCheckSessionIntervalInSeconds,\n query_status_response_type = \"code\",\n stopCheckSessionOnError = true,\n\n revokeTokenTypes = [\"access_token\", \"refresh_token\"],\n revokeTokensOnSignout = false,\n includeIdTokenInSilentSignout = false,\n\n accessTokenExpiringNotificationTimeInSeconds = DefaultAccessTokenExpiringNotificationTimeInSeconds,\n\n userStore,\n } = args;\n\n super(args);\n\n this.popup_redirect_uri = popup_redirect_uri;\n this.popup_post_logout_redirect_uri = popup_post_logout_redirect_uri;\n this.popupWindowFeatures = popupWindowFeatures;\n this.popupWindowTarget = popupWindowTarget;\n this.redirectMethod = redirectMethod;\n this.redirectTarget = redirectTarget;\n\n this.iframeNotifyParentOrigin = iframeNotifyParentOrigin;\n this.iframeScriptOrigin = iframeScriptOrigin;\n\n this.silent_redirect_uri = silent_redirect_uri;\n this.silentRequestTimeoutInSeconds = silentRequestTimeoutInSeconds;\n this.automaticSilentRenew = automaticSilentRenew;\n this.validateSubOnSilentRenew = validateSubOnSilentRenew;\n this.includeIdTokenInSilentRenew = includeIdTokenInSilentRenew;\n\n this.monitorSession = monitorSession;\n this.monitorAnonymousSession = monitorAnonymousSession;\n this.checkSessionIntervalInSeconds = checkSessionIntervalInSeconds;\n this.stopCheckSessionOnError = stopCheckSessionOnError;\n this.query_status_response_type = query_status_response_type;\n\n this.revokeTokenTypes = revokeTokenTypes;\n this.revokeTokensOnSignout = revokeTokensOnSignout;\n this.includeIdTokenInSilentSignout = includeIdTokenInSilentSignout;\n\n this.accessTokenExpiringNotificationTimeInSeconds = accessTokenExpiringNotificationTimeInSeconds;\n\n if (userStore) {\n this.userStore = userStore;\n }\n else {\n const store = typeof window !== \"undefined\" ? window.sessionStorage : new InMemoryWebStorage();\n this.userStore = new WebStorageStateStore({ store });\n }\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"../utils\";\nimport { ErrorTimeout } from \"../errors\";\nimport type { NavigateParams, NavigateResponse } from \"./IWindow\";\nimport { AbstractChildWindow } from \"./AbstractChildWindow\";\nimport { DefaultSilentRequestTimeoutInSeconds } from \"../UserManagerSettings\";\n\n/**\n * @public\n */\nexport interface IFrameWindowParams {\n silentRequestTimeoutInSeconds?: number;\n}\n\n/**\n * @internal\n */\nexport class IFrameWindow extends AbstractChildWindow {\n protected readonly _logger = new Logger(\"IFrameWindow\");\n private _frame: HTMLIFrameElement | null;\n private _timeoutInSeconds: number;\n\n public constructor({\n silentRequestTimeoutInSeconds = DefaultSilentRequestTimeoutInSeconds,\n }: IFrameWindowParams) {\n super();\n this._timeoutInSeconds = silentRequestTimeoutInSeconds;\n\n this._frame = IFrameWindow.createHiddenIframe();\n this._window = this._frame.contentWindow;\n }\n\n private static createHiddenIframe(): HTMLIFrameElement {\n const iframe = window.document.createElement(\"iframe\");\n\n // shotgun approach\n iframe.style.visibility = \"hidden\";\n iframe.style.position = \"fixed\";\n iframe.style.left = \"-1000px\";\n iframe.style.top = \"0\";\n iframe.width = \"0\";\n iframe.height = \"0\";\n\n window.document.body.appendChild(iframe);\n return iframe;\n }\n\n public async navigate(params: NavigateParams): Promise {\n this._logger.debug(\"navigate: Using timeout of:\", this._timeoutInSeconds);\n const timer = setTimeout(() => this._abort.raise(new ErrorTimeout(\"IFrame timed out without a response\")), this._timeoutInSeconds * 1000);\n this._disposeHandlers.add(() => clearTimeout(timer));\n\n return await super.navigate(params);\n }\n\n public close(): void {\n if (this._frame) {\n if (this._frame.parentNode) {\n this._frame.addEventListener(\"load\", (ev) => {\n const frame = ev.target as HTMLIFrameElement;\n frame.parentNode?.removeChild(frame);\n this._abort.raise(new Error(\"IFrame removed from DOM\"));\n }, true);\n this._frame.contentWindow?.location.replace(\"about:blank\");\n }\n this._frame = null;\n }\n this._window = null;\n }\n\n public static notifyParent(url: string, targetOrigin?: string): void {\n return super._notifyParent(window.parent, url, false, targetOrigin);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"../utils\";\nimport type { UserManagerSettingsStore } from \"../UserManagerSettings\";\nimport { IFrameWindow, type IFrameWindowParams } from \"./IFrameWindow\";\nimport type { INavigator } from \"./INavigator\";\n\n/**\n * @internal\n */\nexport class IFrameNavigator implements INavigator {\n private readonly _logger = new Logger(\"IFrameNavigator\");\n\n constructor(private _settings: UserManagerSettingsStore) {}\n\n public async prepare({\n silentRequestTimeoutInSeconds = this._settings.silentRequestTimeoutInSeconds,\n }: IFrameWindowParams): Promise {\n return new IFrameWindow({ silentRequestTimeoutInSeconds });\n }\n\n public async callback(url: string): Promise {\n this._logger.create(\"callback\");\n IFrameWindow.notifyParent(url, this._settings.iframeNotifyParentOrigin);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, PopupUtils, type PopupWindowFeatures } from \"../utils\";\nimport { DefaultPopupWindowFeatures, DefaultPopupTarget } from \"../UserManagerSettings\";\nimport { AbstractChildWindow } from \"./AbstractChildWindow\";\nimport type { NavigateParams, NavigateResponse } from \"./IWindow\";\n\nconst checkForPopupClosedInterval = 500;\nconst second = 1000;\n\n/**\n * @public\n */\nexport interface PopupWindowParams {\n popupWindowFeatures?: PopupWindowFeatures;\n popupWindowTarget?: string;\n}\n\n/**\n * @internal\n */\nexport class PopupWindow extends AbstractChildWindow {\n protected readonly _logger = new Logger(\"PopupWindow\");\n\n protected _window: WindowProxy | null;\n\n public constructor({\n popupWindowTarget = DefaultPopupTarget,\n popupWindowFeatures = {},\n }: PopupWindowParams) {\n super();\n const centeredPopup = PopupUtils.center({ ...DefaultPopupWindowFeatures, ...popupWindowFeatures });\n this._window = window.open(undefined, popupWindowTarget, PopupUtils.serialize(centeredPopup));\n if (popupWindowFeatures.closePopupWindowAfterInSeconds && popupWindowFeatures.closePopupWindowAfterInSeconds > 0) {\n setTimeout(() => {\n if (!this._window || typeof this._window.closed !== \"boolean\" || this._window.closed) {\n this._abort.raise(new Error(\"Popup blocked by user\"));\n return;\n }\n\n this.close();\n }, popupWindowFeatures.closePopupWindowAfterInSeconds * second);\n }\n }\n\n public async navigate(params: NavigateParams): Promise {\n this._window?.focus();\n\n const popupClosedInterval = setInterval(() => {\n if (!this._window || this._window.closed) {\n this._abort.raise(new Error(\"Popup closed by user\"));\n }\n }, checkForPopupClosedInterval);\n this._disposeHandlers.add(() => clearInterval(popupClosedInterval));\n\n return await super.navigate(params);\n }\n\n public close(): void {\n if (this._window) {\n if (!this._window.closed) {\n this._window.close();\n this._abort.raise(new Error(\"Popup closed\"));\n }\n }\n this._window = null;\n }\n\n public static notifyOpener(url: string, keepOpen: boolean): void {\n if (!window.opener) {\n throw new Error(\"No window.opener. Can't complete notification.\");\n }\n return super._notifyParent(window.opener, url, keepOpen);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"../utils\";\nimport { PopupWindow, type PopupWindowParams } from \"./PopupWindow\";\nimport type { INavigator } from \"./INavigator\";\nimport type { UserManagerSettingsStore } from \"../UserManagerSettings\";\n\n/**\n * @internal\n */\nexport class PopupNavigator implements INavigator {\n private readonly _logger = new Logger(\"PopupNavigator\");\n\n constructor(private _settings: UserManagerSettingsStore) {}\n\n public async prepare({\n popupWindowFeatures = this._settings.popupWindowFeatures,\n popupWindowTarget = this._settings.popupWindowTarget,\n }: PopupWindowParams): Promise {\n return new PopupWindow({ popupWindowFeatures, popupWindowTarget });\n }\n\n public async callback(url: string, { keepOpen = false }): Promise {\n this._logger.create(\"callback\");\n\n PopupWindow.notifyOpener(url, keepOpen);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"../utils\";\nimport type { UserManagerSettingsStore } from \"../UserManagerSettings\";\nimport type { INavigator } from \"./INavigator\";\nimport type { IWindow } from \"./IWindow\";\n\n/**\n * @public\n */\nexport interface RedirectParams {\n redirectMethod?: \"replace\" | \"assign\";\n redirectTarget?: \"top\" | \"self\";\n}\n\n/**\n * @internal\n */\nexport class RedirectNavigator implements INavigator {\n private readonly _logger = new Logger(\"RedirectNavigator\");\n\n constructor(private _settings: UserManagerSettingsStore) {}\n\n public async prepare({\n redirectMethod = this._settings.redirectMethod,\n redirectTarget = this._settings.redirectTarget,\n }: RedirectParams): Promise {\n this._logger.create(\"prepare\");\n let targetWindow = window.self as Window;\n\n if (redirectTarget === \"top\") {\n targetWindow = window.top ?? window.self;\n }\n \n const redirect = targetWindow.location[redirectMethod].bind(targetWindow.location) as (url: string) => never;\n let abort: (reason: Error) => void;\n return {\n navigate: async (params): Promise => {\n this._logger.create(\"navigate\");\n // We use a promise that never resolves to block the caller\n const promise = new Promise((resolve, reject) => {\n abort = reject;\n });\n redirect(params.url);\n return await (promise as Promise);\n },\n close: () => {\n this._logger.create(\"close\");\n abort?.(new Error(\"Redirect aborted\"));\n targetWindow.stop();\n },\n };\n }\n\n public async callback(): Promise {\n return;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, Event } from \"./utils\";\nimport { AccessTokenEvents } from \"./AccessTokenEvents\";\nimport type { UserManagerSettingsStore } from \"./UserManagerSettings\";\nimport type { User } from \"./User\";\n\n/**\n * @public\n */\nexport type UserLoadedCallback = (user: User) => Promise | void;\n/**\n * @public\n */\nexport type UserUnloadedCallback = () => Promise | void;\n/**\n * @public\n */\nexport type SilentRenewErrorCallback = (error: Error) => Promise | void;\n/**\n * @public\n */\nexport type UserSignedInCallback = () => Promise | void;\n/**\n * @public\n */\nexport type UserSignedOutCallback = () => Promise | void;\n/**\n * @public\n */\nexport type UserSessionChangedCallback = () => Promise | void;\n\n/**\n * @public\n */\nexport class UserManagerEvents extends AccessTokenEvents {\n protected readonly _logger = new Logger(\"UserManagerEvents\");\n\n private readonly _userLoaded = new Event<[User]>(\"User loaded\");\n private readonly _userUnloaded = new Event<[]>(\"User unloaded\");\n private readonly _silentRenewError = new Event<[Error]>(\"Silent renew error\");\n private readonly _userSignedIn = new Event<[]>(\"User signed in\");\n private readonly _userSignedOut = new Event<[]>(\"User signed out\");\n private readonly _userSessionChanged = new Event<[]>(\"User session changed\");\n\n public constructor(settings: UserManagerSettingsStore) {\n super({ expiringNotificationTimeInSeconds: settings.accessTokenExpiringNotificationTimeInSeconds });\n }\n\n public load(user: User, raiseEvent=true): void {\n super.load(user);\n if (raiseEvent) {\n this._userLoaded.raise(user);\n }\n }\n public unload(): void {\n super.unload();\n this._userUnloaded.raise();\n }\n\n /**\n * Add callback: Raised when a user session has been established (or re-established).\n */\n public addUserLoaded(cb: UserLoadedCallback): () => void {\n return this._userLoaded.addHandler(cb);\n }\n /**\n * Remove callback: Raised when a user session has been established (or re-established).\n */\n public removeUserLoaded(cb: UserLoadedCallback): void {\n return this._userLoaded.removeHandler(cb);\n }\n\n /**\n * Add callback: Raised when a user session has been terminated.\n */\n public addUserUnloaded(cb: UserUnloadedCallback): () => void {\n return this._userUnloaded.addHandler(cb);\n }\n /**\n * Remove callback: Raised when a user session has been terminated.\n */\n public removeUserUnloaded(cb: UserUnloadedCallback): void {\n return this._userUnloaded.removeHandler(cb);\n }\n\n /**\n * Add callback: Raised when the automatic silent renew has failed.\n */\n public addSilentRenewError(cb: SilentRenewErrorCallback): () => void {\n return this._silentRenewError.addHandler(cb);\n }\n /**\n * Remove callback: Raised when the automatic silent renew has failed.\n */\n public removeSilentRenewError(cb: SilentRenewErrorCallback): void {\n return this._silentRenewError.removeHandler(cb);\n }\n /**\n * @internal\n */\n public _raiseSilentRenewError(e: Error): void {\n this._silentRenewError.raise(e);\n }\n\n /**\n * Add callback: Raised when the user is signed in (when `monitorSession` is set).\n * @see {@link UserManagerSettings.monitorSession}\n */\n public addUserSignedIn(cb: UserSignedInCallback): () => void {\n return this._userSignedIn.addHandler(cb);\n }\n /**\n * Remove callback: Raised when the user is signed in (when `monitorSession` is set).\n */\n public removeUserSignedIn(cb: UserSignedInCallback): void {\n this._userSignedIn.removeHandler(cb);\n }\n /**\n * @internal\n */\n public _raiseUserSignedIn(): void {\n this._userSignedIn.raise();\n }\n\n /**\n * Add callback: Raised when the user's sign-in status at the OP has changed (when `monitorSession` is set).\n * @see {@link UserManagerSettings.monitorSession}\n */\n public addUserSignedOut(cb: UserSignedOutCallback): () => void {\n return this._userSignedOut.addHandler(cb);\n }\n /**\n * Remove callback: Raised when the user's sign-in status at the OP has changed (when `monitorSession` is set).\n */\n public removeUserSignedOut(cb: UserSignedOutCallback): void {\n this._userSignedOut.removeHandler(cb);\n }\n /**\n * @internal\n */\n public _raiseUserSignedOut(): void {\n this._userSignedOut.raise();\n }\n\n /**\n * Add callback: Raised when the user session changed (when `monitorSession` is set).\n * @see {@link UserManagerSettings.monitorSession}\n */\n public addUserSessionChanged(cb: UserSessionChangedCallback): () => void {\n return this._userSessionChanged.addHandler(cb);\n }\n /**\n * Remove callback: Raised when the user session changed (when `monitorSession` is set).\n */\n public removeUserSessionChanged(cb: UserSessionChangedCallback): void {\n this._userSessionChanged.removeHandler(cb);\n }\n /**\n * @internal\n */\n public _raiseUserSessionChanged(): void {\n this._userSessionChanged.raise();\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, Timer } from \"./utils\";\nimport { ErrorTimeout } from \"./errors\";\nimport type { UserManager } from \"./UserManager\";\nimport type { AccessTokenCallback } from \"./AccessTokenEvents\";\n\n/**\n * @internal\n */\nexport class SilentRenewService {\n protected _logger = new Logger(\"SilentRenewService\");\n private _isStarted = false;\n private readonly _retryTimer = new Timer(\"Retry Silent Renew\");\n\n public constructor(private _userManager: UserManager) {}\n\n public async start(): Promise {\n const logger = this._logger.create(\"start\");\n if (!this._isStarted) {\n this._isStarted = true;\n this._userManager.events.addAccessTokenExpiring(this._tokenExpiring);\n this._retryTimer.addHandler(this._tokenExpiring);\n\n // this will trigger loading of the user so the expiring events can be initialized\n try {\n await this._userManager.getUser();\n // deliberate nop\n }\n catch (err) {\n // catch to suppress errors since we're in a ctor\n logger.error(\"getUser error\", err);\n }\n }\n }\n\n public stop(): void {\n if (this._isStarted) {\n this._retryTimer.cancel();\n this._retryTimer.removeHandler(this._tokenExpiring);\n this._userManager.events.removeAccessTokenExpiring(this._tokenExpiring);\n this._isStarted = false;\n }\n }\n\n protected _tokenExpiring: AccessTokenCallback = async () => {\n const logger = this._logger.create(\"_tokenExpiring\");\n try {\n await this._userManager.signinSilent();\n logger.debug(\"silent token renewal successful\");\n }\n catch (err) {\n if (err instanceof ErrorTimeout) {\n // no response from authority server, e.g. IFrame timeout, ...\n logger.warn(\"ErrorTimeout from signinSilent:\", err, \"retry in 5s\");\n this._retryTimer.init(5);\n return;\n }\n\n logger.error(\"Error from signinSilent:\", err);\n this._userManager.events._raiseSilentRenewError(err as Error);\n }\n };\n}\n","// Copyright (C) AuthTS Contributors\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport type { UserProfile } from \"./User\";\n\n/**\n * Fake state store implementation necessary for validating refresh token requests.\n *\n * @public\n */\nexport class RefreshState {\n /** custom \"state\", which can be used by a caller to have \"data\" round tripped */\n public readonly data?: unknown;\n\n public readonly refresh_token: string;\n public readonly id_token?: string;\n public readonly session_state: string | null;\n public readonly scope?: string;\n public readonly profile: UserProfile;\n public readonly resource?: string | string[];\n\n constructor(args: {\n refresh_token: string;\n id_token?: string;\n session_state: string | null;\n scope?: string;\n profile: UserProfile;\n\n state?: unknown;\n }, resource?: string | string[]) {\n this.refresh_token = args.refresh_token;\n this.id_token = args.id_token;\n this.session_state = args.session_state;\n this.scope = args.scope;\n this.profile = args.profile;\n this.resource = resource;\n\n this.data = args.state;\n\n }\n}\n","import React from \"react\";\nimport type {\n UserManagerSettings, UserManagerEvents, User, SessionStatus,\n SigninPopupArgs, SigninSilentArgs, SigninRedirectArgs,\n SignoutRedirectArgs, SignoutPopupArgs, QuerySessionStatusArgs,\n RevokeTokensTypes, SignoutSilentArgs, SigninResourceOwnerCredentialsArgs,\n} from \"oidc-client-ts\";\n\nimport type { AuthState } from \"./AuthState\";\n\n/**\n * @public\n */\nexport interface AuthContextProps extends AuthState {\n /**\n * UserManager functions. See [UserManager](https://github.com/authts/oidc-client-ts) for more details.\n */\n readonly settings: UserManagerSettings;\n readonly events: UserManagerEvents;\n clearStaleState(): Promise;\n removeUser(): Promise;\n signinPopup(args?: SigninPopupArgs): Promise;\n signinSilent(args?: SigninSilentArgs): Promise;\n signinRedirect(args?: SigninRedirectArgs): Promise;\n signinResourceOwnerCredentials(args: SigninResourceOwnerCredentialsArgs): Promise;\n signoutRedirect(args?: SignoutRedirectArgs): Promise;\n signoutPopup(args?: SignoutPopupArgs): Promise;\n signoutSilent(args?: SignoutSilentArgs): Promise;\n querySessionStatus(args?: QuerySessionStatusArgs): Promise;\n revokeTokens(types?: RevokeTokensTypes): Promise;\n startSilentRenew(): void;\n stopSilentRenew(): void;\n}\n\n/**\n * @public\n */\nexport const AuthContext = React.createContext(undefined);\nAuthContext.displayName = \"AuthContext\";\n","import type { User } from \"oidc-client-ts\";\n\n/**\n * The auth state which, when combined with the auth methods, make up the return object of the `useAuth` hook.\n *\n * @public\n */\nexport interface AuthState {\n /**\n * See [User](https://authts.github.io/oidc-client-ts/classes/User.html) for more details.\n */\n user?: User | null;\n\n /**\n * True when the library has been initialized and no navigator request is in progress.\n */\n isLoading: boolean;\n\n /**\n * True while the user has a valid access token.\n */\n isAuthenticated: boolean;\n\n /**\n * Tracks the status of most recent signin/signout request method.\n */\n activeNavigator?: \"signinRedirect\" | \"signinResourceOwnerCredentials\" | \"signinPopup\" | \"signinSilent\" | \"signoutRedirect\" | \"signoutPopup\" | \"signoutSilent\";\n\n /**\n * Was there a signin or silent renew error?\n */\n error?: Error;\n}\n\n/**\n * The initial auth state.\n */\nexport const initialAuthState: AuthState = {\n isLoading: true,\n isAuthenticated: false,\n};\n","/**\n * @public\n */\nexport const hasAuthParams = (location = window.location): boolean => {\n // response_mode: query\n let searchParams = new URLSearchParams(location.search);\n if ((searchParams.get(\"code\") || searchParams.get(\"error\")) &&\n searchParams.get(\"state\")) {\n return true;\n }\n\n // response_mode: fragment\n searchParams = new URLSearchParams(location.hash.replace(\"#\", \"?\"));\n if ((searchParams.get(\"code\") || searchParams.get(\"error\")) &&\n searchParams.get(\"state\")) {\n return true;\n }\n\n return false;\n};\n\nconst normalizeErrorFn = (fallbackMessage: string) => (error: unknown): Error => {\n if (error instanceof Error) {\n return error;\n }\n return new Error(fallbackMessage);\n};\n\nexport const loginError = normalizeErrorFn(\"Login failed\");\n","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { User } from \"oidc-client-ts\";\n\nimport type { AuthState } from \"./AuthState\";\n\ntype Action =\n | { type: \"INITIALISED\" | \"USER_LOADED\"; user: User | null }\n | { type: \"USER_UNLOADED\" }\n | { type: \"NAVIGATOR_INIT\"; method: NonNullable }\n | { type: \"NAVIGATOR_CLOSE\" }\n | { type: \"ERROR\"; error: Error };\n\n/**\n * Handles how that state changes in the `useAuth` hook.\n */\nexport const reducer = (state: AuthState, action: Action): AuthState => {\n switch (action.type) {\n case \"INITIALISED\":\n case \"USER_LOADED\":\n return {\n ...state,\n user: action.user,\n isLoading: false,\n isAuthenticated: action.user ? !action.user.expired : false,\n error: undefined,\n };\n case \"USER_UNLOADED\":\n return {\n ...state,\n user: undefined,\n isAuthenticated: false,\n };\n case \"NAVIGATOR_INIT\":\n return {\n ...state,\n isLoading: true,\n activeNavigator: action.method,\n };\n case \"NAVIGATOR_CLOSE\":\n // we intentionally don't handle cases where multiple concurrent navigators are open\n return {\n ...state,\n isLoading: false,\n activeNavigator: undefined,\n };\n case \"ERROR\":\n return {\n ...state,\n isLoading: false,\n error: action.error,\n };\n default:\n return {\n ...state,\n isLoading: false,\n error: new Error(`unknown type ${action[\"type\"] as string}`),\n };\n }\n};\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport { UserManager, type UserManagerSettings, User } from \"oidc-client-ts\";\nimport type {\n SignoutRedirectArgs,\n SignoutPopupArgs,\n SignoutSilentArgs,\n ProcessResourceOwnerPasswordCredentialsArgs,\n} from \"oidc-client-ts\";\n\nimport { AuthContext } from \"./AuthContext\";\nimport { initialAuthState } from \"./AuthState\";\nimport { reducer } from \"./reducer\";\nimport { hasAuthParams, loginError } from \"./utils\";\n\n/**\n * @public\n */\nexport interface AuthProviderPropsBase extends UserManagerSettings {\n /**\n * The child nodes your Provider has wrapped\n */\n children?: React.ReactNode;\n\n /**\n * On sign in callback hook. Can be a async function.\n * Here you can remove the code and state parameters from the url when you are redirected from the authorize page.\n *\n * ```jsx\n * const onSigninCallback = (_user: User | void): void => {\n * window.history.replaceState(\n * {},\n * document.title,\n * window.location.pathname\n * )\n * }\n * ```\n */\n onSigninCallback?: (user: User | void) => Promise | void;\n\n /**\n * By default, if the page url has code/state params, this provider will call automatically the userManager.signinCallback.\n * In some cases the code might be for something else (another OAuth SDK perhaps). In these\n * instances you can instruct the client to ignore them.\n *\n * ```jsx\n * \n * ```\n */\n skipSigninCallback?: boolean;\n\n /**\n * On remove user hook. Can be a async function.\n * Here you can change the url after the user is removed.\n *\n * ```jsx\n * const onRemoveUser = (): void => {\n * // go to home after logout\n * window.location.pathname = \"\"\n * }\n * ```\n */\n onRemoveUser?: () => Promise | void;\n\n /**\n * @deprecated On sign out redirect hook. Can be a async function.\n */\n onSignoutRedirect?: () => Promise | void;\n\n /**\n * @deprecated On sign out popup hook. Can be a async function.\n */\n onSignoutPopup?: () => Promise | void;\n\n /**\n * Allow passing a custom UserManager.\n */\n userManager?: UserManager;\n\n /**\n * @deprecated Allow passing a custom UserManager implementation\n */\n implementation?: typeof UserManager | null;\n}\n\n/**\n * @public\n */\nexport interface AuthProviderUserManagerProps extends Omit {\n redirect_uri?: never;\n client_id?: never;\n authority?: never;\n}\n\n/**\n * @public\n */\nexport interface AuthProviderNoUserManagerProps extends AuthProviderPropsBase {\n userManager?: never;\n}\n\n/**\n * @public\n */\nexport type AuthProviderProps = AuthProviderNoUserManagerProps | AuthProviderUserManagerProps;\n\nconst userManagerContextKeys = [\n \"clearStaleState\",\n \"querySessionStatus\",\n \"revokeTokens\",\n \"startSilentRenew\",\n \"stopSilentRenew\",\n] as const;\nconst navigatorKeys = [\n \"signinPopup\",\n \"signinSilent\",\n \"signinRedirect\",\n \"signinResourceOwnerCredentials\",\n \"signoutPopup\",\n \"signoutRedirect\",\n \"signoutSilent\",\n] as const;\nconst unsupportedEnvironment = (fnName: string) => () => {\n throw new Error(\n `UserManager#${fnName} was called from an unsupported context. If this is a server-rendered page, defer this call with useEffect() or pass a custom UserManager implementation.`,\n );\n};\nconst defaultUserManagerImpl =\n typeof window === \"undefined\" ? null : UserManager;\n\n/**\n * Provides the AuthContext to its child components.\n * @public\n */\nexport const AuthProvider = (props: AuthProviderProps): JSX.Element => {\n const {\n children,\n\n onSigninCallback,\n skipSigninCallback,\n\n onRemoveUser,\n onSignoutRedirect,\n onSignoutPopup,\n\n implementation: UserManagerImpl = defaultUserManagerImpl,\n userManager: userManagerProp,\n ...userManagerSettings\n } = props;\n\n const [userManager] = useState(() => {\n return userManagerProp ??\n (UserManagerImpl\n ? new UserManagerImpl(userManagerSettings as UserManagerSettings)\n : ({ settings: userManagerSettings } as UserManager));\n });\n\n const [state, dispatch] = useReducer(reducer, initialAuthState);\n const userManagerContext = useMemo(\n () =>\n Object.assign(\n {\n settings: userManager.settings,\n events: userManager.events,\n },\n Object.fromEntries(\n userManagerContextKeys.map((key) => [\n key,\n userManager[key]?.bind(userManager) ??\n unsupportedEnvironment(key),\n ]),\n ) as Pick,\n Object.fromEntries(\n navigatorKeys.map((key) => [\n key,\n userManager[key]\n ? async (args: ProcessResourceOwnerPasswordCredentialsArgs & never[]) => {\n dispatch({\n type: \"NAVIGATOR_INIT\",\n method: key,\n });\n try {\n return await userManager[key](args);\n } catch (error) {\n dispatch({ type: \"ERROR\", error: error as Error });\n return null;\n } finally {\n dispatch({ type: \"NAVIGATOR_CLOSE\" });\n }\n }\n : unsupportedEnvironment(key),\n ]),\n ) as Pick,\n ),\n [userManager],\n );\n const didInitialize = useRef(false);\n\n useEffect(() => {\n if (!userManager || didInitialize.current) {\n return;\n }\n didInitialize.current = true;\n\n void (async (): Promise => {\n let user: User | void | null = null;\n try {\n // check if returning back from authority server\n if (hasAuthParams() && !skipSigninCallback) {\n user = await userManager.signinCallback();\n onSigninCallback && await onSigninCallback(user);\n }\n user = !user ? await userManager.getUser() : user;\n dispatch({ type: \"INITIALISED\", user });\n } catch (error) {\n dispatch({ type: \"ERROR\", error: loginError(error) });\n }\n })();\n }, [userManager, skipSigninCallback, onSigninCallback]);\n\n // register to userManager events\n useEffect(() => {\n if (!userManager) return undefined;\n // event UserLoaded (e.g. initial load, silent renew success)\n const handleUserLoaded = (user: User) => {\n dispatch({ type: \"USER_LOADED\", user });\n };\n userManager.events.addUserLoaded(handleUserLoaded);\n\n // event UserUnloaded (e.g. userManager.removeUser)\n const handleUserUnloaded = () => {\n dispatch({ type: \"USER_UNLOADED\" });\n };\n userManager.events.addUserUnloaded(handleUserUnloaded);\n\n // event SilentRenewError (silent renew error)\n const handleSilentRenewError = (error: Error) => {\n dispatch({ type: \"ERROR\", error });\n };\n userManager.events.addSilentRenewError(handleSilentRenewError);\n\n return () => {\n userManager.events.removeUserLoaded(handleUserLoaded);\n userManager.events.removeUserUnloaded(handleUserUnloaded);\n userManager.events.removeSilentRenewError(handleSilentRenewError);\n };\n }, [userManager]);\n\n const removeUser = useCallback(\n userManager\n ? () => userManager.removeUser().then(onRemoveUser)\n : unsupportedEnvironment(\"removeUser\"),\n [userManager, onRemoveUser],\n );\n\n const signoutRedirect = useCallback(\n (args?: SignoutRedirectArgs) =>\n userManagerContext.signoutRedirect(args).then(onSignoutRedirect),\n [userManagerContext.signoutRedirect, onSignoutRedirect],\n );\n\n const signoutPopup = useCallback(\n (args?: SignoutPopupArgs) =>\n userManagerContext.signoutPopup(args).then(onSignoutPopup),\n [userManagerContext.signoutPopup, onSignoutPopup],\n );\n\n const signoutSilent = useCallback(\n (args?: SignoutSilentArgs) =>\n userManagerContext.signoutSilent(args),\n [userManagerContext.signoutSilent],\n );\n\n return (\n \n {children}\n \n );\n};\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"./utils\";\nimport { ErrorResponse } from \"./errors\";\nimport { type NavigateResponse, type PopupWindowParams, type IWindow, type IFrameWindowParams, type RedirectParams, RedirectNavigator, PopupNavigator, IFrameNavigator, type INavigator } from \"./navigators\";\nimport { OidcClient, type CreateSigninRequestArgs, type CreateSignoutRequestArgs, type ProcessResourceOwnerPasswordCredentialsArgs } from \"./OidcClient\";\nimport { type UserManagerSettings, UserManagerSettingsStore } from \"./UserManagerSettings\";\nimport { User } from \"./User\";\nimport { UserManagerEvents } from \"./UserManagerEvents\";\nimport { SilentRenewService } from \"./SilentRenewService\";\nimport { SessionMonitor } from \"./SessionMonitor\";\nimport type { SessionStatus } from \"./SessionStatus\";\nimport type { SignoutResponse } from \"./SignoutResponse\";\nimport type { MetadataService } from \"./MetadataService\";\nimport { RefreshState } from \"./RefreshState\";\nimport type { SigninResponse } from \"./SigninResponse\";\n\n/**\n * @public\n */\nexport type ExtraSigninRequestArgs = Pick;\n/**\n * @public\n */\nexport type ExtraSignoutRequestArgs = Pick;\n\n/**\n * @public\n */\nexport type RevokeTokensTypes = UserManagerSettings[\"revokeTokenTypes\"];\n\n/**\n * @public\n */\nexport type SigninRedirectArgs = RedirectParams & ExtraSigninRequestArgs;\n\n/**\n * @public\n */\nexport type SigninPopupArgs = PopupWindowParams & ExtraSigninRequestArgs;\n\n/**\n * @public\n */\nexport type SigninSilentArgs = IFrameWindowParams & ExtraSigninRequestArgs;\n\n/**\n * @public\n */\nexport type SigninResourceOwnerCredentialsArgs = ProcessResourceOwnerPasswordCredentialsArgs;\n\n/**\n * @public\n */\nexport type QuerySessionStatusArgs = IFrameWindowParams & ExtraSigninRequestArgs;\n\n/**\n * @public\n */\nexport type SignoutRedirectArgs = RedirectParams & ExtraSignoutRequestArgs;\n\n/**\n * @public\n */\nexport type SignoutPopupArgs = PopupWindowParams & ExtraSignoutRequestArgs;\n\n/**\n * @public\n */\nexport type SignoutSilentArgs = IFrameWindowParams & ExtraSignoutRequestArgs;\n\n/**\n * Provides a higher level API for signing a user in, signing out, managing the user's claims returned from the OIDC provider,\n * and managing an access token returned from the OIDC/OAuth2 provider.\n *\n * @public\n */\nexport class UserManager {\n /** Returns the settings used to configure the `UserManager`. */\n public readonly settings: UserManagerSettingsStore;\n protected readonly _logger = new Logger(\"UserManager\");\n\n protected readonly _client: OidcClient;\n protected readonly _redirectNavigator: INavigator;\n protected readonly _popupNavigator: INavigator;\n protected readonly _iframeNavigator: INavigator;\n protected readonly _events: UserManagerEvents;\n protected readonly _silentRenewService: SilentRenewService;\n protected readonly _sessionMonitor: SessionMonitor | null;\n\n public constructor(settings: UserManagerSettings, redirectNavigator?: INavigator, popupNavigator?: INavigator, iframeNavigator?: INavigator) {\n this.settings = new UserManagerSettingsStore(settings);\n\n this._client = new OidcClient(settings);\n\n this._redirectNavigator = redirectNavigator ?? new RedirectNavigator(this.settings);\n this._popupNavigator = popupNavigator ?? new PopupNavigator(this.settings);\n this._iframeNavigator = iframeNavigator ?? new IFrameNavigator(this.settings);\n\n this._events = new UserManagerEvents(this.settings);\n this._silentRenewService = new SilentRenewService(this);\n\n // order is important for the following properties; these services depend upon the events.\n if (this.settings.automaticSilentRenew) {\n this.startSilentRenew();\n }\n\n this._sessionMonitor = null;\n if (this.settings.monitorSession) {\n this._sessionMonitor = new SessionMonitor(this);\n }\n\n }\n\n /** Returns an object used to register for events raised by the `UserManager`. */\n public get events(): UserManagerEvents {\n return this._events;\n }\n\n /** Returns an object used to access the metadata configuration of the OIDC provider. */\n public get metadataService(): MetadataService {\n return this._client.metadataService;\n }\n\n /**\n * Returns promise to load the `User` object for the currently authenticated user.\n */\n public async getUser(): Promise {\n const logger = this._logger.create(\"getUser\");\n const user = await this._loadUser();\n if (user) {\n logger.info(\"user loaded\");\n this._events.load(user, false);\n return user;\n }\n\n logger.info(\"user not found in storage\");\n return null;\n }\n\n /**\n * Returns promise to remove from any storage the currently authenticated user.\n */\n public async removeUser(): Promise {\n const logger = this._logger.create(\"removeUser\");\n await this.storeUser(null);\n logger.info(\"user removed from storage\");\n this._events.unload();\n }\n\n /**\n * Returns promise to trigger a redirect of the current window to the authorization endpoint.\n */\n public async signinRedirect(args: SigninRedirectArgs = {}): Promise {\n this._logger.create(\"signinRedirect\");\n const {\n redirectMethod,\n ...requestArgs\n } = args;\n const handle = await this._redirectNavigator.prepare({ redirectMethod });\n await this._signinStart({\n request_type: \"si:r\",\n ...requestArgs,\n }, handle);\n }\n\n /**\n * Returns promise to process response from the authorization endpoint. The result of the promise is the authenticated `User`.\n */\n public async signinRedirectCallback(url = window.location.href): Promise {\n const logger = this._logger.create(\"signinRedirectCallback\");\n const user = await this._signinEnd(url);\n if (user.profile && user.profile.sub) {\n logger.info(\"success, signed in subject\", user.profile.sub);\n }\n else {\n logger.info(\"no subject\");\n }\n\n return user;\n }\n\n /**\n * Returns promise to process the signin with user/password. The result of the promise is the authenticated `User`.\n *\n * Throws an ErrorResponse in case of wrong authentication.\n */\n public async signinResourceOwnerCredentials({\n username,\n password,\n skipUserInfo = false,\n }: SigninResourceOwnerCredentialsArgs ) {\n const logger = this._logger.create(\"signinResourceOwnerCredential\");\n\n const signinResponse = await this._client.processResourceOwnerPasswordCredentials({ username, password, skipUserInfo, extraTokenParams: this.settings.extraTokenParams });\n logger.debug(\"got signin response\");\n\n const user = await this._buildUser(signinResponse);\n if (user.profile && user.profile.sub) {\n logger.info(\"success, signed in subject\", user.profile.sub);\n } else {\n logger.info(\"no subject\");\n }\n return user;\n }\n\n /**\n * Returns promise to trigger a request (via a popup window) to the authorization endpoint. The result of the promise is the authenticated `User`.\n */\n public async signinPopup(args: SigninPopupArgs = {}): Promise {\n const logger = this._logger.create(\"signinPopup\");\n const {\n popupWindowFeatures,\n popupWindowTarget,\n ...requestArgs\n } = args;\n const url = this.settings.popup_redirect_uri;\n if (!url) {\n logger.throw(new Error(\"No popup_redirect_uri configured\"));\n }\n\n const handle = await this._popupNavigator.prepare({ popupWindowFeatures, popupWindowTarget });\n const user = await this._signin({\n request_type: \"si:p\",\n redirect_uri: url,\n display: \"popup\",\n ...requestArgs,\n }, handle);\n if (user) {\n if (user.profile && user.profile.sub) {\n logger.info(\"success, signed in subject\", user.profile.sub);\n }\n else {\n logger.info(\"no subject\");\n }\n }\n\n return user;\n }\n /**\n * Returns promise to notify the opening window of response from the authorization endpoint.\n */\n public async signinPopupCallback(url = window.location.href, keepOpen = false): Promise {\n const logger = this._logger.create(\"signinPopupCallback\");\n await this._popupNavigator.callback(url, { keepOpen });\n logger.info(\"success\");\n }\n\n /**\n * Returns promise to trigger a silent request (via an iframe) to the authorization endpoint.\n * The result of the promise is the authenticated `User`.\n */\n public async signinSilent(args: SigninSilentArgs = {}): Promise {\n const logger = this._logger.create(\"signinSilent\");\n const {\n silentRequestTimeoutInSeconds,\n resource,\n ...requestArgs\n } = args;\n // first determine if we have a refresh token, or need to use iframe\n let user = await this._loadUser();\n if (user?.refresh_token) {\n logger.debug(\"using refresh token\");\n const state = new RefreshState(user as Required, resource);\n return await this._useRefreshToken(state);\n }\n\n const url = this.settings.silent_redirect_uri;\n if (!url) {\n logger.throw(new Error(\"No silent_redirect_uri configured\"));\n }\n\n let verifySub: string | undefined;\n if (user && this.settings.validateSubOnSilentRenew) {\n logger.debug(\"subject prior to silent renew:\", user.profile.sub);\n verifySub = user.profile.sub;\n }\n\n const handle = await this._iframeNavigator.prepare({ silentRequestTimeoutInSeconds });\n user = await this._signin({\n request_type: \"si:s\",\n redirect_uri: url,\n prompt: \"none\",\n id_token_hint: this.settings.includeIdTokenInSilentRenew ? user?.id_token : undefined,\n ...requestArgs,\n }, handle, verifySub);\n if (user) {\n if (user.profile?.sub) {\n logger.info(\"success, signed in subject\", user.profile.sub);\n }\n else {\n logger.info(\"no subject\");\n }\n }\n\n return user;\n }\n\n protected async _useRefreshToken(state: RefreshState): Promise {\n const response = await this._client.useRefreshToken({\n state,\n timeoutInSeconds: this.settings.silentRequestTimeoutInSeconds,\n });\n const user = new User({ ...state, ...response });\n\n await this.storeUser(user);\n this._events.load(user);\n return user;\n }\n\n /**\n * Returns promise to notify the parent window of response from the authorization endpoint.\n */\n public async signinSilentCallback(url = window.location.href): Promise {\n const logger = this._logger.create(\"signinSilentCallback\");\n await this._iframeNavigator.callback(url);\n logger.info(\"success\");\n }\n\n public async signinCallback(url = window.location.href): Promise {\n const { state } = await this._client.readSigninResponseState(url);\n switch (state.request_type) {\n case \"si:r\":\n return await this.signinRedirectCallback(url);\n case \"si:p\":\n return await this.signinPopupCallback(url);\n case \"si:s\":\n return await this.signinSilentCallback(url);\n default:\n throw new Error(\"invalid response_type in state\");\n }\n }\n\n public async signoutCallback(url = window.location.href, keepOpen = false): Promise {\n const { state } = await this._client.readSignoutResponseState(url);\n if (!state) {\n return;\n }\n\n switch (state.request_type) {\n case \"so:r\":\n await this.signoutRedirectCallback(url);\n break;\n case \"so:p\":\n await this.signoutPopupCallback(url, keepOpen);\n break;\n case \"so:s\":\n await this.signoutSilentCallback(url);\n break;\n default:\n throw new Error(\"invalid response_type in state\");\n }\n }\n\n /**\n * Returns promise to query OP for user's current signin status. Returns object with session_state and subject identifier.\n */\n public async querySessionStatus(args: QuerySessionStatusArgs = {}): Promise {\n const logger = this._logger.create(\"querySessionStatus\");\n const {\n silentRequestTimeoutInSeconds,\n ...requestArgs\n } = args;\n const url = this.settings.silent_redirect_uri;\n if (!url) {\n logger.throw(new Error(\"No silent_redirect_uri configured\"));\n }\n\n const user = await this._loadUser();\n const handle = await this._iframeNavigator.prepare({ silentRequestTimeoutInSeconds });\n const navResponse = await this._signinStart({\n request_type: \"si:s\", // this acts like a signin silent\n redirect_uri: url,\n prompt: \"none\",\n id_token_hint: this.settings.includeIdTokenInSilentRenew ? user?.id_token : undefined,\n response_type: this.settings.query_status_response_type,\n scope: \"openid\",\n skipUserInfo: true,\n ...requestArgs,\n }, handle);\n try {\n const signinResponse = await this._client.processSigninResponse(navResponse.url);\n logger.debug(\"got signin response\");\n\n if (signinResponse.session_state && signinResponse.profile.sub) {\n logger.info(\"success for subject\", signinResponse.profile.sub);\n return {\n session_state: signinResponse.session_state,\n sub: signinResponse.profile.sub,\n sid: signinResponse.profile.sid,\n };\n }\n\n logger.info(\"success, user not authenticated\");\n return null;\n }\n catch (err) {\n if (this.settings.monitorAnonymousSession && err instanceof ErrorResponse) {\n switch (err.error) {\n case \"login_required\":\n case \"consent_required\":\n case \"interaction_required\":\n case \"account_selection_required\":\n logger.info(\"success for anonymous user\");\n return {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n session_state: err.session_state!,\n };\n }\n }\n throw err;\n }\n }\n\n protected async _signin(args: CreateSigninRequestArgs, handle: IWindow, verifySub?: string): Promise {\n const navResponse = await this._signinStart(args, handle);\n return await this._signinEnd(navResponse.url, verifySub);\n }\n protected async _signinStart(args: CreateSigninRequestArgs, handle: IWindow): Promise {\n const logger = this._logger.create(\"_signinStart\");\n\n try {\n const signinRequest = await this._client.createSigninRequest(args);\n logger.debug(\"got signin request\");\n\n return await handle.navigate({\n url: signinRequest.url,\n state: signinRequest.state.id,\n response_mode: signinRequest.state.response_mode,\n scriptOrigin: this.settings.iframeScriptOrigin,\n });\n }\n catch (err) {\n logger.debug(\"error after preparing navigator, closing navigator window\");\n handle.close();\n throw err;\n }\n }\n protected async _signinEnd(url: string, verifySub?: string): Promise {\n const logger = this._logger.create(\"_signinEnd\");\n const signinResponse = await this._client.processSigninResponse(url);\n logger.debug(\"got signin response\");\n\n const user = await this._buildUser(signinResponse, verifySub);\n return user;\n }\n\n protected async _buildUser(signinResponse: SigninResponse, verifySub?: string) {\n const logger = this._logger.create(\"_buildUser\");\n const user = new User(signinResponse);\n if (verifySub) {\n if (verifySub !== user.profile.sub) {\n logger.debug(\"current user does not match user returned from signin. sub from signin:\", user.profile.sub);\n throw new ErrorResponse({ ...signinResponse, error: \"login_required\" });\n }\n logger.debug(\"current user matches user returned from signin\");\n }\n\n await this.storeUser(user);\n logger.debug(\"user stored\");\n this._events.load(user);\n\n return user;\n }\n\n /**\n * Returns promise to trigger a redirect of the current window to the end session endpoint.\n */\n public async signoutRedirect(args: SignoutRedirectArgs = {}): Promise {\n const logger = this._logger.create(\"signoutRedirect\");\n const {\n redirectMethod,\n ...requestArgs\n } = args;\n const handle = await this._redirectNavigator.prepare({ redirectMethod });\n await this._signoutStart({\n request_type: \"so:r\",\n post_logout_redirect_uri: this.settings.post_logout_redirect_uri,\n ...requestArgs,\n }, handle);\n logger.info(\"success\");\n }\n\n /**\n * Returns promise to process response from the end session endpoint.\n */\n public async signoutRedirectCallback(url = window.location.href): Promise {\n const logger = this._logger.create(\"signoutRedirectCallback\");\n const response = await this._signoutEnd(url);\n logger.info(\"success\");\n return response;\n }\n\n /**\n * Returns promise to trigger a redirect of a popup window window to the end session endpoint.\n */\n public async signoutPopup(args: SignoutPopupArgs = {}): Promise {\n const logger = this._logger.create(\"signoutPopup\");\n const {\n popupWindowFeatures,\n popupWindowTarget,\n ...requestArgs\n } = args;\n const url = this.settings.popup_post_logout_redirect_uri;\n\n const handle = await this._popupNavigator.prepare({ popupWindowFeatures, popupWindowTarget });\n await this._signout({\n request_type: \"so:p\",\n post_logout_redirect_uri: url,\n // we're putting a dummy entry in here because we\n // need a unique id from the state for notification\n // to the parent window, which is necessary if we\n // plan to return back to the client after signout\n // and so we can close the popup after signout\n state: url == null ? undefined : {},\n ...requestArgs,\n }, handle);\n logger.info(\"success\");\n }\n\n /**\n * Returns promise to process response from the end session endpoint from a popup window.\n */\n public async signoutPopupCallback(url = window.location.href, keepOpen = false): Promise {\n const logger = this._logger.create(\"signoutPopupCallback\");\n await this._popupNavigator.callback(url, { keepOpen });\n logger.info(\"success\");\n }\n\n protected async _signout(args: CreateSignoutRequestArgs, handle: IWindow): Promise {\n const navResponse = await this._signoutStart(args, handle);\n return await this._signoutEnd(navResponse.url);\n }\n protected async _signoutStart(args: CreateSignoutRequestArgs = {}, handle: IWindow): Promise {\n const logger = this._logger.create(\"_signoutStart\");\n\n try {\n const user = await this._loadUser();\n logger.debug(\"loaded current user from storage\");\n\n if (this.settings.revokeTokensOnSignout) {\n await this._revokeInternal(user);\n }\n\n const id_token = args.id_token_hint || user && user.id_token;\n if (id_token) {\n logger.debug(\"setting id_token_hint in signout request\");\n args.id_token_hint = id_token;\n }\n\n await this.removeUser();\n logger.debug(\"user removed, creating signout request\");\n\n const signoutRequest = await this._client.createSignoutRequest(args);\n logger.debug(\"got signout request\");\n\n return await handle.navigate({\n url: signoutRequest.url,\n state: signoutRequest.state?.id,\n scriptOrigin: this.settings.iframeScriptOrigin,\n });\n }\n catch (err) {\n logger.debug(\"error after preparing navigator, closing navigator window\");\n handle.close();\n throw err;\n }\n }\n protected async _signoutEnd(url: string): Promise {\n const logger = this._logger.create(\"_signoutEnd\");\n const signoutResponse = await this._client.processSignoutResponse(url);\n logger.debug(\"got signout response\");\n\n return signoutResponse;\n }\n\n /**\n * Returns promise to trigger a silent request (via an iframe) to the end session endpoint.\n */\n public async signoutSilent(args: SignoutSilentArgs = {}): Promise {\n const logger = this._logger.create(\"signoutSilent\");\n const {\n silentRequestTimeoutInSeconds,\n ...requestArgs\n } = args;\n\n const id_token_hint = this.settings.includeIdTokenInSilentSignout\n ? (await this._loadUser())?.id_token\n : undefined;\n\n const url = this.settings.popup_post_logout_redirect_uri;\n const handle = await this._iframeNavigator.prepare({ silentRequestTimeoutInSeconds });\n await this._signout({\n request_type: \"so:s\",\n post_logout_redirect_uri: url,\n id_token_hint: id_token_hint,\n ...requestArgs,\n }, handle);\n\n logger.info(\"success\");\n }\n\n /**\n * Returns promise to notify the parent window of response from the end session endpoint.\n */\n public async signoutSilentCallback(url = window.location.href): Promise {\n const logger = this._logger.create(\"signoutSilentCallback\");\n await this._iframeNavigator.callback(url);\n logger.info(\"success\");\n }\n\n public async revokeTokens(types?: RevokeTokensTypes): Promise {\n const user = await this._loadUser();\n await this._revokeInternal(user, types);\n }\n\n protected async _revokeInternal(user: User | null, types = this.settings.revokeTokenTypes): Promise {\n const logger = this._logger.create(\"_revokeInternal\");\n if (!user) return;\n\n const typesPresent = types.filter(type => typeof user[type] === \"string\");\n\n if (!typesPresent.length) {\n logger.debug(\"no need to revoke due to no token(s)\");\n return;\n }\n\n // don't Promise.all, order matters\n for (const type of typesPresent) {\n await this._client.revokeToken(\n user[type]!, // eslint-disable-line @typescript-eslint/no-non-null-assertion\n type,\n );\n logger.info(`${type} revoked successfully`);\n if (type !== \"access_token\") {\n user[type] = null as never;\n }\n }\n\n await this.storeUser(user);\n logger.debug(\"user stored\");\n this._events.load(user);\n }\n\n /**\n * Enables silent renew for the `UserManager`.\n */\n public startSilentRenew(): void {\n this._logger.create(\"startSilentRenew\");\n void this._silentRenewService.start();\n }\n\n /**\n * Disables silent renew for the `UserManager`.\n */\n public stopSilentRenew(): void {\n this._silentRenewService.stop();\n }\n\n protected get _userStoreKey(): string {\n return `user:${this.settings.authority}:${this.settings.client_id}`;\n }\n\n protected async _loadUser(): Promise {\n const logger = this._logger.create(\"_loadUser\");\n const storageString = await this.settings.userStore.get(this._userStoreKey);\n if (storageString) {\n logger.debug(\"user storageString loaded\");\n return User.fromStorageString(storageString);\n }\n\n logger.debug(\"no user storageString\");\n return null;\n }\n\n public async storeUser(user: User | null): Promise {\n const logger = this._logger.create(\"storeUser\");\n if (user) {\n logger.debug(\"storing user\");\n const storageString = user.toStorageString();\n await this.settings.userStore.set(this._userStoreKey, storageString);\n }\n else {\n this._logger.debug(\"removing user\");\n await this.settings.userStore.remove(this._userStoreKey);\n }\n }\n\n /**\n * Removes stale state entries in storage for incomplete authorize requests.\n */\n public async clearStaleState(): Promise {\n await this._client.clearStaleState();\n }\n}\n","import React from \"react\";\n\nimport { AuthContext, type AuthContextProps } from \"./AuthContext\";\n\n/**\n * @public\n */\nexport const useAuth = (): AuthContextProps => {\n const context = React.useContext(AuthContext);\n\n if (!context) {\n console.warn(\"AuthProvider context is undefined, please verify you are calling useAuth() as child of a component.\");\n }\n\n return context as AuthContextProps;\n};\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n reloadDocument?: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (args: LoaderFunctionArgs):\n | Promise\n | DataFunctionValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs):\n | Promise\n | DataFunctionValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = safelyDecodeURIComponent(value || \"\", paramName);\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === matches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n ActionFunction,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n AgnosticRouteObject,\n DataResult,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n ImmutableRouteKey,\n LoaderFunction,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized: boolean;\n let hasLazyRoutes = initialMatches.some((m) => m.route.lazy);\n let hasLoaders = initialMatches.some((m) => m.route.loader);\n if (hasLazyRoutes) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!hasLoaders) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n initialized = initialMatches.every(\n (m) =>\n m.route.loader &&\n m.route.loader.hydrate !== true &&\n ((loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined))\n );\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace, flushSync }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionData,\n pendingError\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since iot's not a \"navigation\"\n if (\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration)\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(state, redirect.result, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(state, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(state, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(state.location, redirect.location, {\n _isRedirect: true,\n });\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.reloadDocument) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n const url = init.history.createURL(redirect.location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(redirect.location);\n } else {\n routerWindow.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, f.controller.signal),\n f.match,\n f.matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath,\n { isStaticRequest: true, isRouteRequest, requestContext }\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(\n `${method}() call aborted: ${request.method} ${request.url}`\n );\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath,\n { isStaticRequest: true, isRouteRequest, requestContext }\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(\n `${method}() call aborted: ${request.method} ${request.url}`\n );\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (isInitialLoad) {\n if (route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n isInitialLoad ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate: isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n basename: string,\n v7_relativeSplatPath: boolean,\n opts: {\n isStaticRequest?: boolean;\n isRouteRequest?: boolean;\n requestContext?: unknown;\n } = {}\n): Promise {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({\n request,\n params: match.params,\n context: opts.requestContext,\n }),\n abortPromise,\n ]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let values = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError) {\n throw handlerError;\n }\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, data: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(\n new URL(request.url),\n matches.slice(0, matches.indexOf(match) + 1),\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n let queryRouteResponse: QueryRouteResponse = {\n type:\n resultType === ResultType.error ? ResultType.error : ResultType.data,\n response: result,\n };\n throw queryRouteResponse;\n }\n\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponseImpl(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || obj.type === ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a