{"version":3,"file":"static/js/main.3abf180f.js","mappings":"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","sources":["../node_modules/@algolia/events/events.js","../node_modules/algoliasearch-helper/index.js","../node_modules/algoliasearch-helper/src/DerivedHelper/index.js","../node_modules/algoliasearch-helper/src/SearchParameters/RefinementList.js","../node_modules/algoliasearch-helper/src/SearchParameters/index.js","../node_modules/algoliasearch-helper/src/SearchResults/generate-hierarchical-tree.js","../node_modules/algoliasearch-helper/src/SearchResults/index.js","../node_modules/algoliasearch-helper/src/algoliasearch.helper.js","../node_modules/algoliasearch-helper/src/functions/compact.js","../node_modules/algoliasearch-helper/src/functions/defaultsPure.js","../node_modules/algoliasearch-helper/src/functions/escapeFacetValue.js","../node_modules/algoliasearch-helper/src/functions/find.js","../node_modules/algoliasearch-helper/src/functions/findIndex.js","../node_modules/algoliasearch-helper/src/functions/formatSort.js","../node_modules/algoliasearch-helper/src/functions/inherits.js","../node_modules/algoliasearch-helper/src/functions/intersection.js","../node_modules/algoliasearch-helper/src/functions/merge.js","../node_modules/algoliasearch-helper/src/functions/objectHasKeys.js","../node_modules/algoliasearch-helper/src/functions/omit.js","../node_modules/algoliasearch-helper/src/functions/orderBy.js","../node_modules/algoliasearch-helper/src/functions/valToNumber.js","../node_modules/algoliasearch-helper/src/requestBuilder.js","../node_modules/algoliasearch-helper/src/utils/isValidUserToken.js","../node_modules/algoliasearch-helper/src/version.js","../node_modules/call-bind/callBound.js","../node_modules/call-bind/index.js","../node_modules/classnames/index.js","../node_modules/exenv/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/get-intrinsic/index.js","../node_modules/has-symbols/index.js","../node_modules/has-symbols/shams.js","../node_modules/has/src/index.js","../node_modules/loglevel/lib/loglevel.js","../node_modules/object-inspect/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/index.js","../node_modules/qs/lib/parse.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/utils.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-modal/lib/components/Modal.js","../node_modules/react-modal/lib/components/ModalPortal.js","../node_modules/react-modal/lib/helpers/ariaAppHider.js","../node_modules/react-modal/lib/helpers/bodyTrap.js","../node_modules/react-modal/lib/helpers/classList.js","../node_modules/react-modal/lib/helpers/focusManager.js","../node_modules/react-modal/lib/helpers/portalOpenInstances.js","../node_modules/react-modal/lib/helpers/safeHTMLElement.js","../node_modules/react-modal/lib/helpers/scopeTab.js","../node_modules/react-modal/lib/helpers/tabbable.js","../node_modules/react-modal/lib/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","../node_modules/side-channel/index.js","../node_modules/typesense-instantsearch-adapter/src/Configuration.js","../node_modules/typesense-instantsearch-adapter/src/FacetSearchResponseAdapter.js","../node_modules/typesense-instantsearch-adapter/src/SearchRequestAdapter.js","../node_modules/typesense-instantsearch-adapter/src/SearchResponseAdapter.js","../node_modules/typesense-instantsearch-adapter/src/TypesenseInstantsearchAdapter.js","../node_modules/typesense-instantsearch-adapter/src/support/utils.js","../node_modules/typesense/src/Typesense.ts","../node_modules/typesense/src/Typesense/Alias.ts","../node_modules/typesense/src/Typesense/Aliases.ts","../node_modules/typesense/src/Typesense/ApiCall.ts","../node_modules/typesense/src/Typesense/Client.ts","../node_modules/typesense/src/Typesense/Collection.ts","../node_modules/typesense/src/Typesense/Collections.ts","../node_modules/typesense/src/Typesense/Configuration.ts","../node_modules/typesense/src/Typesense/Debug.ts","../node_modules/typesense/src/Typesense/Document.ts","../node_modules/typesense/src/Typesense/Documents.ts","../node_modules/typesense/src/Typesense/Errors/HTTPError.ts","../node_modules/typesense/src/Typesense/Errors/ImportError.ts","../node_modules/typesense/src/Typesense/Errors/MissingConfigurationError.ts","../node_modules/typesense/src/Typesense/Errors/ObjectAlreadyExists.ts","../node_modules/typesense/src/Typesense/Errors/ObjectNotFound.ts","../node_modules/typesense/src/Typesense/Errors/ObjectUnprocessable.ts","../node_modules/typesense/src/Typesense/Errors/RequestMalformed.ts","../node_modules/typesense/src/Typesense/Errors/RequestUnauthorized.ts","../node_modules/typesense/src/Typesense/Errors/ServerError.ts","../node_modules/typesense/src/Typesense/Errors/TypesenseError.ts","../node_modules/typesense/src/Typesense/Errors/index.ts","../node_modules/typesense/src/Typesense/Health.ts","../node_modules/typesense/src/Typesense/Key.ts","../node_modules/typesense/src/Typesense/Keys.ts","../node_modules/typesense/src/Typesense/Metrics.ts","../node_modules/typesense/src/Typesense/MultiSearch.ts","../node_modules/typesense/src/Typesense/Operations.ts","../node_modules/typesense/src/Typesense/Override.ts","../node_modules/typesense/src/Typesense/Overrides.ts","../node_modules/typesense/src/Typesense/Preset.ts","../node_modules/typesense/src/Typesense/Presets.ts","../node_modules/typesense/src/Typesense/RequestWithCache.ts","../node_modules/typesense/src/Typesense/SearchClient.ts","../node_modules/typesense/src/Typesense/SearchOnlyCollection.ts","../node_modules/typesense/src/Typesense/SearchOnlyDocuments.ts","../node_modules/typesense/src/Typesense/Synonym.ts","../node_modules/typesense/src/Typesense/Synonyms.ts","../node_modules/typesense/node_modules/axios/index.js","../node_modules/typesense/node_modules/axios/lib/adapters/xhr.js","../node_modules/typesense/node_modules/axios/lib/axios.js","../node_modules/typesense/node_modules/axios/lib/cancel/Cancel.js","../node_modules/typesense/node_modules/axios/lib/cancel/CancelToken.js","../node_modules/typesense/node_modules/axios/lib/cancel/isCancel.js","../node_modules/typesense/node_modules/axios/lib/core/Axios.js","../node_modules/typesense/node_modules/axios/lib/core/InterceptorManager.js","../node_modules/typesense/node_modules/axios/lib/core/buildFullPath.js","../node_modules/typesense/node_modules/axios/lib/core/createError.js","../node_modules/typesense/node_modules/axios/lib/core/dispatchRequest.js","../node_modules/typesense/node_modules/axios/lib/core/enhanceError.js","../node_modules/typesense/node_modules/axios/lib/core/mergeConfig.js","../node_modules/typesense/node_modules/axios/lib/core/settle.js","../node_modules/typesense/node_modules/axios/lib/core/transformData.js","../node_modules/typesense/node_modules/axios/lib/defaults/index.js","../node_modules/typesense/node_modules/axios/lib/defaults/transitional.js","../node_modules/typesense/node_modules/axios/lib/env/data.js","../node_modules/typesense/node_modules/axios/lib/helpers/bind.js","../node_modules/typesense/node_modules/axios/lib/helpers/buildURL.js","../node_modules/typesense/node_modules/axios/lib/helpers/combineURLs.js","../node_modules/typesense/node_modules/axios/lib/helpers/cookies.js","../node_modules/typesense/node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/typesense/node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/typesense/node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/typesense/node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/typesense/node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/typesense/node_modules/axios/lib/helpers/spread.js","../node_modules/typesense/node_modules/axios/lib/helpers/validator.js","../node_modules/typesense/node_modules/axios/lib/utils.js","../node_modules/warning/warning.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/regenerator/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../node_modules/@remix-run/router/history.ts","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@remix-run/router/utils.ts","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/use-sync-external-store-shim/useSyncExternalStoreShimClient.ts","../node_modules/react-router/lib/use-sync-external-store-shim/index.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-dom/index.tsx","../node_modules/react-instantsearch-core/dist/es/core/utils.js","../node_modules/react-instantsearch-core/dist/es/core/highlight.js","../node_modules/react-instantsearch-core/dist/es/core/indexUtils.js","../node_modules/react-instantsearch-core/dist/es/core/version.js","../node_modules/react-instantsearch-core/dist/es/core/createInstantSearchManager.js","../node_modules/react-instantsearch-core/dist/es/core/createWidgetsManager.js","../node_modules/react-instantsearch-core/dist/es/core/createStore.js","../node_modules/react-instantsearch-core/dist/es/core/context.js","../node_modules/react-instantsearch-core/dist/es/core/metadata.js","../node_modules/react-instantsearch-core/dist/es/widgets/InstantSearch.js","../node_modules/react-instantsearch-core/dist/es/core/createConnector.js","../node_modules/react-instantsearch-core/dist/es/connectors/connectConfigure.js","../node_modules/react-instantsearch-core/dist/es/widgets/Configure.js","../node_modules/react-instantsearch-core/dist/es/connectors/connectRefinementList.js","../node_modules/react-instantsearch-dom/dist/es/core/utils.js","../node_modules/react-instantsearch-dom/dist/es/components/Panel.js","../node_modules/react-instantsearch-dom/dist/es/components/PanelCallbackHandler.js","../node_modules/react-instantsearch-core/dist/es/core/translatable.js","../node_modules/react-instantsearch-core/dist/es/connectors/connectHighlight.js","../node_modules/react-instantsearch-dom/dist/es/components/Highlighter.js","../node_modules/react-instantsearch-dom/dist/es/components/Highlight.js","../node_modules/react-instantsearch-dom/dist/es/widgets/Highlight.js","../node_modules/react-instantsearch-dom/dist/es/components/SearchBox.js","../node_modules/react-instantsearch-dom/dist/es/components/List.js","../node_modules/react-instantsearch-dom/dist/es/components/RefinementList.js","../node_modules/react-instantsearch-dom/dist/es/widgets/RefinementList.js","../node_modules/react-instantsearch-core/dist/es/connectors/connectCurrentRefinements.js","../node_modules/react-instantsearch-dom/dist/es/components/ClearRefinements.js","../node_modules/react-instantsearch-dom/dist/es/widgets/ClearRefinements.js","../node_modules/react-instantsearch-core/dist/es/connectors/connectSearchBox.js","../node_modules/react-instantsearch-dom/dist/es/widgets/SearchBox.js","../node_modules/react-instantsearch-core/dist/es/connectors/connectStats.js","../node_modules/react-instantsearch-dom/dist/es/components/Stats.js","../node_modules/react-instantsearch-dom/dist/es/widgets/Stats.js","../node_modules/react-instantsearch-core/dist/es/connectors/connectHits.js","../node_modules/react-instantsearch-dom/dist/es/components/Hits.js","../node_modules/react-instantsearch-dom/dist/es/widgets/Hits.js","../node_modules/react-instantsearch-core/dist/es/connectors/connectPagination.js","../node_modules/react-instantsearch-dom/dist/es/components/Link.js","../node_modules/react-instantsearch-dom/dist/es/components/LinkList.js","../node_modules/react-instantsearch-dom/dist/es/components/Pagination.js","../node_modules/react-instantsearch-dom/dist/es/widgets/Pagination.js","constants.js","App.js","index.js"],"sourcesContent":["// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\n// EventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","'use strict';\n\nvar AlgoliaSearchHelper = require('./src/algoliasearch.helper');\n\nvar SearchParameters = require('./src/SearchParameters');\nvar SearchResults = require('./src/SearchResults');\n\n/**\n * The algoliasearchHelper module is the function that will let its\n * contains everything needed to use the Algoliasearch\n * Helper. It is a also a function that instanciate the helper.\n * To use the helper, you also need the Algolia JS client v3.\n * @example\n * //using the UMD build\n * var client = algoliasearch('latency', '6be0576ff61c053d5f9a3225e2a90f76');\n * var helper = algoliasearchHelper(client, 'bestbuy', {\n * facets: ['shipping'],\n * disjunctiveFacets: ['category']\n * });\n * helper.on('result', function(event) {\n * console.log(event.results);\n * });\n * helper\n * .toggleFacetRefinement('category', 'Movies & TV Shows')\n * .toggleFacetRefinement('shipping', 'Free shipping')\n * .search();\n * @example\n * // The helper is an event emitter using the node API\n * helper.on('result', updateTheResults);\n * helper.once('result', updateTheResults);\n * helper.removeListener('result', updateTheResults);\n * helper.removeAllListeners('result');\n * @module algoliasearchHelper\n * @param {AlgoliaSearch} client an AlgoliaSearch client\n * @param {string} index the name of the index to query\n * @param {SearchParameters|object} opts an object defining the initial config of the search. It doesn't have to be a {SearchParameters}, just an object containing the properties you need from it.\n * @return {AlgoliaSearchHelper}\n */\nfunction algoliasearchHelper(client, index, opts) {\n return new AlgoliaSearchHelper(client, index, opts);\n}\n\n/**\n * The version currently used\n * @member module:algoliasearchHelper.version\n * @type {number}\n */\nalgoliasearchHelper.version = require('./src/version.js');\n\n/**\n * Constructor for the Helper.\n * @member module:algoliasearchHelper.AlgoliaSearchHelper\n * @type {AlgoliaSearchHelper}\n */\nalgoliasearchHelper.AlgoliaSearchHelper = AlgoliaSearchHelper;\n\n/**\n * Constructor for the object containing all the parameters of the search.\n * @member module:algoliasearchHelper.SearchParameters\n * @type {SearchParameters}\n */\nalgoliasearchHelper.SearchParameters = SearchParameters;\n\n/**\n * Constructor for the object containing the results of the search.\n * @member module:algoliasearchHelper.SearchResults\n * @type {SearchResults}\n */\nalgoliasearchHelper.SearchResults = SearchResults;\n\nmodule.exports = algoliasearchHelper;\n","'use strict';\n\nvar EventEmitter = require('@algolia/events');\nvar inherits = require('../functions/inherits');\n\n/**\n * A DerivedHelper is a way to create sub requests to\n * Algolia from a main helper.\n * @class\n * @classdesc The DerivedHelper provides an event based interface for search callbacks:\n * - search: when a search is triggered using the `search()` method.\n * - result: when the response is retrieved from Algolia and is processed.\n * This event contains a {@link SearchResults} object and the\n * {@link SearchParameters} corresponding to this answer.\n */\nfunction DerivedHelper(mainHelper, fn) {\n this.main = mainHelper;\n this.fn = fn;\n this.lastResults = null;\n}\n\ninherits(DerivedHelper, EventEmitter);\n\n/**\n * Detach this helper from the main helper\n * @return {undefined}\n * @throws Error if the derived helper is already detached\n */\nDerivedHelper.prototype.detach = function() {\n this.removeAllListeners();\n this.main.detachDerivedHelper(this);\n};\n\nDerivedHelper.prototype.getModifiedState = function(parameters) {\n return this.fn(parameters);\n};\n\nmodule.exports = DerivedHelper;\n","'use strict';\n\n/**\n * Functions to manipulate refinement lists\n *\n * The RefinementList is not formally defined through a prototype but is based\n * on a specific structure.\n *\n * @module SearchParameters.refinementList\n *\n * @typedef {string[]} SearchParameters.refinementList.Refinements\n * @typedef {Object.} SearchParameters.refinementList.RefinementList\n */\n\nvar defaultsPure = require('../functions/defaultsPure');\nvar omit = require('../functions/omit');\nvar objectHasKeys = require('../functions/objectHasKeys');\n\nvar lib = {\n /**\n * Adds a refinement to a RefinementList\n * @param {RefinementList} refinementList the initial list\n * @param {string} attribute the attribute to refine\n * @param {string} value the value of the refinement, if the value is not a string it will be converted\n * @return {RefinementList} a new and updated refinement list\n */\n addRefinement: function addRefinement(refinementList, attribute, value) {\n if (lib.isRefined(refinementList, attribute, value)) {\n return refinementList;\n }\n\n var valueAsString = '' + value;\n\n var facetRefinement = !refinementList[attribute] ?\n [valueAsString] :\n refinementList[attribute].concat(valueAsString);\n\n var mod = {};\n\n mod[attribute] = facetRefinement;\n\n return defaultsPure({}, mod, refinementList);\n },\n /**\n * Removes refinement(s) for an attribute:\n * - if the value is specified removes the refinement for the value on the attribute\n * - if no value is specified removes all the refinements for this attribute\n * @param {RefinementList} refinementList the initial list\n * @param {string} attribute the attribute to refine\n * @param {string} [value] the value of the refinement\n * @return {RefinementList} a new and updated refinement lst\n */\n removeRefinement: function removeRefinement(refinementList, attribute, value) {\n if (value === undefined) {\n // we use the \"filter\" form of clearRefinement, since it leaves empty values as-is\n // the form with a string will remove the attribute completely\n return lib.clearRefinement(refinementList, function(v, f) {\n return attribute === f;\n });\n }\n\n var valueAsString = '' + value;\n\n return lib.clearRefinement(refinementList, function(v, f) {\n return attribute === f && valueAsString === v;\n });\n },\n /**\n * Toggles the refinement value for an attribute.\n * @param {RefinementList} refinementList the initial list\n * @param {string} attribute the attribute to refine\n * @param {string} value the value of the refinement\n * @return {RefinementList} a new and updated list\n */\n toggleRefinement: function toggleRefinement(refinementList, attribute, value) {\n if (value === undefined) throw new Error('toggleRefinement should be used with a value');\n\n if (lib.isRefined(refinementList, attribute, value)) {\n return lib.removeRefinement(refinementList, attribute, value);\n }\n\n return lib.addRefinement(refinementList, attribute, value);\n },\n /**\n * Clear all or parts of a RefinementList. Depending on the arguments, three\n * kinds of behavior can happen:\n * - if no attribute is provided: clears the whole list\n * - if an attribute is provided as a string: clears the list for the specific attribute\n * - if an attribute is provided as a function: discards the elements for which the function returns true\n * @param {RefinementList} refinementList the initial list\n * @param {string} [attribute] the attribute or function to discard\n * @param {string} [refinementType] optional parameter to give more context to the attribute function\n * @return {RefinementList} a new and updated refinement list\n */\n clearRefinement: function clearRefinement(refinementList, attribute, refinementType) {\n if (attribute === undefined) {\n if (!objectHasKeys(refinementList)) {\n return refinementList;\n }\n return {};\n } else if (typeof attribute === 'string') {\n return omit(refinementList, [attribute]);\n } else if (typeof attribute === 'function') {\n var hasChanged = false;\n\n var newRefinementList = Object.keys(refinementList).reduce(function(memo, key) {\n var values = refinementList[key] || [];\n var facetList = values.filter(function(value) {\n return !attribute(value, key, refinementType);\n });\n\n if (facetList.length !== values.length) {\n hasChanged = true;\n }\n memo[key] = facetList;\n\n return memo;\n }, {});\n\n if (hasChanged) return newRefinementList;\n return refinementList;\n }\n },\n /**\n * Test if the refinement value is used for the attribute. If no refinement value\n * is provided, test if the refinementList contains any refinement for the\n * given attribute.\n * @param {RefinementList} refinementList the list of refinement\n * @param {string} attribute name of the attribute\n * @param {string} [refinementValue] value of the filter/refinement\n * @return {boolean}\n */\n isRefined: function isRefined(refinementList, attribute, refinementValue) {\n var containsRefinements = !!refinementList[attribute] &&\n refinementList[attribute].length > 0;\n\n if (refinementValue === undefined || !containsRefinements) {\n return containsRefinements;\n }\n\n var refinementValueAsString = '' + refinementValue;\n\n return refinementList[attribute].indexOf(refinementValueAsString) !== -1;\n }\n};\n\nmodule.exports = lib;\n","'use strict';\n\nvar merge = require('../functions/merge');\nvar defaultsPure = require('../functions/defaultsPure');\nvar intersection = require('../functions/intersection');\nvar find = require('../functions/find');\nvar valToNumber = require('../functions/valToNumber');\nvar omit = require('../functions/omit');\nvar objectHasKeys = require('../functions/objectHasKeys');\nvar isValidUserToken = require('../utils/isValidUserToken');\n\nvar RefinementList = require('./RefinementList');\n\n/**\n * isEqual, but only for numeric refinement values, possible values:\n * - 5\n * - [5]\n * - [[5]]\n * - [[5,5],[4]]\n */\nfunction isEqualNumericRefinement(a, b) {\n if (Array.isArray(a) && Array.isArray(b)) {\n return (\n a.length === b.length &&\n a.every(function(el, i) {\n return isEqualNumericRefinement(b[i], el);\n })\n );\n }\n return a === b;\n}\n\n/**\n * like _.find but using deep equality to be able to use it\n * to find arrays.\n * @private\n * @param {any[]} array array to search into (elements are base or array of base)\n * @param {any} searchedValue the value we're looking for (base or array of base)\n * @return {any} the searched value or undefined\n */\nfunction findArray(array, searchedValue) {\n return find(array, function(currentValue) {\n return isEqualNumericRefinement(currentValue, searchedValue);\n });\n}\n\n/**\n * The facet list is the structure used to store the list of values used to\n * filter a single attribute.\n * @typedef {string[]} SearchParameters.FacetList\n */\n\n/**\n * Structure to store numeric filters with the operator as the key. The supported operators\n * are `=`, `>`, `<`, `>=`, `<=` and `!=`.\n * @typedef {Object.>} SearchParameters.OperatorList\n */\n\n/**\n * SearchParameters is the data structure that contains all the information\n * usable for making a search to Algolia API. It doesn't do the search itself,\n * nor does it contains logic about the parameters.\n * It is an immutable object, therefore it has been created in a way that each\n * changes does not change the object itself but returns a copy with the\n * modification.\n * This object should probably not be instantiated outside of the helper. It will\n * be provided when needed. This object is documented for reference as you'll\n * get it from events generated by the {@link AlgoliaSearchHelper}.\n * If need be, instantiate the Helper from the factory function {@link SearchParameters.make}\n * @constructor\n * @classdesc contains all the parameters of a search\n * @param {object|SearchParameters} newParameters existing parameters or partial object\n * for the properties of a new SearchParameters\n * @see SearchParameters.make\n * @example SearchParameters of the first query in\n * the instant search demo\n{\n \"query\": \"\",\n \"disjunctiveFacets\": [\n \"customerReviewCount\",\n \"category\",\n \"salePrice_range\",\n \"manufacturer\"\n ],\n \"maxValuesPerFacet\": 30,\n \"page\": 0,\n \"hitsPerPage\": 10,\n \"facets\": [\n \"type\",\n \"shipping\"\n ]\n}\n */\nfunction SearchParameters(newParameters) {\n var params = newParameters ? SearchParameters._parseNumbers(newParameters) : {};\n\n if (params.userToken !== undefined && !isValidUserToken(params.userToken)) {\n console.warn('[algoliasearch-helper] The `userToken` parameter is invalid. This can lead to wrong analytics.\\n - Format: [a-zA-Z0-9_-]{1,64}');\n }\n /**\n * This attribute contains the list of all the conjunctive facets\n * used. This list will be added to requested facets in the\n * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n * @member {string[]}\n */\n this.facets = params.facets || [];\n /**\n * This attribute contains the list of all the disjunctive facets\n * used. This list will be added to requested facets in the\n * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n * @member {string[]}\n */\n this.disjunctiveFacets = params.disjunctiveFacets || [];\n /**\n * This attribute contains the list of all the hierarchical facets\n * used. This list will be added to requested facets in the\n * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n * Hierarchical facets are a sub type of disjunctive facets that\n * let you filter faceted attributes hierarchically.\n * @member {string[]|object[]}\n */\n this.hierarchicalFacets = params.hierarchicalFacets || [];\n\n // Refinements\n /**\n * This attribute contains all the filters that need to be\n * applied on the conjunctive facets. Each facet must be properly\n * defined in the `facets` attribute.\n *\n * The key is the name of the facet, and the `FacetList` contains all\n * filters selected for the associated facet name.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `facetFilters` attribute.\n * @member {Object.}\n */\n this.facetsRefinements = params.facetsRefinements || {};\n /**\n * This attribute contains all the filters that need to be\n * excluded from the conjunctive facets. Each facet must be properly\n * defined in the `facets` attribute.\n *\n * The key is the name of the facet, and the `FacetList` contains all\n * filters excluded for the associated facet name.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `facetFilters` attribute.\n * @member {Object.}\n */\n this.facetsExcludes = params.facetsExcludes || {};\n /**\n * This attribute contains all the filters that need to be\n * applied on the disjunctive facets. Each facet must be properly\n * defined in the `disjunctiveFacets` attribute.\n *\n * The key is the name of the facet, and the `FacetList` contains all\n * filters selected for the associated facet name.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `facetFilters` attribute.\n * @member {Object.}\n */\n this.disjunctiveFacetsRefinements = params.disjunctiveFacetsRefinements || {};\n /**\n * This attribute contains all the filters that need to be\n * applied on the numeric attributes.\n *\n * The key is the name of the attribute, and the value is the\n * filters to apply to this attribute.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `numericFilters` attribute.\n * @member {Object.}\n */\n this.numericRefinements = params.numericRefinements || {};\n /**\n * This attribute contains all the tags used to refine the query.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `tagFilters` attribute.\n * @member {string[]}\n */\n this.tagRefinements = params.tagRefinements || [];\n /**\n * This attribute contains all the filters that need to be\n * applied on the hierarchical facets. Each facet must be properly\n * defined in the `hierarchicalFacets` attribute.\n *\n * The key is the name of the facet, and the `FacetList` contains all\n * filters selected for the associated facet name. The FacetList values\n * are structured as a string that contain the values for each level\n * separated by the configured separator.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `facetFilters` attribute.\n * @member {Object.}\n */\n this.hierarchicalFacetsRefinements = params.hierarchicalFacetsRefinements || {};\n\n var self = this;\n Object.keys(params).forEach(function(paramName) {\n var isKeyKnown = SearchParameters.PARAMETERS.indexOf(paramName) !== -1;\n var isValueDefined = params[paramName] !== undefined;\n\n if (!isKeyKnown && isValueDefined) {\n self[paramName] = params[paramName];\n }\n });\n}\n\n/**\n * List all the properties in SearchParameters and therefore all the known Algolia properties\n * This doesn't contain any beta/hidden features.\n * @private\n */\nSearchParameters.PARAMETERS = Object.keys(new SearchParameters());\n\n/**\n * @private\n * @param {object} partialState full or part of a state\n * @return {object} a new object with the number keys as number\n */\nSearchParameters._parseNumbers = function(partialState) {\n // Do not reparse numbers in SearchParameters, they ought to be parsed already\n if (partialState instanceof SearchParameters) return partialState;\n\n var numbers = {};\n\n var numberKeys = [\n 'aroundPrecision',\n 'aroundRadius',\n 'getRankingInfo',\n 'minWordSizefor2Typos',\n 'minWordSizefor1Typo',\n 'page',\n 'maxValuesPerFacet',\n 'distinct',\n 'minimumAroundRadius',\n 'hitsPerPage',\n 'minProximity'\n ];\n\n numberKeys.forEach(function(k) {\n var value = partialState[k];\n if (typeof value === 'string') {\n var parsedValue = parseFloat(value);\n // global isNaN is ok to use here, value is only number or NaN\n numbers[k] = isNaN(parsedValue) ? value : parsedValue;\n }\n });\n\n // there's two formats of insideBoundingBox, we need to parse\n // the one which is an array of float geo rectangles\n if (Array.isArray(partialState.insideBoundingBox)) {\n numbers.insideBoundingBox = partialState.insideBoundingBox.map(function(geoRect) {\n if (Array.isArray(geoRect)) {\n return geoRect.map(function(value) {\n return parseFloat(value);\n });\n }\n return geoRect;\n });\n }\n\n if (partialState.numericRefinements) {\n var numericRefinements = {};\n Object.keys(partialState.numericRefinements).forEach(function(attribute) {\n var operators = partialState.numericRefinements[attribute] || {};\n numericRefinements[attribute] = {};\n Object.keys(operators).forEach(function(operator) {\n var values = operators[operator];\n var parsedValues = values.map(function(v) {\n if (Array.isArray(v)) {\n return v.map(function(vPrime) {\n if (typeof vPrime === 'string') {\n return parseFloat(vPrime);\n }\n return vPrime;\n });\n } else if (typeof v === 'string') {\n return parseFloat(v);\n }\n return v;\n });\n numericRefinements[attribute][operator] = parsedValues;\n });\n });\n numbers.numericRefinements = numericRefinements;\n }\n\n return merge({}, partialState, numbers);\n};\n\n/**\n * Factory for SearchParameters\n * @param {object|SearchParameters} newParameters existing parameters or partial\n * object for the properties of a new SearchParameters\n * @return {SearchParameters} frozen instance of SearchParameters\n */\nSearchParameters.make = function makeSearchParameters(newParameters) {\n var instance = new SearchParameters(newParameters);\n\n var hierarchicalFacets = newParameters.hierarchicalFacets || [];\n hierarchicalFacets.forEach(function(facet) {\n if (facet.rootPath) {\n var currentRefinement = instance.getHierarchicalRefinement(facet.name);\n\n if (currentRefinement.length > 0 && currentRefinement[0].indexOf(facet.rootPath) !== 0) {\n instance = instance.clearRefinements(facet.name);\n }\n\n // get it again in case it has been cleared\n currentRefinement = instance.getHierarchicalRefinement(facet.name);\n if (currentRefinement.length === 0) {\n instance = instance.toggleHierarchicalFacetRefinement(facet.name, facet.rootPath);\n }\n }\n });\n\n return instance;\n};\n\n/**\n * Validates the new parameters based on the previous state\n * @param {SearchParameters} currentState the current state\n * @param {object|SearchParameters} parameters the new parameters to set\n * @return {Error|null} Error if the modification is invalid, null otherwise\n */\nSearchParameters.validate = function(currentState, parameters) {\n var params = parameters || {};\n\n if (currentState.tagFilters && params.tagRefinements && params.tagRefinements.length > 0) {\n return new Error(\n '[Tags] Cannot switch from the managed tag API to the advanced API. It is probably ' +\n 'an error, if it is really what you want, you should first clear the tags with clearTags method.');\n }\n\n if (currentState.tagRefinements.length > 0 && params.tagFilters) {\n return new Error(\n '[Tags] Cannot switch from the advanced tag API to the managed API. It is probably ' +\n 'an error, if it is not, you should first clear the tags with clearTags method.');\n }\n\n if (\n currentState.numericFilters &&\n params.numericRefinements &&\n objectHasKeys(params.numericRefinements)\n ) {\n return new Error(\n \"[Numeric filters] Can't switch from the advanced to the managed API. It\" +\n ' is probably an error, if this is really what you want, you have to first' +\n ' clear the numeric filters.'\n );\n }\n\n if (objectHasKeys(currentState.numericRefinements) && params.numericFilters) {\n return new Error(\n \"[Numeric filters] Can't switch from the managed API to the advanced. It\" +\n ' is probably an error, if this is really what you want, you have to first' +\n ' clear the numeric filters.');\n }\n\n return null;\n};\n\nSearchParameters.prototype = {\n constructor: SearchParameters,\n\n /**\n * Remove all refinements (disjunctive + conjunctive + excludes + numeric filters)\n * @method\n * @param {undefined|string|SearchParameters.clearCallback} [attribute] optional string or function\n * - If not given, means to clear all the filters.\n * - If `string`, means to clear all refinements for the `attribute` named filter.\n * - If `function`, means to clear all the refinements that return truthy values.\n * @return {SearchParameters}\n */\n clearRefinements: function clearRefinements(attribute) {\n var patch = {\n numericRefinements: this._clearNumericRefinements(attribute),\n facetsRefinements: RefinementList.clearRefinement(\n this.facetsRefinements,\n attribute,\n 'conjunctiveFacet'\n ),\n facetsExcludes: RefinementList.clearRefinement(\n this.facetsExcludes,\n attribute,\n 'exclude'\n ),\n disjunctiveFacetsRefinements: RefinementList.clearRefinement(\n this.disjunctiveFacetsRefinements,\n attribute,\n 'disjunctiveFacet'\n ),\n hierarchicalFacetsRefinements: RefinementList.clearRefinement(\n this.hierarchicalFacetsRefinements,\n attribute,\n 'hierarchicalFacet'\n )\n };\n if (\n patch.numericRefinements === this.numericRefinements &&\n patch.facetsRefinements === this.facetsRefinements &&\n patch.facetsExcludes === this.facetsExcludes &&\n patch.disjunctiveFacetsRefinements === this.disjunctiveFacetsRefinements &&\n patch.hierarchicalFacetsRefinements === this.hierarchicalFacetsRefinements\n ) {\n return this;\n }\n return this.setQueryParameters(patch);\n },\n /**\n * Remove all the refined tags from the SearchParameters\n * @method\n * @return {SearchParameters}\n */\n clearTags: function clearTags() {\n if (this.tagFilters === undefined && this.tagRefinements.length === 0) return this;\n\n return this.setQueryParameters({\n tagFilters: undefined,\n tagRefinements: []\n });\n },\n /**\n * Set the index.\n * @method\n * @param {string} index the index name\n * @return {SearchParameters}\n */\n setIndex: function setIndex(index) {\n if (index === this.index) return this;\n\n return this.setQueryParameters({\n index: index\n });\n },\n /**\n * Query setter\n * @method\n * @param {string} newQuery value for the new query\n * @return {SearchParameters}\n */\n setQuery: function setQuery(newQuery) {\n if (newQuery === this.query) return this;\n\n return this.setQueryParameters({\n query: newQuery\n });\n },\n /**\n * Page setter\n * @method\n * @param {number} newPage new page number\n * @return {SearchParameters}\n */\n setPage: function setPage(newPage) {\n if (newPage === this.page) return this;\n\n return this.setQueryParameters({\n page: newPage\n });\n },\n /**\n * Facets setter\n * The facets are the simple facets, used for conjunctive (and) faceting.\n * @method\n * @param {string[]} facets all the attributes of the algolia records used for conjunctive faceting\n * @return {SearchParameters}\n */\n setFacets: function setFacets(facets) {\n return this.setQueryParameters({\n facets: facets\n });\n },\n /**\n * Disjunctive facets setter\n * Change the list of disjunctive (or) facets the helper chan handle.\n * @method\n * @param {string[]} facets all the attributes of the algolia records used for disjunctive faceting\n * @return {SearchParameters}\n */\n setDisjunctiveFacets: function setDisjunctiveFacets(facets) {\n return this.setQueryParameters({\n disjunctiveFacets: facets\n });\n },\n /**\n * HitsPerPage setter\n * Hits per page represents the number of hits retrieved for this query\n * @method\n * @param {number} n number of hits retrieved per page of results\n * @return {SearchParameters}\n */\n setHitsPerPage: function setHitsPerPage(n) {\n if (this.hitsPerPage === n) return this;\n\n return this.setQueryParameters({\n hitsPerPage: n\n });\n },\n /**\n * typoTolerance setter\n * Set the value of typoTolerance\n * @method\n * @param {string} typoTolerance new value of typoTolerance (\"true\", \"false\", \"min\" or \"strict\")\n * @return {SearchParameters}\n */\n setTypoTolerance: function setTypoTolerance(typoTolerance) {\n if (this.typoTolerance === typoTolerance) return this;\n\n return this.setQueryParameters({\n typoTolerance: typoTolerance\n });\n },\n /**\n * Add a numeric filter for a given attribute\n * When value is an array, they are combined with OR\n * When value is a single value, it will combined with AND\n * @method\n * @param {string} attribute attribute to set the filter on\n * @param {string} operator operator of the filter (possible values: =, >, >=, <, <=, !=)\n * @param {number | number[]} value value of the filter\n * @return {SearchParameters}\n * @example\n * // for price = 50 or 40\n * searchparameter.addNumericRefinement('price', '=', [50, 40]);\n * @example\n * // for size = 38 and 40\n * searchparameter.addNumericRefinement('size', '=', 38);\n * searchparameter.addNumericRefinement('size', '=', 40);\n */\n addNumericRefinement: function(attribute, operator, v) {\n var value = valToNumber(v);\n\n if (this.isNumericRefined(attribute, operator, value)) return this;\n\n var mod = merge({}, this.numericRefinements);\n\n mod[attribute] = merge({}, mod[attribute]);\n\n if (mod[attribute][operator]) {\n // Array copy\n mod[attribute][operator] = mod[attribute][operator].slice();\n // Add the element. Concat can't be used here because value can be an array.\n mod[attribute][operator].push(value);\n } else {\n mod[attribute][operator] = [value];\n }\n\n return this.setQueryParameters({\n numericRefinements: mod\n });\n },\n /**\n * Get the list of conjunctive refinements for a single facet\n * @param {string} facetName name of the attribute used for faceting\n * @return {string[]} list of refinements\n */\n getConjunctiveRefinements: function(facetName) {\n if (!this.isConjunctiveFacet(facetName)) {\n return [];\n }\n return this.facetsRefinements[facetName] || [];\n },\n /**\n * Get the list of disjunctive refinements for a single facet\n * @param {string} facetName name of the attribute used for faceting\n * @return {string[]} list of refinements\n */\n getDisjunctiveRefinements: function(facetName) {\n if (!this.isDisjunctiveFacet(facetName)) {\n return [];\n }\n return this.disjunctiveFacetsRefinements[facetName] || [];\n },\n /**\n * Get the list of hierarchical refinements for a single facet\n * @param {string} facetName name of the attribute used for faceting\n * @return {string[]} list of refinements\n */\n getHierarchicalRefinement: function(facetName) {\n // we send an array but we currently do not support multiple\n // hierarchicalRefinements for a hierarchicalFacet\n return this.hierarchicalFacetsRefinements[facetName] || [];\n },\n /**\n * Get the list of exclude refinements for a single facet\n * @param {string} facetName name of the attribute used for faceting\n * @return {string[]} list of refinements\n */\n getExcludeRefinements: function(facetName) {\n if (!this.isConjunctiveFacet(facetName)) {\n return [];\n }\n return this.facetsExcludes[facetName] || [];\n },\n\n /**\n * Remove all the numeric filter for a given (attribute, operator)\n * @method\n * @param {string} attribute attribute to set the filter on\n * @param {string} [operator] operator of the filter (possible values: =, >, >=, <, <=, !=)\n * @param {number} [number] the value to be removed\n * @return {SearchParameters}\n */\n removeNumericRefinement: function(attribute, operator, paramValue) {\n if (paramValue !== undefined) {\n if (!this.isNumericRefined(attribute, operator, paramValue)) {\n return this;\n }\n return this.setQueryParameters({\n numericRefinements: this._clearNumericRefinements(function(value, key) {\n return (\n key === attribute &&\n value.op === operator &&\n isEqualNumericRefinement(value.val, valToNumber(paramValue))\n );\n })\n });\n } else if (operator !== undefined) {\n if (!this.isNumericRefined(attribute, operator)) return this;\n return this.setQueryParameters({\n numericRefinements: this._clearNumericRefinements(function(value, key) {\n return key === attribute && value.op === operator;\n })\n });\n }\n\n if (!this.isNumericRefined(attribute)) return this;\n return this.setQueryParameters({\n numericRefinements: this._clearNumericRefinements(function(value, key) {\n return key === attribute;\n })\n });\n },\n /**\n * Get the list of numeric refinements for a single facet\n * @param {string} facetName name of the attribute used for faceting\n * @return {SearchParameters.OperatorList} list of refinements\n */\n getNumericRefinements: function(facetName) {\n return this.numericRefinements[facetName] || {};\n },\n /**\n * Return the current refinement for the (attribute, operator)\n * @param {string} attribute attribute in the record\n * @param {string} operator operator applied on the refined values\n * @return {Array.} refined values\n */\n getNumericRefinement: function(attribute, operator) {\n return this.numericRefinements[attribute] && this.numericRefinements[attribute][operator];\n },\n /**\n * Clear numeric filters.\n * @method\n * @private\n * @param {string|SearchParameters.clearCallback} [attribute] optional string or function\n * - If not given, means to clear all the filters.\n * - If `string`, means to clear all refinements for the `attribute` named filter.\n * - If `function`, means to clear all the refinements that return truthy values.\n * @return {Object.}\n */\n _clearNumericRefinements: function _clearNumericRefinements(attribute) {\n if (attribute === undefined) {\n if (!objectHasKeys(this.numericRefinements)) {\n return this.numericRefinements;\n }\n return {};\n } else if (typeof attribute === 'string') {\n return omit(this.numericRefinements, [attribute]);\n } else if (typeof attribute === 'function') {\n var hasChanged = false;\n var numericRefinements = this.numericRefinements;\n var newNumericRefinements = Object.keys(numericRefinements).reduce(function(memo, key) {\n var operators = numericRefinements[key];\n var operatorList = {};\n\n operators = operators || {};\n Object.keys(operators).forEach(function(operator) {\n var values = operators[operator] || [];\n var outValues = [];\n values.forEach(function(value) {\n var predicateResult = attribute({val: value, op: operator}, key, 'numeric');\n if (!predicateResult) outValues.push(value);\n });\n if (outValues.length !== values.length) {\n hasChanged = true;\n }\n operatorList[operator] = outValues;\n });\n\n memo[key] = operatorList;\n\n return memo;\n }, {});\n\n if (hasChanged) return newNumericRefinements;\n return this.numericRefinements;\n }\n },\n /**\n * Add a facet to the facets attribute of the helper configuration, if it\n * isn't already present.\n * @method\n * @param {string} facet facet name to add\n * @return {SearchParameters}\n */\n addFacet: function addFacet(facet) {\n if (this.isConjunctiveFacet(facet)) {\n return this;\n }\n\n return this.setQueryParameters({\n facets: this.facets.concat([facet])\n });\n },\n /**\n * Add a disjunctive facet to the disjunctiveFacets attribute of the helper\n * configuration, if it isn't already present.\n * @method\n * @param {string} facet disjunctive facet name to add\n * @return {SearchParameters}\n */\n addDisjunctiveFacet: function addDisjunctiveFacet(facet) {\n if (this.isDisjunctiveFacet(facet)) {\n return this;\n }\n\n return this.setQueryParameters({\n disjunctiveFacets: this.disjunctiveFacets.concat([facet])\n });\n },\n /**\n * Add a hierarchical facet to the hierarchicalFacets attribute of the helper\n * configuration.\n * @method\n * @param {object} hierarchicalFacet hierarchical facet to add\n * @return {SearchParameters}\n * @throws will throw an error if a hierarchical facet with the same name was already declared\n */\n addHierarchicalFacet: function addHierarchicalFacet(hierarchicalFacet) {\n if (this.isHierarchicalFacet(hierarchicalFacet.name)) {\n throw new Error(\n 'Cannot declare two hierarchical facets with the same name: `' + hierarchicalFacet.name + '`');\n }\n\n return this.setQueryParameters({\n hierarchicalFacets: this.hierarchicalFacets.concat([hierarchicalFacet])\n });\n },\n /**\n * Add a refinement on a \"normal\" facet\n * @method\n * @param {string} facet attribute to apply the faceting on\n * @param {string} value value of the attribute (will be converted to string)\n * @return {SearchParameters}\n */\n addFacetRefinement: function addFacetRefinement(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n }\n if (RefinementList.isRefined(this.facetsRefinements, facet, value)) return this;\n\n return this.setQueryParameters({\n facetsRefinements: RefinementList.addRefinement(this.facetsRefinements, facet, value)\n });\n },\n /**\n * Exclude a value from a \"normal\" facet\n * @method\n * @param {string} facet attribute to apply the exclusion on\n * @param {string} value value of the attribute (will be converted to string)\n * @return {SearchParameters}\n */\n addExcludeRefinement: function addExcludeRefinement(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n }\n if (RefinementList.isRefined(this.facetsExcludes, facet, value)) return this;\n\n return this.setQueryParameters({\n facetsExcludes: RefinementList.addRefinement(this.facetsExcludes, facet, value)\n });\n },\n /**\n * Adds a refinement on a disjunctive facet.\n * @method\n * @param {string} facet attribute to apply the faceting on\n * @param {string} value value of the attribute (will be converted to string)\n * @return {SearchParameters}\n */\n addDisjunctiveFacetRefinement: function addDisjunctiveFacetRefinement(facet, value) {\n if (!this.isDisjunctiveFacet(facet)) {\n throw new Error(\n facet + ' is not defined in the disjunctiveFacets attribute of the helper configuration');\n }\n\n if (RefinementList.isRefined(this.disjunctiveFacetsRefinements, facet, value)) return this;\n\n return this.setQueryParameters({\n disjunctiveFacetsRefinements: RefinementList.addRefinement(\n this.disjunctiveFacetsRefinements, facet, value)\n });\n },\n /**\n * addTagRefinement adds a tag to the list used to filter the results\n * @param {string} tag tag to be added\n * @return {SearchParameters}\n */\n addTagRefinement: function addTagRefinement(tag) {\n if (this.isTagRefined(tag)) return this;\n\n var modification = {\n tagRefinements: this.tagRefinements.concat(tag)\n };\n\n return this.setQueryParameters(modification);\n },\n /**\n * Remove a facet from the facets attribute of the helper configuration, if it\n * is present.\n * @method\n * @param {string} facet facet name to remove\n * @return {SearchParameters}\n */\n removeFacet: function removeFacet(facet) {\n if (!this.isConjunctiveFacet(facet)) {\n return this;\n }\n\n return this.clearRefinements(facet).setQueryParameters({\n facets: this.facets.filter(function(f) {\n return f !== facet;\n })\n });\n },\n /**\n * Remove a disjunctive facet from the disjunctiveFacets attribute of the\n * helper configuration, if it is present.\n * @method\n * @param {string} facet disjunctive facet name to remove\n * @return {SearchParameters}\n */\n removeDisjunctiveFacet: function removeDisjunctiveFacet(facet) {\n if (!this.isDisjunctiveFacet(facet)) {\n return this;\n }\n\n return this.clearRefinements(facet).setQueryParameters({\n disjunctiveFacets: this.disjunctiveFacets.filter(function(f) {\n return f !== facet;\n })\n });\n },\n /**\n * Remove a hierarchical facet from the hierarchicalFacets attribute of the\n * helper configuration, if it is present.\n * @method\n * @param {string} facet hierarchical facet name to remove\n * @return {SearchParameters}\n */\n removeHierarchicalFacet: function removeHierarchicalFacet(facet) {\n if (!this.isHierarchicalFacet(facet)) {\n return this;\n }\n\n return this.clearRefinements(facet).setQueryParameters({\n hierarchicalFacets: this.hierarchicalFacets.filter(function(f) {\n return f.name !== facet;\n })\n });\n },\n /**\n * Remove a refinement set on facet. If a value is provided, it will clear the\n * refinement for the given value, otherwise it will clear all the refinement\n * values for the faceted attribute.\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {string} [value] value used to filter\n * @return {SearchParameters}\n */\n removeFacetRefinement: function removeFacetRefinement(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n }\n if (!RefinementList.isRefined(this.facetsRefinements, facet, value)) return this;\n\n return this.setQueryParameters({\n facetsRefinements: RefinementList.removeRefinement(this.facetsRefinements, facet, value)\n });\n },\n /**\n * Remove a negative refinement on a facet\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {string} value value used to filter\n * @return {SearchParameters}\n */\n removeExcludeRefinement: function removeExcludeRefinement(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n }\n if (!RefinementList.isRefined(this.facetsExcludes, facet, value)) return this;\n\n return this.setQueryParameters({\n facetsExcludes: RefinementList.removeRefinement(this.facetsExcludes, facet, value)\n });\n },\n /**\n * Remove a refinement on a disjunctive facet\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {string} value value used to filter\n * @return {SearchParameters}\n */\n removeDisjunctiveFacetRefinement: function removeDisjunctiveFacetRefinement(facet, value) {\n if (!this.isDisjunctiveFacet(facet)) {\n throw new Error(\n facet + ' is not defined in the disjunctiveFacets attribute of the helper configuration');\n }\n if (!RefinementList.isRefined(this.disjunctiveFacetsRefinements, facet, value)) return this;\n\n return this.setQueryParameters({\n disjunctiveFacetsRefinements: RefinementList.removeRefinement(\n this.disjunctiveFacetsRefinements, facet, value)\n });\n },\n /**\n * Remove a tag from the list of tag refinements\n * @method\n * @param {string} tag the tag to remove\n * @return {SearchParameters}\n */\n removeTagRefinement: function removeTagRefinement(tag) {\n if (!this.isTagRefined(tag)) return this;\n\n var modification = {\n tagRefinements: this.tagRefinements.filter(function(t) {\n return t !== tag;\n })\n };\n\n return this.setQueryParameters(modification);\n },\n /**\n * Generic toggle refinement method to use with facet, disjunctive facets\n * and hierarchical facets\n * @param {string} facet the facet to refine\n * @param {string} value the associated value\n * @return {SearchParameters}\n * @throws will throw an error if the facet is not declared in the settings of the helper\n * @deprecated since version 2.19.0, see {@link SearchParameters#toggleFacetRefinement}\n */\n toggleRefinement: function toggleRefinement(facet, value) {\n return this.toggleFacetRefinement(facet, value);\n },\n /**\n * Generic toggle refinement method to use with facet, disjunctive facets\n * and hierarchical facets\n * @param {string} facet the facet to refine\n * @param {string} value the associated value\n * @return {SearchParameters}\n * @throws will throw an error if the facet is not declared in the settings of the helper\n */\n toggleFacetRefinement: function toggleFacetRefinement(facet, value) {\n if (this.isHierarchicalFacet(facet)) {\n return this.toggleHierarchicalFacetRefinement(facet, value);\n } else if (this.isConjunctiveFacet(facet)) {\n return this.toggleConjunctiveFacetRefinement(facet, value);\n } else if (this.isDisjunctiveFacet(facet)) {\n return this.toggleDisjunctiveFacetRefinement(facet, value);\n }\n\n throw new Error('Cannot refine the undeclared facet ' + facet +\n '; it should be added to the helper options facets, disjunctiveFacets or hierarchicalFacets');\n },\n /**\n * Switch the refinement applied over a facet/value\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {SearchParameters}\n */\n toggleConjunctiveFacetRefinement: function toggleConjunctiveFacetRefinement(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n }\n\n return this.setQueryParameters({\n facetsRefinements: RefinementList.toggleRefinement(this.facetsRefinements, facet, value)\n });\n },\n /**\n * Switch the refinement applied over a facet/value\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {SearchParameters}\n */\n toggleExcludeFacetRefinement: function toggleExcludeFacetRefinement(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n }\n\n return this.setQueryParameters({\n facetsExcludes: RefinementList.toggleRefinement(this.facetsExcludes, facet, value)\n });\n },\n /**\n * Switch the refinement applied over a facet/value\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {SearchParameters}\n */\n toggleDisjunctiveFacetRefinement: function toggleDisjunctiveFacetRefinement(facet, value) {\n if (!this.isDisjunctiveFacet(facet)) {\n throw new Error(\n facet + ' is not defined in the disjunctiveFacets attribute of the helper configuration');\n }\n\n return this.setQueryParameters({\n disjunctiveFacetsRefinements: RefinementList.toggleRefinement(\n this.disjunctiveFacetsRefinements, facet, value)\n });\n },\n /**\n * Switch the refinement applied over a facet/value\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {SearchParameters}\n */\n toggleHierarchicalFacetRefinement: function toggleHierarchicalFacetRefinement(facet, value) {\n if (!this.isHierarchicalFacet(facet)) {\n throw new Error(\n facet + ' is not defined in the hierarchicalFacets attribute of the helper configuration');\n }\n\n var separator = this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(facet));\n\n var mod = {};\n\n var upOneOrMultipleLevel = this.hierarchicalFacetsRefinements[facet] !== undefined &&\n this.hierarchicalFacetsRefinements[facet].length > 0 && (\n // remove current refinement:\n // refinement was 'beer > IPA', call is toggleRefine('beer > IPA'), refinement should be `beer`\n this.hierarchicalFacetsRefinements[facet][0] === value ||\n // remove a parent refinement of the current refinement:\n // - refinement was 'beer > IPA > Flying dog'\n // - call is toggleRefine('beer > IPA')\n // - refinement should be `beer`\n this.hierarchicalFacetsRefinements[facet][0].indexOf(value + separator) === 0\n );\n\n if (upOneOrMultipleLevel) {\n if (value.indexOf(separator) === -1) {\n // go back to root level\n mod[facet] = [];\n } else {\n mod[facet] = [value.slice(0, value.lastIndexOf(separator))];\n }\n } else {\n mod[facet] = [value];\n }\n\n return this.setQueryParameters({\n hierarchicalFacetsRefinements: defaultsPure({}, mod, this.hierarchicalFacetsRefinements)\n });\n },\n\n /**\n * Adds a refinement on a hierarchical facet.\n * @param {string} facet the facet name\n * @param {string} path the hierarchical facet path\n * @return {SearchParameter} the new state\n * @throws Error if the facet is not defined or if the facet is refined\n */\n addHierarchicalFacetRefinement: function(facet, path) {\n if (this.isHierarchicalFacetRefined(facet)) {\n throw new Error(facet + ' is already refined.');\n }\n if (!this.isHierarchicalFacet(facet)) {\n throw new Error(facet + ' is not defined in the hierarchicalFacets attribute of the helper configuration.');\n }\n var mod = {};\n mod[facet] = [path];\n return this.setQueryParameters({\n hierarchicalFacetsRefinements: defaultsPure({}, mod, this.hierarchicalFacetsRefinements)\n });\n },\n\n /**\n * Removes the refinement set on a hierarchical facet.\n * @param {string} facet the facet name\n * @return {SearchParameter} the new state\n * @throws Error if the facet is not defined or if the facet is not refined\n */\n removeHierarchicalFacetRefinement: function(facet) {\n if (!this.isHierarchicalFacetRefined(facet)) {\n return this;\n }\n var mod = {};\n mod[facet] = [];\n return this.setQueryParameters({\n hierarchicalFacetsRefinements: defaultsPure({}, mod, this.hierarchicalFacetsRefinements)\n });\n },\n /**\n * Switch the tag refinement\n * @method\n * @param {string} tag the tag to remove or add\n * @return {SearchParameters}\n */\n toggleTagRefinement: function toggleTagRefinement(tag) {\n if (this.isTagRefined(tag)) {\n return this.removeTagRefinement(tag);\n }\n\n return this.addTagRefinement(tag);\n },\n /**\n * Test if the facet name is from one of the disjunctive facets\n * @method\n * @param {string} facet facet name to test\n * @return {boolean}\n */\n isDisjunctiveFacet: function(facet) {\n return this.disjunctiveFacets.indexOf(facet) > -1;\n },\n /**\n * Test if the facet name is from one of the hierarchical facets\n * @method\n * @param {string} facetName facet name to test\n * @return {boolean}\n */\n isHierarchicalFacet: function(facetName) {\n return this.getHierarchicalFacetByName(facetName) !== undefined;\n },\n /**\n * Test if the facet name is from one of the conjunctive/normal facets\n * @method\n * @param {string} facet facet name to test\n * @return {boolean}\n */\n isConjunctiveFacet: function(facet) {\n return this.facets.indexOf(facet) > -1;\n },\n /**\n * Returns true if the facet is refined, either for a specific value or in\n * general.\n * @method\n * @param {string} facet name of the attribute for used for faceting\n * @param {string} value, optional value. If passed will test that this value\n * is filtering the given facet.\n * @return {boolean} returns true if refined\n */\n isFacetRefined: function isFacetRefined(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n return false;\n }\n return RefinementList.isRefined(this.facetsRefinements, facet, value);\n },\n /**\n * Returns true if the facet contains exclusions or if a specific value is\n * excluded.\n *\n * @method\n * @param {string} facet name of the attribute for used for faceting\n * @param {string} [value] optional value. If passed will test that this value\n * is filtering the given facet.\n * @return {boolean} returns true if refined\n */\n isExcludeRefined: function isExcludeRefined(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n return false;\n }\n return RefinementList.isRefined(this.facetsExcludes, facet, value);\n },\n /**\n * Returns true if the facet contains a refinement, or if a value passed is a\n * refinement for the facet.\n * @method\n * @param {string} facet name of the attribute for used for faceting\n * @param {string} value optional, will test if the value is used for refinement\n * if there is one, otherwise will test if the facet contains any refinement\n * @return {boolean}\n */\n isDisjunctiveFacetRefined: function isDisjunctiveFacetRefined(facet, value) {\n if (!this.isDisjunctiveFacet(facet)) {\n return false;\n }\n return RefinementList.isRefined(this.disjunctiveFacetsRefinements, facet, value);\n },\n /**\n * Returns true if the facet contains a refinement, or if a value passed is a\n * refinement for the facet.\n * @method\n * @param {string} facet name of the attribute for used for faceting\n * @param {string} value optional, will test if the value is used for refinement\n * if there is one, otherwise will test if the facet contains any refinement\n * @return {boolean}\n */\n isHierarchicalFacetRefined: function isHierarchicalFacetRefined(facet, value) {\n if (!this.isHierarchicalFacet(facet)) {\n return false;\n }\n\n var refinements = this.getHierarchicalRefinement(facet);\n\n if (!value) {\n return refinements.length > 0;\n }\n\n return refinements.indexOf(value) !== -1;\n },\n /**\n * Test if the triple (attribute, operator, value) is already refined.\n * If only the attribute and the operator are provided, it tests if the\n * contains any refinement value.\n * @method\n * @param {string} attribute attribute for which the refinement is applied\n * @param {string} [operator] operator of the refinement\n * @param {string} [value] value of the refinement\n * @return {boolean} true if it is refined\n */\n isNumericRefined: function isNumericRefined(attribute, operator, value) {\n if (value === undefined && operator === undefined) {\n return !!this.numericRefinements[attribute];\n }\n\n var isOperatorDefined =\n this.numericRefinements[attribute] &&\n this.numericRefinements[attribute][operator] !== undefined;\n\n if (value === undefined || !isOperatorDefined) {\n return isOperatorDefined;\n }\n\n var parsedValue = valToNumber(value);\n var isAttributeValueDefined =\n findArray(this.numericRefinements[attribute][operator], parsedValue) !==\n undefined;\n\n return isOperatorDefined && isAttributeValueDefined;\n },\n /**\n * Returns true if the tag refined, false otherwise\n * @method\n * @param {string} tag the tag to check\n * @return {boolean}\n */\n isTagRefined: function isTagRefined(tag) {\n return this.tagRefinements.indexOf(tag) !== -1;\n },\n /**\n * Returns the list of all disjunctive facets refined\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {string[]}\n */\n getRefinedDisjunctiveFacets: function getRefinedDisjunctiveFacets() {\n var self = this;\n\n // attributes used for numeric filter can also be disjunctive\n var disjunctiveNumericRefinedFacets = intersection(\n Object.keys(this.numericRefinements).filter(function(facet) {\n return Object.keys(self.numericRefinements[facet]).length > 0;\n }),\n this.disjunctiveFacets\n );\n\n return Object.keys(this.disjunctiveFacetsRefinements).filter(function(facet) {\n return self.disjunctiveFacetsRefinements[facet].length > 0;\n })\n .concat(disjunctiveNumericRefinedFacets)\n .concat(this.getRefinedHierarchicalFacets());\n },\n /**\n * Returns the list of all disjunctive facets refined\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {string[]}\n */\n getRefinedHierarchicalFacets: function getRefinedHierarchicalFacets() {\n var self = this;\n return intersection(\n // enforce the order between the two arrays,\n // so that refinement name index === hierarchical facet index\n this.hierarchicalFacets.map(function(facet) { return facet.name; }),\n Object.keys(this.hierarchicalFacetsRefinements).filter(function(facet) {\n return self.hierarchicalFacetsRefinements[facet].length > 0;\n })\n );\n },\n /**\n * Returned the list of all disjunctive facets not refined\n * @method\n * @return {string[]}\n */\n getUnrefinedDisjunctiveFacets: function() {\n var refinedFacets = this.getRefinedDisjunctiveFacets();\n\n return this.disjunctiveFacets.filter(function(f) {\n return refinedFacets.indexOf(f) === -1;\n });\n },\n\n managedParameters: [\n 'index',\n\n 'facets',\n 'disjunctiveFacets',\n 'facetsRefinements',\n 'hierarchicalFacets',\n 'facetsExcludes',\n\n 'disjunctiveFacetsRefinements',\n 'numericRefinements',\n 'tagRefinements',\n 'hierarchicalFacetsRefinements'\n ],\n getQueryParams: function getQueryParams() {\n var managedParameters = this.managedParameters;\n\n var queryParams = {};\n\n var self = this;\n Object.keys(this).forEach(function(paramName) {\n var paramValue = self[paramName];\n if (managedParameters.indexOf(paramName) === -1 && paramValue !== undefined) {\n queryParams[paramName] = paramValue;\n }\n });\n\n return queryParams;\n },\n /**\n * Let the user set a specific value for a given parameter. Will return the\n * same instance if the parameter is invalid or if the value is the same as the\n * previous one.\n * @method\n * @param {string} parameter the parameter name\n * @param {any} value the value to be set, must be compliant with the definition\n * of the attribute on the object\n * @return {SearchParameters} the updated state\n */\n setQueryParameter: function setParameter(parameter, value) {\n if (this[parameter] === value) return this;\n\n var modification = {};\n\n modification[parameter] = value;\n\n return this.setQueryParameters(modification);\n },\n /**\n * Let the user set any of the parameters with a plain object.\n * @method\n * @param {object} params all the keys and the values to be updated\n * @return {SearchParameters} a new updated instance\n */\n setQueryParameters: function setQueryParameters(params) {\n if (!params) return this;\n\n var error = SearchParameters.validate(this, params);\n\n if (error) {\n throw error;\n }\n\n var self = this;\n var nextWithNumbers = SearchParameters._parseNumbers(params);\n var previousPlainObject = Object.keys(this).reduce(function(acc, key) {\n acc[key] = self[key];\n return acc;\n }, {});\n\n var nextPlainObject = Object.keys(nextWithNumbers).reduce(\n function(previous, key) {\n var isPreviousValueDefined = previous[key] !== undefined;\n var isNextValueDefined = nextWithNumbers[key] !== undefined;\n\n if (isPreviousValueDefined && !isNextValueDefined) {\n return omit(previous, [key]);\n }\n\n if (isNextValueDefined) {\n previous[key] = nextWithNumbers[key];\n }\n\n return previous;\n },\n previousPlainObject\n );\n\n return new this.constructor(nextPlainObject);\n },\n\n /**\n * Returns a new instance with the page reset. Two scenarios possible:\n * the page is omitted -> return the given instance\n * the page is set -> return a new instance with a page of 0\n * @return {SearchParameters} a new updated instance\n */\n resetPage: function() {\n if (this.page === undefined) {\n return this;\n }\n\n return this.setPage(0);\n },\n\n /**\n * Helper function to get the hierarchicalFacet separator or the default one (`>`)\n * @param {object} hierarchicalFacet\n * @return {string} returns the hierarchicalFacet.separator or `>` as default\n */\n _getHierarchicalFacetSortBy: function(hierarchicalFacet) {\n return hierarchicalFacet.sortBy || ['isRefined:desc', 'name:asc'];\n },\n\n /**\n * Helper function to get the hierarchicalFacet separator or the default one (`>`)\n * @private\n * @param {object} hierarchicalFacet\n * @return {string} returns the hierarchicalFacet.separator or `>` as default\n */\n _getHierarchicalFacetSeparator: function(hierarchicalFacet) {\n return hierarchicalFacet.separator || ' > ';\n },\n\n /**\n * Helper function to get the hierarchicalFacet prefix path or null\n * @private\n * @param {object} hierarchicalFacet\n * @return {string} returns the hierarchicalFacet.rootPath or null as default\n */\n _getHierarchicalRootPath: function(hierarchicalFacet) {\n return hierarchicalFacet.rootPath || null;\n },\n\n /**\n * Helper function to check if we show the parent level of the hierarchicalFacet\n * @private\n * @param {object} hierarchicalFacet\n * @return {string} returns the hierarchicalFacet.showParentLevel or true as default\n */\n _getHierarchicalShowParentLevel: function(hierarchicalFacet) {\n if (typeof hierarchicalFacet.showParentLevel === 'boolean') {\n return hierarchicalFacet.showParentLevel;\n }\n return true;\n },\n\n /**\n * Helper function to get the hierarchicalFacet by it's name\n * @param {string} hierarchicalFacetName\n * @return {object} a hierarchicalFacet\n */\n getHierarchicalFacetByName: function(hierarchicalFacetName) {\n return find(\n this.hierarchicalFacets,\n function(f) {\n return f.name === hierarchicalFacetName;\n }\n );\n },\n\n /**\n * Get the current breadcrumb for a hierarchical facet, as an array\n * @param {string} facetName Hierarchical facet name\n * @return {array.} the path as an array of string\n */\n getHierarchicalFacetBreadcrumb: function(facetName) {\n if (!this.isHierarchicalFacet(facetName)) {\n return [];\n }\n\n var refinement = this.getHierarchicalRefinement(facetName)[0];\n if (!refinement) return [];\n\n var separator = this._getHierarchicalFacetSeparator(\n this.getHierarchicalFacetByName(facetName)\n );\n var path = refinement.split(separator);\n return path.map(function(part) {\n return part.trim();\n });\n },\n\n toString: function() {\n return JSON.stringify(this, null, 2);\n }\n};\n\n/**\n * Callback used for clearRefinement method\n * @callback SearchParameters.clearCallback\n * @param {OperatorList|FacetList} value the value of the filter\n * @param {string} key the current attribute name\n * @param {string} type `numeric`, `disjunctiveFacet`, `conjunctiveFacet`, `hierarchicalFacet` or `exclude`\n * depending on the type of facet\n * @return {boolean} `true` if the element should be removed. `false` otherwise.\n */\nmodule.exports = SearchParameters;\n","'use strict';\n\nmodule.exports = generateTrees;\n\nvar orderBy = require('../functions/orderBy');\nvar find = require('../functions/find');\nvar prepareHierarchicalFacetSortBy = require('../functions/formatSort');\nvar fv = require('../functions/escapeFacetValue');\nvar escapeFacetValue = fv.escapeFacetValue;\nvar unescapeFacetValue = fv.unescapeFacetValue;\n\nfunction generateTrees(state) {\n return function generate(hierarchicalFacetResult, hierarchicalFacetIndex) {\n var hierarchicalFacet = state.hierarchicalFacets[hierarchicalFacetIndex];\n var hierarchicalFacetRefinement =\n (state.hierarchicalFacetsRefinements[hierarchicalFacet.name] &&\n state.hierarchicalFacetsRefinements[hierarchicalFacet.name][0]) ||\n '';\n var hierarchicalSeparator = state._getHierarchicalFacetSeparator(\n hierarchicalFacet\n );\n var hierarchicalRootPath = state._getHierarchicalRootPath(\n hierarchicalFacet\n );\n var hierarchicalShowParentLevel = state._getHierarchicalShowParentLevel(\n hierarchicalFacet\n );\n var sortBy = prepareHierarchicalFacetSortBy(\n state._getHierarchicalFacetSortBy(hierarchicalFacet)\n );\n\n var rootExhaustive = hierarchicalFacetResult.every(function(facetResult) {\n return facetResult.exhaustive;\n });\n\n var generateTreeFn = generateHierarchicalTree(\n sortBy,\n hierarchicalSeparator,\n hierarchicalRootPath,\n hierarchicalShowParentLevel,\n hierarchicalFacetRefinement\n );\n\n var results = hierarchicalFacetResult;\n\n if (hierarchicalRootPath) {\n results = hierarchicalFacetResult.slice(\n hierarchicalRootPath.split(hierarchicalSeparator).length\n );\n }\n\n return results.reduce(generateTreeFn, {\n name: state.hierarchicalFacets[hierarchicalFacetIndex].name,\n count: null, // root level, no count\n isRefined: true, // root level, always refined\n path: null, // root level, no path\n escapedValue: null,\n exhaustive: rootExhaustive,\n data: null\n });\n };\n}\n\nfunction generateHierarchicalTree(\n sortBy,\n hierarchicalSeparator,\n hierarchicalRootPath,\n hierarchicalShowParentLevel,\n currentRefinement\n) {\n return function generateTree(\n hierarchicalTree,\n hierarchicalFacetResult,\n currentHierarchicalLevel\n ) {\n var parent = hierarchicalTree;\n\n if (currentHierarchicalLevel > 0) {\n var level = 0;\n\n parent = hierarchicalTree;\n\n while (level < currentHierarchicalLevel) {\n /**\n * @type {object[]]} hierarchical data\n */\n var data = parent && Array.isArray(parent.data) ? parent.data : [];\n parent = find(data, function(subtree) {\n return subtree.isRefined;\n });\n level++;\n }\n }\n\n // we found a refined parent, let's add current level data under it\n if (parent) {\n // filter values in case an object has multiple categories:\n // {\n // categories: {\n // level0: ['beers', 'bières'],\n // level1: ['beers > IPA', 'bières > Belges']\n // }\n // }\n //\n // If parent refinement is `beers`, then we do not want to have `bières > Belges`\n // showing up\n\n var picked = Object.keys(hierarchicalFacetResult.data)\n .map(function(facetValue) {\n return [facetValue, hierarchicalFacetResult.data[facetValue]];\n })\n .filter(function(tuple) {\n var facetValue = tuple[0];\n return onlyMatchingTree(\n facetValue,\n parent.path || hierarchicalRootPath,\n currentRefinement,\n hierarchicalSeparator,\n hierarchicalRootPath,\n hierarchicalShowParentLevel\n );\n });\n\n parent.data = orderBy(\n picked.map(function(tuple) {\n var facetValue = tuple[0];\n var facetCount = tuple[1];\n\n return format(\n facetCount,\n facetValue,\n hierarchicalSeparator,\n unescapeFacetValue(currentRefinement),\n hierarchicalFacetResult.exhaustive\n );\n }),\n sortBy[0],\n sortBy[1]\n );\n }\n\n return hierarchicalTree;\n };\n}\n\nfunction onlyMatchingTree(\n facetValue,\n parentPath,\n currentRefinement,\n hierarchicalSeparator,\n hierarchicalRootPath,\n hierarchicalShowParentLevel\n) {\n // we want the facetValue is a child of hierarchicalRootPath\n if (\n hierarchicalRootPath &&\n (facetValue.indexOf(hierarchicalRootPath) !== 0 ||\n hierarchicalRootPath === facetValue)\n ) {\n return false;\n }\n\n // we always want root levels (only when there is no prefix path)\n return (\n (!hierarchicalRootPath &&\n facetValue.indexOf(hierarchicalSeparator) === -1) ||\n // if there is a rootPath, being root level mean 1 level under rootPath\n (hierarchicalRootPath &&\n facetValue.split(hierarchicalSeparator).length -\n hierarchicalRootPath.split(hierarchicalSeparator).length ===\n 1) ||\n // if current refinement is a root level and current facetValue is a root level,\n // keep the facetValue\n (facetValue.indexOf(hierarchicalSeparator) === -1 &&\n currentRefinement.indexOf(hierarchicalSeparator) === -1) ||\n // currentRefinement is a child of the facet value\n currentRefinement.indexOf(facetValue) === 0 ||\n // facetValue is a child of the current parent, add it\n (facetValue.indexOf(parentPath + hierarchicalSeparator) === 0 &&\n (hierarchicalShowParentLevel ||\n facetValue.indexOf(currentRefinement) === 0))\n );\n}\n\nfunction format(\n facetCount,\n facetValue,\n hierarchicalSeparator,\n currentRefinement,\n exhaustive\n) {\n var parts = facetValue.split(hierarchicalSeparator);\n return {\n name: parts[parts.length - 1].trim(),\n path: facetValue,\n escapedValue: escapeFacetValue(facetValue),\n count: facetCount,\n isRefined:\n currentRefinement === facetValue ||\n currentRefinement.indexOf(facetValue + hierarchicalSeparator) === 0,\n exhaustive: exhaustive,\n data: null\n };\n}\n","'use strict';\n\nvar merge = require('../functions/merge');\nvar defaultsPure = require('../functions/defaultsPure');\nvar orderBy = require('../functions/orderBy');\nvar compact = require('../functions/compact');\nvar find = require('../functions/find');\nvar findIndex = require('../functions/findIndex');\nvar formatSort = require('../functions/formatSort');\nvar fv = require('../functions/escapeFacetValue');\nvar escapeFacetValue = fv.escapeFacetValue;\nvar unescapeFacetValue = fv.unescapeFacetValue;\n\nvar generateHierarchicalTree = require('./generate-hierarchical-tree');\n\n/**\n * @typedef SearchResults.Facet\n * @type {object}\n * @property {string} name name of the attribute in the record\n * @property {object} data the faceting data: value, number of entries\n * @property {object} stats undefined unless facet_stats is retrieved from algolia\n */\n\n/**\n * @typedef SearchResults.HierarchicalFacet\n * @type {object}\n * @property {string} name name of the current value given the hierarchical level, trimmed.\n * If root node, you get the facet name\n * @property {number} count number of objects matching this hierarchical value\n * @property {string} path the current hierarchical value full path\n * @property {boolean} isRefined `true` if the current value was refined, `false` otherwise\n * @property {HierarchicalFacet[]} data sub values for the current level\n */\n\n/**\n * @typedef SearchResults.FacetValue\n * @type {object}\n * @property {string} name the facet value itself\n * @property {number} count times this facet appears in the results\n * @property {boolean} isRefined is the facet currently selected\n * @property {boolean} isExcluded is the facet currently excluded (only for conjunctive facets)\n */\n\n/**\n * @typedef Refinement\n * @type {object}\n * @property {string} type the type of filter used:\n * `numeric`, `facet`, `exclude`, `disjunctive`, `hierarchical`\n * @property {string} attributeName name of the attribute used for filtering\n * @property {string} name the value of the filter\n * @property {number} numericValue the value as a number. Only for numeric filters.\n * @property {string} operator the operator used. Only for numeric filters.\n * @property {number} count the number of computed hits for this filter. Only on facets.\n * @property {boolean} exhaustive if the count is exhaustive\n */\n\n/**\n * @param {string[]} attributes\n */\nfunction getIndices(attributes) {\n var indices = {};\n\n attributes.forEach(function(val, idx) {\n indices[val] = idx;\n });\n\n return indices;\n}\n\nfunction assignFacetStats(dest, facetStats, key) {\n if (facetStats && facetStats[key]) {\n dest.stats = facetStats[key];\n }\n}\n\n/**\n * @typedef {Object} HierarchicalFacet\n * @property {string} name\n * @property {string[]} attributes\n */\n\n/**\n * @param {HierarchicalFacet[]} hierarchicalFacets\n * @param {string} hierarchicalAttributeName\n */\nfunction findMatchingHierarchicalFacetFromAttributeName(\n hierarchicalFacets,\n hierarchicalAttributeName\n) {\n return find(hierarchicalFacets, function facetKeyMatchesAttribute(\n hierarchicalFacet\n ) {\n var facetNames = hierarchicalFacet.attributes || [];\n return facetNames.indexOf(hierarchicalAttributeName) > -1;\n });\n}\n\n/*eslint-disable */\n/**\n * Constructor for SearchResults\n * @class\n * @classdesc SearchResults contains the results of a query to Algolia using the\n * {@link AlgoliaSearchHelper}.\n * @param {SearchParameters} state state that led to the response\n * @param {array.} results the results from algolia client\n * @example SearchResults of the first query in\n * the instant search demo\n{\n \"hitsPerPage\": 10,\n \"processingTimeMS\": 2,\n \"facets\": [\n {\n \"name\": \"type\",\n \"data\": {\n \"HardGood\": 6627,\n \"BlackTie\": 550,\n \"Music\": 665,\n \"Software\": 131,\n \"Game\": 456,\n \"Movie\": 1571\n },\n \"exhaustive\": false\n },\n {\n \"exhaustive\": false,\n \"data\": {\n \"Free shipping\": 5507\n },\n \"name\": \"shipping\"\n }\n ],\n \"hits\": [\n {\n \"thumbnailImage\": \"http://img.bbystatic.com/BestBuy_US/images/products/1688/1688832_54x108_s.gif\",\n \"_highlightResult\": {\n \"shortDescription\": {\n \"matchLevel\": \"none\",\n \"value\": \"Safeguard your PC, Mac, Android and iOS devices with comprehensive Internet protection\",\n \"matchedWords\": []\n },\n \"category\": {\n \"matchLevel\": \"none\",\n \"value\": \"Computer Security Software\",\n \"matchedWords\": []\n },\n \"manufacturer\": {\n \"matchedWords\": [],\n \"value\": \"Webroot\",\n \"matchLevel\": \"none\"\n },\n \"name\": {\n \"value\": \"Webroot SecureAnywhere Internet Security (3-Device) (1-Year Subscription) - Mac/Windows\",\n \"matchedWords\": [],\n \"matchLevel\": \"none\"\n }\n },\n \"image\": \"http://img.bbystatic.com/BestBuy_US/images/products/1688/1688832_105x210_sc.jpg\",\n \"shipping\": \"Free shipping\",\n \"bestSellingRank\": 4,\n \"shortDescription\": \"Safeguard your PC, Mac, Android and iOS devices with comprehensive Internet protection\",\n \"url\": \"http://www.bestbuy.com/site/webroot-secureanywhere-internet-security-3-devi…d=1219060687969&skuId=1688832&cmp=RMX&ky=2d3GfEmNIzjA0vkzveHdZEBgpPCyMnLTJ\",\n \"name\": \"Webroot SecureAnywhere Internet Security (3-Device) (1-Year Subscription) - Mac/Windows\",\n \"category\": \"Computer Security Software\",\n \"salePrice_range\": \"1 - 50\",\n \"objectID\": \"1688832\",\n \"type\": \"Software\",\n \"customerReviewCount\": 5980,\n \"salePrice\": 49.99,\n \"manufacturer\": \"Webroot\"\n },\n ....\n ],\n \"nbHits\": 10000,\n \"disjunctiveFacets\": [\n {\n \"exhaustive\": false,\n \"data\": {\n \"5\": 183,\n \"12\": 112,\n \"7\": 149,\n ...\n },\n \"name\": \"customerReviewCount\",\n \"stats\": {\n \"max\": 7461,\n \"avg\": 157.939,\n \"min\": 1\n }\n },\n {\n \"data\": {\n \"Printer Ink\": 142,\n \"Wireless Speakers\": 60,\n \"Point & Shoot Cameras\": 48,\n ...\n },\n \"name\": \"category\",\n \"exhaustive\": false\n },\n {\n \"exhaustive\": false,\n \"data\": {\n \"> 5000\": 2,\n \"1 - 50\": 6524,\n \"501 - 2000\": 566,\n \"201 - 500\": 1501,\n \"101 - 200\": 1360,\n \"2001 - 5000\": 47\n },\n \"name\": \"salePrice_range\"\n },\n {\n \"data\": {\n \"Dynex™\": 202,\n \"Insignia™\": 230,\n \"PNY\": 72,\n ...\n },\n \"name\": \"manufacturer\",\n \"exhaustive\": false\n }\n ],\n \"query\": \"\",\n \"nbPages\": 100,\n \"page\": 0,\n \"index\": \"bestbuy\"\n}\n **/\n/*eslint-enable */\nfunction SearchResults(state, results, options) {\n var mainSubResponse = results[0];\n\n this._rawResults = results;\n\n var self = this;\n\n // https://www.algolia.com/doc/api-reference/api-methods/search/#response\n Object.keys(mainSubResponse).forEach(function(key) {\n self[key] = mainSubResponse[key];\n });\n\n // Make every key of the result options reachable from the instance\n Object.keys(options || {}).forEach(function(key) {\n self[key] = options[key];\n });\n\n /**\n * query used to generate the results\n * @name query\n * @member {string}\n * @memberof SearchResults\n * @instance\n */\n /**\n * The query as parsed by the engine given all the rules.\n * @name parsedQuery\n * @member {string}\n * @memberof SearchResults\n * @instance\n */\n /**\n * all the records that match the search parameters. Each record is\n * augmented with a new attribute `_highlightResult`\n * which is an object keyed by attribute and with the following properties:\n * - `value` : the value of the facet highlighted (html)\n * - `matchLevel`: full, partial or none depending on how the query terms match\n * @name hits\n * @member {object[]}\n * @memberof SearchResults\n * @instance\n */\n /**\n * index where the results come from\n * @name index\n * @member {string}\n * @memberof SearchResults\n * @instance\n */\n /**\n * number of hits per page requested\n * @name hitsPerPage\n * @member {number}\n * @memberof SearchResults\n * @instance\n */\n /**\n * total number of hits of this query on the index\n * @name nbHits\n * @member {number}\n * @memberof SearchResults\n * @instance\n */\n /**\n * total number of pages with respect to the number of hits per page and the total number of hits\n * @name nbPages\n * @member {number}\n * @memberof SearchResults\n * @instance\n */\n /**\n * current page\n * @name page\n * @member {number}\n * @memberof SearchResults\n * @instance\n */\n /**\n * The position if the position was guessed by IP.\n * @name aroundLatLng\n * @member {string}\n * @memberof SearchResults\n * @instance\n * @example \"48.8637,2.3615\",\n */\n /**\n * The radius computed by Algolia.\n * @name automaticRadius\n * @member {string}\n * @memberof SearchResults\n * @instance\n * @example \"126792922\",\n */\n /**\n * String identifying the server used to serve this request.\n *\n * getRankingInfo needs to be set to `true` for this to be returned\n *\n * @name serverUsed\n * @member {string}\n * @memberof SearchResults\n * @instance\n * @example \"c7-use-2.algolia.net\",\n */\n /**\n * Boolean that indicates if the computation of the counts did time out.\n * @deprecated\n * @name timeoutCounts\n * @member {boolean}\n * @memberof SearchResults\n * @instance\n */\n /**\n * Boolean that indicates if the computation of the hits did time out.\n * @deprecated\n * @name timeoutHits\n * @member {boolean}\n * @memberof SearchResults\n * @instance\n */\n /**\n * True if the counts of the facets is exhaustive\n * @name exhaustiveFacetsCount\n * @member {boolean}\n * @memberof SearchResults\n * @instance\n */\n /**\n * True if the number of hits is exhaustive\n * @name exhaustiveNbHits\n * @member {boolean}\n * @memberof SearchResults\n * @instance\n */\n /**\n * Contains the userData if they are set by a [query rule](https://www.algolia.com/doc/guides/query-rules/query-rules-overview/).\n * @name userData\n * @member {object[]}\n * @memberof SearchResults\n * @instance\n */\n /**\n * queryID is the unique identifier of the query used to generate the current search results.\n * This value is only available if the `clickAnalytics` search parameter is set to `true`.\n * @name queryID\n * @member {string}\n * @memberof SearchResults\n * @instance\n */\n\n /**\n * sum of the processing time of all the queries\n * @member {number}\n */\n this.processingTimeMS = results.reduce(function(sum, result) {\n return result.processingTimeMS === undefined\n ? sum\n : sum + result.processingTimeMS;\n }, 0);\n\n /**\n * disjunctive facets results\n * @member {SearchResults.Facet[]}\n */\n this.disjunctiveFacets = [];\n /**\n * disjunctive facets results\n * @member {SearchResults.HierarchicalFacet[]}\n */\n this.hierarchicalFacets = state.hierarchicalFacets.map(function initFutureTree() {\n return [];\n });\n /**\n * other facets results\n * @member {SearchResults.Facet[]}\n */\n this.facets = [];\n\n var disjunctiveFacets = state.getRefinedDisjunctiveFacets();\n\n var facetsIndices = getIndices(state.facets);\n var disjunctiveFacetsIndices = getIndices(state.disjunctiveFacets);\n var nextDisjunctiveResult = 1;\n\n // Since we send request only for disjunctive facets that have been refined,\n // we get the facets information from the first, general, response.\n\n var mainFacets = mainSubResponse.facets || {};\n\n Object.keys(mainFacets).forEach(function(facetKey) {\n var facetValueObject = mainFacets[facetKey];\n\n var hierarchicalFacet = findMatchingHierarchicalFacetFromAttributeName(\n state.hierarchicalFacets,\n facetKey\n );\n\n if (hierarchicalFacet) {\n // Place the hierarchicalFacet data at the correct index depending on\n // the attributes order that was defined at the helper initialization\n var facetIndex = hierarchicalFacet.attributes.indexOf(facetKey);\n var idxAttributeName = findIndex(state.hierarchicalFacets, function(f) {\n return f.name === hierarchicalFacet.name;\n });\n self.hierarchicalFacets[idxAttributeName][facetIndex] = {\n attribute: facetKey,\n data: facetValueObject,\n exhaustive: mainSubResponse.exhaustiveFacetsCount\n };\n } else {\n var isFacetDisjunctive = state.disjunctiveFacets.indexOf(facetKey) !== -1;\n var isFacetConjunctive = state.facets.indexOf(facetKey) !== -1;\n var position;\n\n if (isFacetDisjunctive) {\n position = disjunctiveFacetsIndices[facetKey];\n self.disjunctiveFacets[position] = {\n name: facetKey,\n data: facetValueObject,\n exhaustive: mainSubResponse.exhaustiveFacetsCount\n };\n assignFacetStats(self.disjunctiveFacets[position], mainSubResponse.facets_stats, facetKey);\n }\n if (isFacetConjunctive) {\n position = facetsIndices[facetKey];\n self.facets[position] = {\n name: facetKey,\n data: facetValueObject,\n exhaustive: mainSubResponse.exhaustiveFacetsCount\n };\n assignFacetStats(self.facets[position], mainSubResponse.facets_stats, facetKey);\n }\n }\n });\n\n // Make sure we do not keep holes within the hierarchical facets\n this.hierarchicalFacets = compact(this.hierarchicalFacets);\n\n // aggregate the refined disjunctive facets\n disjunctiveFacets.forEach(function(disjunctiveFacet) {\n var result = results[nextDisjunctiveResult];\n var facets = result && result.facets ? result.facets : {};\n var hierarchicalFacet = state.getHierarchicalFacetByName(disjunctiveFacet);\n\n // There should be only item in facets.\n Object.keys(facets).forEach(function(dfacet) {\n var facetResults = facets[dfacet];\n\n var position;\n\n if (hierarchicalFacet) {\n position = findIndex(state.hierarchicalFacets, function(f) {\n return f.name === hierarchicalFacet.name;\n });\n var attributeIndex = findIndex(self.hierarchicalFacets[position], function(f) {\n return f.attribute === dfacet;\n });\n\n // previous refinements and no results so not able to find it\n if (attributeIndex === -1) {\n return;\n }\n\n self.hierarchicalFacets[position][attributeIndex].data = merge(\n {},\n self.hierarchicalFacets[position][attributeIndex].data,\n facetResults\n );\n } else {\n position = disjunctiveFacetsIndices[dfacet];\n\n var dataFromMainRequest = mainSubResponse.facets && mainSubResponse.facets[dfacet] || {};\n\n self.disjunctiveFacets[position] = {\n name: dfacet,\n data: defaultsPure({}, facetResults, dataFromMainRequest),\n exhaustive: result.exhaustiveFacetsCount\n };\n assignFacetStats(self.disjunctiveFacets[position], result.facets_stats, dfacet);\n\n if (state.disjunctiveFacetsRefinements[dfacet]) {\n state.disjunctiveFacetsRefinements[dfacet].forEach(function(refinementValue) {\n // add the disjunctive refinements if it is no more retrieved\n if (!self.disjunctiveFacets[position].data[refinementValue] &&\n state.disjunctiveFacetsRefinements[dfacet].indexOf(unescapeFacetValue(refinementValue)) > -1) {\n self.disjunctiveFacets[position].data[refinementValue] = 0;\n }\n });\n }\n }\n });\n nextDisjunctiveResult++;\n });\n\n // if we have some parent level values for hierarchical facets, merge them\n state.getRefinedHierarchicalFacets().forEach(function(refinedFacet) {\n var hierarchicalFacet = state.getHierarchicalFacetByName(refinedFacet);\n var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n\n var currentRefinement = state.getHierarchicalRefinement(refinedFacet);\n // if we are already at a root refinement (or no refinement at all), there is no\n // root level values request\n if (currentRefinement.length === 0 || currentRefinement[0].split(separator).length < 2) {\n return;\n }\n\n results.slice(nextDisjunctiveResult).forEach(function(result) {\n var facets = result && result.facets\n ? result.facets\n : {};\n\n Object.keys(facets).forEach(function(dfacet) {\n var facetResults = facets[dfacet];\n var position = findIndex(state.hierarchicalFacets, function(f) {\n return f.name === hierarchicalFacet.name;\n });\n var attributeIndex = findIndex(self.hierarchicalFacets[position], function(f) {\n return f.attribute === dfacet;\n });\n\n // previous refinements and no results so not able to find it\n if (attributeIndex === -1) {\n return;\n }\n\n // when we always get root levels, if the hits refinement is `beers > IPA` (count: 5),\n // then the disjunctive values will be `beers` (count: 100),\n // but we do not want to display\n // | beers (100)\n // > IPA (5)\n // We want\n // | beers (5)\n // > IPA (5)\n var defaultData = {};\n\n if (currentRefinement.length > 0) {\n var root = currentRefinement[0].split(separator)[0];\n defaultData[root] = self.hierarchicalFacets[position][attributeIndex].data[root];\n }\n\n self.hierarchicalFacets[position][attributeIndex].data = defaultsPure(\n defaultData,\n facetResults,\n self.hierarchicalFacets[position][attributeIndex].data\n );\n });\n\n nextDisjunctiveResult++;\n });\n });\n\n // add the excludes\n Object.keys(state.facetsExcludes).forEach(function(facetName) {\n var excludes = state.facetsExcludes[facetName];\n var position = facetsIndices[facetName];\n\n self.facets[position] = {\n name: facetName,\n data: mainSubResponse.facets[facetName],\n exhaustive: mainSubResponse.exhaustiveFacetsCount\n };\n excludes.forEach(function(facetValue) {\n self.facets[position] = self.facets[position] || {name: facetName};\n self.facets[position].data = self.facets[position].data || {};\n self.facets[position].data[facetValue] = 0;\n });\n });\n\n /**\n * @type {Array}\n */\n this.hierarchicalFacets = this.hierarchicalFacets.map(generateHierarchicalTree(state));\n\n /**\n * @type {Array}\n */\n this.facets = compact(this.facets);\n /**\n * @type {Array}\n */\n this.disjunctiveFacets = compact(this.disjunctiveFacets);\n\n this._state = state;\n}\n\n/**\n * Get a facet object with its name\n * @deprecated\n * @param {string} name name of the faceted attribute\n * @return {SearchResults.Facet} the facet object\n */\nSearchResults.prototype.getFacetByName = function(name) {\n function predicate(facet) {\n return facet.name === name;\n }\n\n return find(this.facets, predicate) ||\n find(this.disjunctiveFacets, predicate) ||\n find(this.hierarchicalFacets, predicate);\n};\n\n/**\n * Get the facet values of a specified attribute from a SearchResults object.\n * @private\n * @param {SearchResults} results the search results to search in\n * @param {string} attribute name of the faceted attribute to search for\n * @return {array|object} facet values. For the hierarchical facets it is an object.\n */\nfunction extractNormalizedFacetValues(results, attribute) {\n function predicate(facet) {\n return facet.name === attribute;\n }\n\n if (results._state.isConjunctiveFacet(attribute)) {\n var facet = find(results.facets, predicate);\n if (!facet) return [];\n\n return Object.keys(facet.data).map(function(name) {\n var value = escapeFacetValue(name);\n return {\n name: name,\n escapedValue: value,\n count: facet.data[name],\n isRefined: results._state.isFacetRefined(attribute, value),\n isExcluded: results._state.isExcludeRefined(attribute, name)\n };\n });\n } else if (results._state.isDisjunctiveFacet(attribute)) {\n var disjunctiveFacet = find(results.disjunctiveFacets, predicate);\n if (!disjunctiveFacet) return [];\n\n return Object.keys(disjunctiveFacet.data).map(function(name) {\n var value = escapeFacetValue(name);\n return {\n name: name,\n escapedValue: value,\n count: disjunctiveFacet.data[name],\n isRefined: results._state.isDisjunctiveFacetRefined(attribute, value)\n };\n });\n } else if (results._state.isHierarchicalFacet(attribute)) {\n var hierarchicalFacetValues = find(results.hierarchicalFacets, predicate);\n if (!hierarchicalFacetValues) return hierarchicalFacetValues;\n\n var hierarchicalFacet = results._state.getHierarchicalFacetByName(attribute);\n var currentRefinementSplit = unescapeFacetValue(\n results._state.getHierarchicalRefinement(attribute)[0] || ''\n ).split(results._state._getHierarchicalFacetSeparator(hierarchicalFacet));\n currentRefinementSplit.unshift(attribute);\n\n setIsRefined(hierarchicalFacetValues, currentRefinementSplit, 0);\n\n return hierarchicalFacetValues;\n }\n}\n\n/**\n * Set the isRefined of a hierarchical facet result based on the current state.\n * @param {SearchResults.HierarchicalFacet} item Hierarchical facet to fix\n * @param {string[]} currentRefinementSplit array of parts of the current hierarchical refinement\n * @param {number} depth recursion depth in the currentRefinement\n */\nfunction setIsRefined(item, currentRefinement, depth) {\n item.isRefined = item.name === currentRefinement[depth];\n if (item.data) {\n item.data.forEach(function(child) {\n setIsRefined(child, currentRefinement, depth + 1);\n });\n }\n}\n\n/**\n * Sort nodes of a hierarchical or disjunctive facet results\n * @private\n * @param {function} sortFn\n * @param {HierarchicalFacet|Array} node node upon which we want to apply the sort\n * @param {string[]} names attribute names\n * @param {number} [level=0] current index in the names array\n */\nfunction recSort(sortFn, node, names, level) {\n level = level || 0;\n\n if (Array.isArray(node)) {\n return sortFn(node, names[level]);\n }\n\n if (!node.data || node.data.length === 0) {\n return node;\n }\n\n var children = node.data.map(function(childNode) {\n return recSort(sortFn, childNode, names, level + 1);\n });\n var sortedChildren = sortFn(children, names[level]);\n var newNode = defaultsPure({data: sortedChildren}, node);\n return newNode;\n}\n\nSearchResults.DEFAULT_SORT = ['isRefined:desc', 'count:desc', 'name:asc'];\n\nfunction vanillaSortFn(order, data) {\n return data.sort(order);\n}\n\n/**\n * @typedef FacetOrdering\n * @type {Object}\n * @property {string[]} [order]\n * @property {'count' | 'alpha' | 'hidden'} [sortRemainingBy]\n */\n\n/**\n * Sorts facet arrays via their facet ordering\n * @param {Array} facetValues the values\n * @param {FacetOrdering} facetOrdering the ordering\n * @returns {Array}\n */\nfunction sortViaFacetOrdering(facetValues, facetOrdering) {\n var orderedFacets = [];\n var remainingFacets = [];\n\n var order = facetOrdering.order || [];\n /**\n * an object with the keys being the values in order, the values their index:\n * ['one', 'two'] -> { one: 0, two: 1 }\n */\n var reverseOrder = order.reduce(function(acc, name, i) {\n acc[name] = i;\n return acc;\n }, {});\n\n facetValues.forEach(function(item) {\n // hierarchical facets get sorted using their raw name\n var name = item.path || item.name;\n if (reverseOrder[name] !== undefined) {\n orderedFacets[reverseOrder[name]] = item;\n } else {\n remainingFacets.push(item);\n }\n });\n\n orderedFacets = orderedFacets.filter(function(facet) {\n return facet;\n });\n\n var sortRemainingBy = facetOrdering.sortRemainingBy;\n var ordering;\n if (sortRemainingBy === 'hidden') {\n return orderedFacets;\n } else if (sortRemainingBy === 'alpha') {\n ordering = [['path', 'name'], ['asc', 'asc']];\n } else {\n ordering = [['count'], ['desc']];\n }\n\n return orderedFacets.concat(\n orderBy(remainingFacets, ordering[0], ordering[1])\n );\n}\n\n/**\n * @param {SearchResults} results the search results class\n * @param {string} attribute the attribute to retrieve ordering of\n * @returns {FacetOrdering=}\n */\nfunction getFacetOrdering(results, attribute) {\n return (\n results.renderingContent &&\n results.renderingContent.facetOrdering &&\n results.renderingContent.facetOrdering.values &&\n results.renderingContent.facetOrdering.values[attribute]\n );\n}\n\n/**\n * Get a the list of values for a given facet attribute. Those values are sorted\n * refinement first, descending count (bigger value on top), and name ascending\n * (alphabetical order). The sort formula can overridden using either string based\n * predicates or a function.\n *\n * This method will return all the values returned by the Algolia engine plus all\n * the values already refined. This means that it can happen that the\n * `maxValuesPerFacet` [configuration](https://www.algolia.com/doc/rest-api/search#param-maxValuesPerFacet)\n * might not be respected if you have facet values that are already refined.\n * @param {string} attribute attribute name\n * @param {object} opts configuration options.\n * @param {boolean} [opts.facetOrdering]\n * Force the use of facetOrdering from the result if a sortBy is present. If\n * sortBy isn't present, facetOrdering will be used automatically.\n * @param {Array. | function} opts.sortBy\n * When using strings, it consists of\n * the name of the [FacetValue](#SearchResults.FacetValue) or the\n * [HierarchicalFacet](#SearchResults.HierarchicalFacet) attributes with the\n * order (`asc` or `desc`). For example to order the value by count, the\n * argument would be `['count:asc']`.\n *\n * If only the attribute name is specified, the ordering defaults to the one\n * specified in the default value for this attribute.\n *\n * When not specified, the order is\n * ascending. This parameter can also be a function which takes two facet\n * values and should return a number, 0 if equal, 1 if the first argument is\n * bigger or -1 otherwise.\n *\n * The default value for this attribute `['isRefined:desc', 'count:desc', 'name:asc']`\n * @return {FacetValue[]|HierarchicalFacet|undefined} depending on the type of facet of\n * the attribute requested (hierarchical, disjunctive or conjunctive)\n * @example\n * helper.on('result', function(event){\n * //get values ordered only by name ascending using the string predicate\n * event.results.getFacetValues('city', {sortBy: ['name:asc']});\n * //get values ordered only by count ascending using a function\n * event.results.getFacetValues('city', {\n * // this is equivalent to ['count:asc']\n * sortBy: function(a, b) {\n * if (a.count === b.count) return 0;\n * if (a.count > b.count) return 1;\n * if (b.count > a.count) return -1;\n * }\n * });\n * });\n */\nSearchResults.prototype.getFacetValues = function(attribute, opts) {\n var facetValues = extractNormalizedFacetValues(this, attribute);\n if (!facetValues) {\n return undefined;\n }\n\n var options = defaultsPure({}, opts, {\n sortBy: SearchResults.DEFAULT_SORT,\n // if no sortBy is given, attempt to sort based on facetOrdering\n // if it is given, we still allow to sort via facet ordering first\n facetOrdering: !(opts && opts.sortBy)\n });\n\n var results = this;\n var attributes;\n if (Array.isArray(facetValues)) {\n attributes = [attribute];\n } else {\n var config = results._state.getHierarchicalFacetByName(facetValues.name);\n attributes = config.attributes;\n }\n\n return recSort(function(data, facetName) {\n if (options.facetOrdering) {\n var facetOrdering = getFacetOrdering(results, facetName);\n if (Boolean(facetOrdering)) {\n return sortViaFacetOrdering(data, facetOrdering);\n }\n }\n\n if (Array.isArray(options.sortBy)) {\n var order = formatSort(options.sortBy, SearchResults.DEFAULT_SORT);\n return orderBy(data, order[0], order[1]);\n } else if (typeof options.sortBy === 'function') {\n return vanillaSortFn(options.sortBy, data);\n }\n throw new Error(\n 'options.sortBy is optional but if defined it must be ' +\n 'either an array of string (predicates) or a sorting function'\n );\n }, facetValues, attributes);\n};\n\n/**\n * Returns the facet stats if attribute is defined and the facet contains some.\n * Otherwise returns undefined.\n * @param {string} attribute name of the faceted attribute\n * @return {object} The stats of the facet\n */\nSearchResults.prototype.getFacetStats = function(attribute) {\n if (this._state.isConjunctiveFacet(attribute)) {\n return getFacetStatsIfAvailable(this.facets, attribute);\n } else if (this._state.isDisjunctiveFacet(attribute)) {\n return getFacetStatsIfAvailable(this.disjunctiveFacets, attribute);\n }\n\n return undefined;\n};\n\n/**\n * @typedef {Object} FacetListItem\n * @property {string} name\n */\n\n/**\n * @param {FacetListItem[]} facetList (has more items, but enough for here)\n * @param {string} facetName\n */\nfunction getFacetStatsIfAvailable(facetList, facetName) {\n var data = find(facetList, function(facet) {\n return facet.name === facetName;\n });\n return data && data.stats;\n}\n\n/**\n * Returns all refinements for all filters + tags. It also provides\n * additional information: count and exhaustiveness for each filter.\n *\n * See the [refinement type](#Refinement) for an exhaustive view of the available\n * data.\n *\n * Note that for a numeric refinement, results are grouped per operator, this\n * means that it will return responses for operators which are empty.\n *\n * @return {Array.} all the refinements\n */\nSearchResults.prototype.getRefinements = function() {\n var state = this._state;\n var results = this;\n var res = [];\n\n Object.keys(state.facetsRefinements).forEach(function(attributeName) {\n state.facetsRefinements[attributeName].forEach(function(name) {\n res.push(getRefinement(state, 'facet', attributeName, name, results.facets));\n });\n });\n\n Object.keys(state.facetsExcludes).forEach(function(attributeName) {\n state.facetsExcludes[attributeName].forEach(function(name) {\n res.push(getRefinement(state, 'exclude', attributeName, name, results.facets));\n });\n });\n\n Object.keys(state.disjunctiveFacetsRefinements).forEach(function(attributeName) {\n state.disjunctiveFacetsRefinements[attributeName].forEach(function(name) {\n res.push(getRefinement(state, 'disjunctive', attributeName, name, results.disjunctiveFacets));\n });\n });\n\n Object.keys(state.hierarchicalFacetsRefinements).forEach(function(attributeName) {\n state.hierarchicalFacetsRefinements[attributeName].forEach(function(name) {\n res.push(getHierarchicalRefinement(state, attributeName, name, results.hierarchicalFacets));\n });\n });\n\n\n Object.keys(state.numericRefinements).forEach(function(attributeName) {\n var operators = state.numericRefinements[attributeName];\n Object.keys(operators).forEach(function(operator) {\n operators[operator].forEach(function(value) {\n res.push({\n type: 'numeric',\n attributeName: attributeName,\n name: value,\n numericValue: value,\n operator: operator\n });\n });\n });\n });\n\n state.tagRefinements.forEach(function(name) {\n res.push({type: 'tag', attributeName: '_tags', name: name});\n });\n\n return res;\n};\n\n/**\n * @typedef {Object} Facet\n * @property {string} name\n * @property {Object} data\n * @property {boolean} exhaustive\n */\n\n/**\n * @param {*} state\n * @param {*} type\n * @param {string} attributeName\n * @param {*} name\n * @param {Facet[]} resultsFacets\n */\nfunction getRefinement(state, type, attributeName, name, resultsFacets) {\n var facet = find(resultsFacets, function(f) {\n return f.name === attributeName;\n });\n var count = facet && facet.data && facet.data[name] ? facet.data[name] : 0;\n var exhaustive = (facet && facet.exhaustive) || false;\n\n return {\n type: type,\n attributeName: attributeName,\n name: name,\n count: count,\n exhaustive: exhaustive\n };\n}\n\n/**\n * @param {*} state\n * @param {string} attributeName\n * @param {*} name\n * @param {Facet[]} resultsFacets\n */\nfunction getHierarchicalRefinement(state, attributeName, name, resultsFacets) {\n var facetDeclaration = state.getHierarchicalFacetByName(attributeName);\n var separator = state._getHierarchicalFacetSeparator(facetDeclaration);\n var split = name.split(separator);\n var rootFacet = find(resultsFacets, function(facet) {\n return facet.name === attributeName;\n });\n\n var facet = split.reduce(function(intermediateFacet, part) {\n var newFacet =\n intermediateFacet && find(intermediateFacet.data, function(f) {\n return f.name === part;\n });\n return newFacet !== undefined ? newFacet : intermediateFacet;\n }, rootFacet);\n\n var count = (facet && facet.count) || 0;\n var exhaustive = (facet && facet.exhaustive) || false;\n var path = (facet && facet.path) || '';\n\n return {\n type: 'hierarchical',\n attributeName: attributeName,\n name: path,\n count: count,\n exhaustive: exhaustive\n };\n}\n\nmodule.exports = SearchResults;\n","'use strict';\n\nvar SearchParameters = require('./SearchParameters');\nvar SearchResults = require('./SearchResults');\nvar DerivedHelper = require('./DerivedHelper');\nvar requestBuilder = require('./requestBuilder');\n\nvar EventEmitter = require('@algolia/events');\nvar inherits = require('./functions/inherits');\nvar objectHasKeys = require('./functions/objectHasKeys');\nvar omit = require('./functions/omit');\nvar merge = require('./functions/merge');\n\nvar version = require('./version');\nvar escapeFacetValue = require('./functions/escapeFacetValue').escapeFacetValue;\n\n/**\n * Event triggered when a parameter is set or updated\n * @event AlgoliaSearchHelper#event:change\n * @property {object} event\n * @property {SearchParameters} event.state the current parameters with the latest changes applied\n * @property {SearchResults} event.results the previous results received from Algolia. `null` before the first request\n * @example\n * helper.on('change', function(event) {\n * console.log('The parameters have changed');\n * });\n */\n\n/**\n * Event triggered when a main search is sent to Algolia\n * @event AlgoliaSearchHelper#event:search\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search\n * @property {SearchResults} event.results the results from the previous search. `null` if it is the first search.\n * @example\n * helper.on('search', function(event) {\n * console.log('Search sent');\n * });\n */\n\n/**\n * Event triggered when a search using `searchForFacetValues` is sent to Algolia\n * @event AlgoliaSearchHelper#event:searchForFacetValues\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search it is the first search.\n * @property {string} event.facet the facet searched into\n * @property {string} event.query the query used to search in the facets\n * @example\n * helper.on('searchForFacetValues', function(event) {\n * console.log('searchForFacetValues sent');\n * });\n */\n\n/**\n * Event triggered when a search using `searchOnce` is sent to Algolia\n * @event AlgoliaSearchHelper#event:searchOnce\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search it is the first search.\n * @example\n * helper.on('searchOnce', function(event) {\n * console.log('searchOnce sent');\n * });\n */\n\n/**\n * Event triggered when the results are retrieved from Algolia\n * @event AlgoliaSearchHelper#event:result\n * @property {object} event\n * @property {SearchResults} event.results the results received from Algolia\n * @property {SearchParameters} event.state the parameters used to query Algolia. Those might be different from the one in the helper instance (for example if the network is unreliable).\n * @example\n * helper.on('result', function(event) {\n * console.log('Search results received');\n * });\n */\n\n/**\n * Event triggered when Algolia sends back an error. For example, if an unknown parameter is\n * used, the error can be caught using this event.\n * @event AlgoliaSearchHelper#event:error\n * @property {object} event\n * @property {Error} event.error the error returned by the Algolia.\n * @example\n * helper.on('error', function(event) {\n * console.log('Houston we got a problem.');\n * });\n */\n\n/**\n * Event triggered when the queue of queries have been depleted (with any result or outdated queries)\n * @event AlgoliaSearchHelper#event:searchQueueEmpty\n * @example\n * helper.on('searchQueueEmpty', function() {\n * console.log('No more search pending');\n * // This is received before the result event if we're not expecting new results\n * });\n *\n * helper.search();\n */\n\n/**\n * Initialize a new AlgoliaSearchHelper\n * @class\n * @classdesc The AlgoliaSearchHelper is a class that ease the management of the\n * search. It provides an event based interface for search callbacks:\n * - change: when the internal search state is changed.\n * This event contains a {@link SearchParameters} object and the\n * {@link SearchResults} of the last result if any.\n * - search: when a search is triggered using the `search()` method.\n * - result: when the response is retrieved from Algolia and is processed.\n * This event contains a {@link SearchResults} object and the\n * {@link SearchParameters} corresponding to this answer.\n * - error: when the response is an error. This event contains the error returned by the server.\n * @param {AlgoliaSearch} client an AlgoliaSearch client\n * @param {string} index the index name to query\n * @param {SearchParameters | object} options an object defining the initial\n * config of the search. It doesn't have to be a {SearchParameters},\n * just an object containing the properties you need from it.\n */\nfunction AlgoliaSearchHelper(client, index, options) {\n if (typeof client.addAlgoliaAgent === 'function') {\n client.addAlgoliaAgent('JS Helper (' + version + ')');\n }\n\n this.setClient(client);\n var opts = options || {};\n opts.index = index;\n this.state = SearchParameters.make(opts);\n this.lastResults = null;\n this._queryId = 0;\n this._lastQueryIdReceived = -1;\n this.derivedHelpers = [];\n this._currentNbQueries = 0;\n}\n\ninherits(AlgoliaSearchHelper, EventEmitter);\n\n/**\n * Start the search with the parameters set in the state. When the\n * method is called, it triggers a `search` event. The results will\n * be available through the `result` event. If an error occurs, an\n * `error` will be fired instead.\n * @return {AlgoliaSearchHelper}\n * @fires search\n * @fires result\n * @fires error\n * @chainable\n */\nAlgoliaSearchHelper.prototype.search = function() {\n this._search({onlyWithDerivedHelpers: false});\n return this;\n};\n\nAlgoliaSearchHelper.prototype.searchOnlyWithDerivedHelpers = function() {\n this._search({onlyWithDerivedHelpers: true});\n return this;\n};\n\n/**\n * Gets the search query parameters that would be sent to the Algolia Client\n * for the hits\n * @return {object} Query Parameters\n */\nAlgoliaSearchHelper.prototype.getQuery = function() {\n var state = this.state;\n return requestBuilder._getHitsSearchParams(state);\n};\n\n/**\n * Start a search using a modified version of the current state. This method does\n * not trigger the helper lifecycle and does not modify the state kept internally\n * by the helper. This second aspect means that the next search call will be the\n * same as a search call before calling searchOnce.\n * @param {object} options can contain all the parameters that can be set to SearchParameters\n * plus the index\n * @param {function} [callback] optional callback executed when the response from the\n * server is back.\n * @return {promise|undefined} if a callback is passed the method returns undefined\n * otherwise it returns a promise containing an object with two keys :\n * - content with a SearchResults\n * - state with the state used for the query as a SearchParameters\n * @example\n * // Changing the number of records returned per page to 1\n * // This example uses the callback API\n * var state = helper.searchOnce({hitsPerPage: 1},\n * function(error, content, state) {\n * // if an error occurred it will be passed in error, otherwise its value is null\n * // content contains the results formatted as a SearchResults\n * // state is the instance of SearchParameters used for this search\n * });\n * @example\n * // Changing the number of records returned per page to 1\n * // This example uses the promise API\n * var state1 = helper.searchOnce({hitsPerPage: 1})\n * .then(promiseHandler);\n *\n * function promiseHandler(res) {\n * // res contains\n * // {\n * // content : SearchResults\n * // state : SearchParameters (the one used for this specific search)\n * // }\n * }\n */\nAlgoliaSearchHelper.prototype.searchOnce = function(options, cb) {\n var tempState = !options ? this.state : this.state.setQueryParameters(options);\n var queries = requestBuilder._getQueries(tempState.index, tempState);\n var self = this;\n\n this._currentNbQueries++;\n\n this.emit('searchOnce', {\n state: tempState\n });\n\n if (cb) {\n this.client\n .search(queries)\n .then(function(content) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) {\n self.emit('searchQueueEmpty');\n }\n\n cb(null, new SearchResults(tempState, content.results), tempState);\n })\n .catch(function(err) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) {\n self.emit('searchQueueEmpty');\n }\n\n cb(err, null, tempState);\n });\n\n return undefined;\n }\n\n return this.client.search(queries).then(function(content) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n return {\n content: new SearchResults(tempState, content.results),\n state: tempState,\n _originalResponse: content\n };\n }, function(e) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n throw e;\n });\n};\n\n /**\n * Start the search for answers with the parameters set in the state.\n * This method returns a promise.\n * @param {Object} options - the options for answers API call\n * @param {string[]} options.attributesForPrediction - Attributes to use for predictions. If empty, `searchableAttributes` is used instead.\n * @param {string[]} options.queryLanguages - The languages in the query. Currently only supports ['en'].\n * @param {number} options.nbHits - Maximum number of answers to retrieve from the Answers Engine. Cannot be greater than 1000.\n *\n * @return {promise} the answer results\n * @deprecated answers is deprecated and will be replaced with new initiatives\n */\nAlgoliaSearchHelper.prototype.findAnswers = function(options) {\n console.warn('[algoliasearch-helper] answers is no longer supported');\n var state = this.state;\n var derivedHelper = this.derivedHelpers[0];\n if (!derivedHelper) {\n return Promise.resolve([]);\n }\n var derivedState = derivedHelper.getModifiedState(state);\n var data = merge(\n {\n attributesForPrediction: options.attributesForPrediction,\n nbHits: options.nbHits\n },\n {\n params: omit(requestBuilder._getHitsSearchParams(derivedState), [\n 'attributesToSnippet',\n 'hitsPerPage',\n 'restrictSearchableAttributes',\n 'snippetEllipsisText' // FIXME remove this line once the engine is fixed.\n ])\n }\n );\n\n var errorMessage = 'search for answers was called, but this client does not have a function client.initIndex(index).findAnswers';\n if (typeof this.client.initIndex !== 'function') {\n throw new Error(errorMessage);\n }\n var index = this.client.initIndex(derivedState.index);\n if (typeof index.findAnswers !== 'function') {\n throw new Error(errorMessage);\n }\n return index.findAnswers(derivedState.query, options.queryLanguages, data);\n};\n\n/**\n * Structure of each result when using\n * [`searchForFacetValues()`](reference.html#AlgoliaSearchHelper#searchForFacetValues)\n * @typedef FacetSearchHit\n * @type {object}\n * @property {string} value the facet value\n * @property {string} highlighted the facet value highlighted with the query string\n * @property {number} count number of occurrence of this facet value\n * @property {boolean} isRefined true if the value is already refined\n */\n\n/**\n * Structure of the data resolved by the\n * [`searchForFacetValues()`](reference.html#AlgoliaSearchHelper#searchForFacetValues)\n * promise.\n * @typedef FacetSearchResult\n * @type {object}\n * @property {FacetSearchHit} facetHits the results for this search for facet values\n * @property {number} processingTimeMS time taken by the query inside the engine\n */\n\n/**\n * Search for facet values based on an query and the name of a faceted attribute. This\n * triggers a search and will return a promise. On top of using the query, it also sends\n * the parameters from the state so that the search is narrowed down to only the possible values.\n *\n * See the description of [FacetSearchResult](reference.html#FacetSearchResult)\n * @param {string} facet the name of the faceted attribute\n * @param {string} query the string query for the search\n * @param {number} [maxFacetHits] the maximum number values returned. Should be > 0 and <= 100\n * @param {object} [userState] the set of custom parameters to use on top of the current state. Setting a property to `undefined` removes\n * it in the generated query.\n * @return {promise.} the results of the search\n */\nAlgoliaSearchHelper.prototype.searchForFacetValues = function(facet, query, maxFacetHits, userState) {\n var clientHasSFFV = typeof this.client.searchForFacetValues === 'function';\n var clientHasInitIndex = typeof this.client.initIndex === 'function';\n if (\n !clientHasSFFV &&\n !clientHasInitIndex &&\n typeof this.client.search !== 'function'\n ) {\n throw new Error(\n 'search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues'\n );\n }\n\n var state = this.state.setQueryParameters(userState || {});\n var isDisjunctive = state.isDisjunctiveFacet(facet);\n var algoliaQuery = requestBuilder.getSearchForFacetQuery(facet, query, maxFacetHits, state);\n\n this._currentNbQueries++;\n var self = this;\n var searchForFacetValuesPromise;\n // newer algoliasearch ^3.27.1 - ~4.0.0\n if (clientHasSFFV) {\n searchForFacetValuesPromise = this.client.searchForFacetValues([\n {indexName: state.index, params: algoliaQuery}\n ]);\n // algoliasearch < 3.27.1\n } else if (clientHasInitIndex) {\n searchForFacetValuesPromise = this.client\n .initIndex(state.index)\n .searchForFacetValues(algoliaQuery);\n // algoliasearch ~5.0.0\n } else {\n // @MAJOR only use client.search\n delete algoliaQuery.facetName;\n searchForFacetValuesPromise = this.client\n .search([\n {\n type: 'facet',\n facet: facet,\n indexName: state.index,\n params: algoliaQuery\n }\n ])\n .then(function processResponse(response) {\n return response.results[0];\n });\n }\n\n this.emit('searchForFacetValues', {\n state: state,\n facet: facet,\n query: query\n });\n\n return searchForFacetValuesPromise.then(function addIsRefined(content) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n\n content = Array.isArray(content) ? content[0] : content;\n\n content.facetHits.forEach(function(f) {\n f.escapedValue = escapeFacetValue(f.value);\n f.isRefined = isDisjunctive\n ? state.isDisjunctiveFacetRefined(facet, f.escapedValue)\n : state.isFacetRefined(facet, f.escapedValue);\n });\n\n return content;\n }, function(e) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n throw e;\n });\n};\n\n/**\n * Sets the text query used for the search.\n *\n * This method resets the current page to 0.\n * @param {string} q the user query\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setQuery = function(q) {\n this._change({\n state: this.state.resetPage().setQuery(q),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Remove all the types of refinements except tags. A string can be provided to remove\n * only the refinements of a specific attribute. For more advanced use case, you can\n * provide a function instead. This function should follow the\n * [clearCallback definition](#SearchParameters.clearCallback).\n *\n * This method resets the current page to 0.\n * @param {string} [name] optional name of the facet / attribute on which we want to remove all refinements\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n * @example\n * // Removing all the refinements\n * helper.clearRefinements().search();\n * @example\n * // Removing all the filters on a the category attribute.\n * helper.clearRefinements('category').search();\n * @example\n * // Removing only the exclude filters on the category facet.\n * helper.clearRefinements(function(value, attribute, type) {\n * return type === 'exclude' && attribute === 'category';\n * }).search();\n */\nAlgoliaSearchHelper.prototype.clearRefinements = function(name) {\n this._change({\n state: this.state.resetPage().clearRefinements(name),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Remove all the tag filters.\n *\n * This method resets the current page to 0.\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.clearTags = function() {\n this._change({\n state: this.state.resetPage().clearTags(),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Adds a disjunctive filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addDisjunctiveFacetRefinement = function(facet, value) {\n this._change({\n state: this.state.resetPage().addDisjunctiveFacetRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addDisjunctiveFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.addDisjunctiveRefine = function() {\n return this.addDisjunctiveFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Adds a refinement on a hierarchical facet. It will throw\n * an exception if the facet is not defined or if the facet\n * is already refined.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet name\n * @param {string} path the hierarchical facet path\n * @return {AlgoliaSearchHelper}\n * @throws Error if the facet is not defined or if the facet is refined\n * @chainable\n * @fires change\n */\nAlgoliaSearchHelper.prototype.addHierarchicalFacetRefinement = function(facet, value) {\n this._change({\n state: this.state.resetPage().addHierarchicalFacetRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Adds a an numeric filter to an attribute with the `operator` and `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} attribute the attribute on which the numeric filter applies\n * @param {string} operator the operator of the filter\n * @param {number} value the value of the filter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addNumericRefinement = function(attribute, operator, value) {\n this._change({\n state: this.state.resetPage().addNumericRefinement(attribute, operator, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Adds a filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addFacetRefinement = function(facet, value) {\n this._change({\n state: this.state.resetPage().addFacetRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.addRefine = function() {\n return this.addFacetRefinement.apply(this, arguments);\n};\n\n\n/**\n * Adds a an exclusion filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addFacetExclusion = function(facet, value) {\n this._change({\n state: this.state.resetPage().addExcludeRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addFacetExclusion}\n */\nAlgoliaSearchHelper.prototype.addExclude = function() {\n return this.addFacetExclusion.apply(this, arguments);\n};\n\n/**\n * Adds a tag filter with the `tag` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} tag the tag to add to the filter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addTag = function(tag) {\n this._change({\n state: this.state.resetPage().addTagRefinement(tag),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Removes an numeric filter to an attribute with the `operator` and `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * Some parameters are optional, triggering different behavior:\n * - if the value is not provided, then all the numeric value will be removed for the\n * specified attribute/operator couple.\n * - if the operator is not provided either, then all the numeric filter on this attribute\n * will be removed.\n *\n * This method resets the current page to 0.\n * @param {string} attribute the attribute on which the numeric filter applies\n * @param {string} [operator] the operator of the filter\n * @param {number} [value] the value of the filter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeNumericRefinement = function(attribute, operator, value) {\n this._change({\n state: this.state.resetPage().removeNumericRefinement(attribute, operator, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Removes a disjunctive filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} [value] the associated value\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeDisjunctiveFacetRefinement = function(facet, value) {\n this._change({\n state: this.state.resetPage().removeDisjunctiveFacetRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeDisjunctiveFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.removeDisjunctiveRefine = function() {\n return this.removeDisjunctiveFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Removes the refinement set on a hierarchical facet.\n * @param {string} facet the facet name\n * @return {AlgoliaSearchHelper}\n * @throws Error if the facet is not defined or if the facet is not refined\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeHierarchicalFacetRefinement = function(facet) {\n this._change({\n state: this.state.resetPage().removeHierarchicalFacetRefinement(facet),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Removes a filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} [value] the associated value\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeFacetRefinement = function(facet, value) {\n this._change({\n state: this.state.resetPage().removeFacetRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.removeRefine = function() {\n return this.removeFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Removes an exclusion filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} [value] the associated value\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeFacetExclusion = function(facet, value) {\n this._change({\n state: this.state.resetPage().removeExcludeRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeFacetExclusion}\n */\nAlgoliaSearchHelper.prototype.removeExclude = function() {\n return this.removeFacetExclusion.apply(this, arguments);\n};\n\n/**\n * Removes a tag filter with the `tag` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} tag tag to remove from the filter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeTag = function(tag) {\n this._change({\n state: this.state.resetPage().removeTagRefinement(tag),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Adds or removes an exclusion filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.toggleFacetExclusion = function(facet, value) {\n this._change({\n state: this.state.resetPage().toggleExcludeFacetRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#toggleFacetExclusion}\n */\nAlgoliaSearchHelper.prototype.toggleExclude = function() {\n return this.toggleFacetExclusion.apply(this, arguments);\n};\n\n/**\n * Adds or removes a filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method can be used for conjunctive, disjunctive and hierarchical filters.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value\n * @return {AlgoliaSearchHelper}\n * @throws Error will throw an error if the facet is not declared in the settings of the helper\n * @fires change\n * @chainable\n * @deprecated since version 2.19.0, see {@link AlgoliaSearchHelper#toggleFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.toggleRefinement = function(facet, value) {\n return this.toggleFacetRefinement(facet, value);\n};\n\n/**\n * Adds or removes a filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method can be used for conjunctive, disjunctive and hierarchical filters.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value\n * @return {AlgoliaSearchHelper}\n * @throws Error will throw an error if the facet is not declared in the settings of the helper\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.toggleFacetRefinement = function(facet, value) {\n this._change({\n state: this.state.resetPage().toggleFacetRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#toggleFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.toggleRefine = function() {\n return this.toggleFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Adds or removes a tag filter with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method resets the current page to 0.\n * @param {string} tag tag to remove or add\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.toggleTag = function(tag) {\n this._change({\n state: this.state.resetPage().toggleTagRefinement(tag),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Increments the page number by one.\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n * @example\n * helper.setPage(0).nextPage().getPage();\n * // returns 1\n */\nAlgoliaSearchHelper.prototype.nextPage = function() {\n var page = this.state.page || 0;\n return this.setPage(page + 1);\n};\n\n/**\n * Decrements the page number by one.\n * @fires change\n * @return {AlgoliaSearchHelper}\n * @chainable\n * @example\n * helper.setPage(1).previousPage().getPage();\n * // returns 0\n */\nAlgoliaSearchHelper.prototype.previousPage = function() {\n var page = this.state.page || 0;\n return this.setPage(page - 1);\n};\n\n/**\n * @private\n */\nfunction setCurrentPage(page) {\n if (page < 0) throw new Error('Page requested below 0.');\n\n this._change({\n state: this.state.setPage(page),\n isPageReset: false\n });\n\n return this;\n}\n\n/**\n * Change the current page\n * @deprecated\n * @param {number} page The page number\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setCurrentPage = setCurrentPage;\n\n/**\n * Updates the current page.\n * @function\n * @param {number} page The page number\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setPage = setCurrentPage;\n\n/**\n * Updates the name of the index that will be targeted by the query.\n *\n * This method resets the current page to 0.\n * @param {string} name the index name\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setIndex = function(name) {\n this._change({\n state: this.state.resetPage().setIndex(name),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Update a parameter of the search. This method reset the page\n *\n * The complete list of parameters is available on the\n * [Algolia website](https://www.algolia.com/doc/rest#query-an-index).\n * The most commonly used parameters have their own [shortcuts](#query-parameters-shortcuts)\n * or benefit from higher-level APIs (all the kind of filters and facets have their own API)\n *\n * This method resets the current page to 0.\n * @param {string} parameter name of the parameter to update\n * @param {any} value new value of the parameter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n * @example\n * helper.setQueryParameter('hitsPerPage', 20).search();\n */\nAlgoliaSearchHelper.prototype.setQueryParameter = function(parameter, value) {\n this._change({\n state: this.state.resetPage().setQueryParameter(parameter, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Set the whole state (warning: will erase previous state)\n * @param {SearchParameters} newState the whole new state\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setState = function(newState) {\n this._change({\n state: SearchParameters.make(newState),\n isPageReset: false\n });\n\n return this;\n};\n\n/**\n * Override the current state without triggering a change event.\n * Do not use this method unless you know what you are doing. (see the example\n * for a legit use case)\n * @param {SearchParameters} newState the whole new state\n * @return {AlgoliaSearchHelper}\n * @example\n * helper.on('change', function(state){\n * // In this function you might want to find a way to store the state in the url/history\n * updateYourURL(state)\n * })\n * window.onpopstate = function(event){\n * // This is naive though as you should check if the state is really defined etc.\n * helper.overrideStateWithoutTriggeringChangeEvent(event.state).search()\n * }\n * @chainable\n */\nAlgoliaSearchHelper.prototype.overrideStateWithoutTriggeringChangeEvent = function(newState) {\n this.state = new SearchParameters(newState);\n return this;\n};\n\n/**\n * Check if an attribute has any numeric, conjunctive, disjunctive or hierarchical filters.\n * @param {string} attribute the name of the attribute\n * @return {boolean} true if the attribute is filtered by at least one value\n * @example\n * // hasRefinements works with numeric, conjunctive, disjunctive and hierarchical filters\n * helper.hasRefinements('price'); // false\n * helper.addNumericRefinement('price', '>', 100);\n * helper.hasRefinements('price'); // true\n *\n * helper.hasRefinements('color'); // false\n * helper.addFacetRefinement('color', 'blue');\n * helper.hasRefinements('color'); // true\n *\n * helper.hasRefinements('material'); // false\n * helper.addDisjunctiveFacetRefinement('material', 'plastic');\n * helper.hasRefinements('material'); // true\n *\n * helper.hasRefinements('categories'); // false\n * helper.toggleFacetRefinement('categories', 'kitchen > knife');\n * helper.hasRefinements('categories'); // true\n *\n */\nAlgoliaSearchHelper.prototype.hasRefinements = function(attribute) {\n if (objectHasKeys(this.state.getNumericRefinements(attribute))) {\n return true;\n } else if (this.state.isConjunctiveFacet(attribute)) {\n return this.state.isFacetRefined(attribute);\n } else if (this.state.isDisjunctiveFacet(attribute)) {\n return this.state.isDisjunctiveFacetRefined(attribute);\n } else if (this.state.isHierarchicalFacet(attribute)) {\n return this.state.isHierarchicalFacetRefined(attribute);\n }\n\n // there's currently no way to know that the user did call `addNumericRefinement` at some point\n // thus we cannot distinguish if there once was a numeric refinement that was cleared\n // so we will return false in every other situations to be consistent\n // while what we should do here is throw because we did not find the attribute in any type\n // of refinement\n return false;\n};\n\n/**\n * Check if a value is excluded for a specific faceted attribute. If the value\n * is omitted then the function checks if there is any excluding refinements.\n *\n * @param {string} facet name of the attribute for used for faceting\n * @param {string} [value] optional value. If passed will test that this value\n * is filtering the given facet.\n * @return {boolean} true if refined\n * @example\n * helper.isExcludeRefined('color'); // false\n * helper.isExcludeRefined('color', 'blue') // false\n * helper.isExcludeRefined('color', 'red') // false\n *\n * helper.addFacetExclusion('color', 'red');\n *\n * helper.isExcludeRefined('color'); // true\n * helper.isExcludeRefined('color', 'blue') // false\n * helper.isExcludeRefined('color', 'red') // true\n */\nAlgoliaSearchHelper.prototype.isExcluded = function(facet, value) {\n return this.state.isExcludeRefined(facet, value);\n};\n\n/**\n * @deprecated since 2.4.0, see {@link AlgoliaSearchHelper#hasRefinements}\n */\nAlgoliaSearchHelper.prototype.isDisjunctiveRefined = function(facet, value) {\n return this.state.isDisjunctiveFacetRefined(facet, value);\n};\n\n/**\n * Check if the string is a currently filtering tag.\n * @param {string} tag tag to check\n * @return {boolean}\n */\nAlgoliaSearchHelper.prototype.hasTag = function(tag) {\n return this.state.isTagRefined(tag);\n};\n\n/**\n * @deprecated since 2.4.0, see {@link AlgoliaSearchHelper#hasTag}\n */\nAlgoliaSearchHelper.prototype.isTagRefined = function() {\n return this.hasTagRefinements.apply(this, arguments);\n};\n\n\n/**\n * Get the name of the currently used index.\n * @return {string}\n * @example\n * helper.setIndex('highestPrice_products').getIndex();\n * // returns 'highestPrice_products'\n */\nAlgoliaSearchHelper.prototype.getIndex = function() {\n return this.state.index;\n};\n\nfunction getCurrentPage() {\n return this.state.page;\n}\n\n/**\n * Get the currently selected page\n * @deprecated\n * @return {number} the current page\n */\nAlgoliaSearchHelper.prototype.getCurrentPage = getCurrentPage;\n/**\n * Get the currently selected page\n * @function\n * @return {number} the current page\n */\nAlgoliaSearchHelper.prototype.getPage = getCurrentPage;\n\n/**\n * Get all the tags currently set to filters the results.\n *\n * @return {string[]} The list of tags currently set.\n */\nAlgoliaSearchHelper.prototype.getTags = function() {\n return this.state.tagRefinements;\n};\n\n/**\n * Get the list of refinements for a given attribute. This method works with\n * conjunctive, disjunctive, excluding and numerical filters.\n *\n * See also SearchResults#getRefinements\n *\n * @param {string} facetName attribute name used for faceting\n * @return {Array.} All Refinement are objects that contain a value, and\n * a type. Numeric also contains an operator.\n * @example\n * helper.addNumericRefinement('price', '>', 100);\n * helper.getRefinements('price');\n * // [\n * // {\n * // \"value\": [\n * // 100\n * // ],\n * // \"operator\": \">\",\n * // \"type\": \"numeric\"\n * // }\n * // ]\n * @example\n * helper.addFacetRefinement('color', 'blue');\n * helper.addFacetExclusion('color', 'red');\n * helper.getRefinements('color');\n * // [\n * // {\n * // \"value\": \"blue\",\n * // \"type\": \"conjunctive\"\n * // },\n * // {\n * // \"value\": \"red\",\n * // \"type\": \"exclude\"\n * // }\n * // ]\n * @example\n * helper.addDisjunctiveFacetRefinement('material', 'plastic');\n * // [\n * // {\n * // \"value\": \"plastic\",\n * // \"type\": \"disjunctive\"\n * // }\n * // ]\n */\nAlgoliaSearchHelper.prototype.getRefinements = function(facetName) {\n var refinements = [];\n\n if (this.state.isConjunctiveFacet(facetName)) {\n var conjRefinements = this.state.getConjunctiveRefinements(facetName);\n\n conjRefinements.forEach(function(r) {\n refinements.push({\n value: r,\n type: 'conjunctive'\n });\n });\n\n var excludeRefinements = this.state.getExcludeRefinements(facetName);\n\n excludeRefinements.forEach(function(r) {\n refinements.push({\n value: r,\n type: 'exclude'\n });\n });\n } else if (this.state.isDisjunctiveFacet(facetName)) {\n var disjRefinements = this.state.getDisjunctiveRefinements(facetName);\n\n disjRefinements.forEach(function(r) {\n refinements.push({\n value: r,\n type: 'disjunctive'\n });\n });\n }\n\n var numericRefinements = this.state.getNumericRefinements(facetName);\n\n Object.keys(numericRefinements).forEach(function(operator) {\n var value = numericRefinements[operator];\n\n refinements.push({\n value: value,\n operator: operator,\n type: 'numeric'\n });\n });\n\n return refinements;\n};\n\n/**\n * Return the current refinement for the (attribute, operator)\n * @param {string} attribute attribute in the record\n * @param {string} operator operator applied on the refined values\n * @return {Array.} refined values\n */\nAlgoliaSearchHelper.prototype.getNumericRefinement = function(attribute, operator) {\n return this.state.getNumericRefinement(attribute, operator);\n};\n\n/**\n * Get the current breadcrumb for a hierarchical facet, as an array\n * @param {string} facetName Hierarchical facet name\n * @return {array.} the path as an array of string\n */\nAlgoliaSearchHelper.prototype.getHierarchicalFacetBreadcrumb = function(facetName) {\n return this.state.getHierarchicalFacetBreadcrumb(facetName);\n};\n\n// /////////// PRIVATE\n\n/**\n * Perform the underlying queries\n * @private\n * @return {undefined}\n * @fires search\n * @fires result\n * @fires error\n */\nAlgoliaSearchHelper.prototype._search = function(options) {\n var state = this.state;\n var states = [];\n var mainQueries = [];\n\n if (!options.onlyWithDerivedHelpers) {\n mainQueries = requestBuilder._getQueries(state.index, state);\n\n states.push({\n state: state,\n queriesCount: mainQueries.length,\n helper: this\n });\n\n this.emit('search', {\n state: state,\n results: this.lastResults\n });\n }\n\n var derivedQueries = this.derivedHelpers.map(function(derivedHelper) {\n var derivedState = derivedHelper.getModifiedState(state);\n var derivedStateQueries = requestBuilder._getQueries(derivedState.index, derivedState);\n\n states.push({\n state: derivedState,\n queriesCount: derivedStateQueries.length,\n helper: derivedHelper\n });\n\n derivedHelper.emit('search', {\n state: derivedState,\n results: derivedHelper.lastResults\n });\n\n return derivedStateQueries;\n });\n\n var queries = Array.prototype.concat.apply(mainQueries, derivedQueries);\n var queryId = this._queryId++;\n\n this._currentNbQueries++;\n\n try {\n this.client.search(queries)\n .then(this._dispatchAlgoliaResponse.bind(this, states, queryId))\n .catch(this._dispatchAlgoliaError.bind(this, queryId));\n } catch (error) {\n // If we reach this part, we're in an internal error state\n this.emit('error', {\n error: error\n });\n }\n};\n\n/**\n * Transform the responses as sent by the server and transform them into a user\n * usable object that merge the results of all the batch requests. It will dispatch\n * over the different helper + derived helpers (when there are some).\n * @private\n * @param {array.<{SearchParameters, AlgoliaQueries, AlgoliaSearchHelper}>}\n * state state used for to generate the request\n * @param {number} queryId id of the current request\n * @param {object} content content of the response\n * @return {undefined}\n */\nAlgoliaSearchHelper.prototype._dispatchAlgoliaResponse = function(states, queryId, content) {\n // FIXME remove the number of outdated queries discarded instead of just one\n\n if (queryId < this._lastQueryIdReceived) {\n // Outdated answer\n return;\n }\n\n this._currentNbQueries -= (queryId - this._lastQueryIdReceived);\n this._lastQueryIdReceived = queryId;\n\n if (this._currentNbQueries === 0) this.emit('searchQueueEmpty');\n\n var results = content.results.slice();\n\n states.forEach(function(s) {\n var state = s.state;\n var queriesCount = s.queriesCount;\n var helper = s.helper;\n var specificResults = results.splice(0, queriesCount);\n\n var formattedResponse = helper.lastResults = new SearchResults(state, specificResults);\n\n helper.emit('result', {\n results: formattedResponse,\n state: state\n });\n });\n};\n\nAlgoliaSearchHelper.prototype._dispatchAlgoliaError = function(queryId, error) {\n if (queryId < this._lastQueryIdReceived) {\n // Outdated answer\n return;\n }\n\n this._currentNbQueries -= queryId - this._lastQueryIdReceived;\n this._lastQueryIdReceived = queryId;\n\n this.emit('error', {\n error: error\n });\n\n if (this._currentNbQueries === 0) this.emit('searchQueueEmpty');\n};\n\nAlgoliaSearchHelper.prototype.containsRefinement = function(query, facetFilters, numericFilters, tagFilters) {\n return query ||\n facetFilters.length !== 0 ||\n numericFilters.length !== 0 ||\n tagFilters.length !== 0;\n};\n\n/**\n * Test if there are some disjunctive refinements on the facet\n * @private\n * @param {string} facet the attribute to test\n * @return {boolean}\n */\nAlgoliaSearchHelper.prototype._hasDisjunctiveRefinements = function(facet) {\n return this.state.disjunctiveRefinements[facet] &&\n this.state.disjunctiveRefinements[facet].length > 0;\n};\n\nAlgoliaSearchHelper.prototype._change = function(event) {\n var state = event.state;\n var isPageReset = event.isPageReset;\n\n if (state !== this.state) {\n this.state = state;\n\n this.emit('change', {\n state: this.state,\n results: this.lastResults,\n isPageReset: isPageReset\n });\n }\n};\n\n/**\n * Clears the cache of the underlying Algolia client.\n * @return {AlgoliaSearchHelper}\n */\nAlgoliaSearchHelper.prototype.clearCache = function() {\n this.client.clearCache && this.client.clearCache();\n return this;\n};\n\n/**\n * Updates the internal client instance. If the reference of the clients\n * are equal then no update is actually done.\n * @param {AlgoliaSearch} newClient an AlgoliaSearch client\n * @return {AlgoliaSearchHelper}\n */\nAlgoliaSearchHelper.prototype.setClient = function(newClient) {\n if (this.client === newClient) return this;\n\n if (typeof newClient.addAlgoliaAgent === 'function') {\n newClient.addAlgoliaAgent('JS Helper (' + version + ')');\n }\n this.client = newClient;\n\n return this;\n};\n\n/**\n * Gets the instance of the currently used client.\n * @return {AlgoliaSearch}\n */\nAlgoliaSearchHelper.prototype.getClient = function() {\n return this.client;\n};\n\n/**\n * Creates an derived instance of the Helper. A derived helper\n * is a way to request other indices synchronised with the lifecycle\n * of the main Helper. This mechanism uses the multiqueries feature\n * of Algolia to aggregate all the requests in a single network call.\n *\n * This method takes a function that is used to create a new SearchParameter\n * that will be used to create requests to Algolia. Those new requests\n * are created just before the `search` event. The signature of the function\n * is `SearchParameters -> SearchParameters`.\n *\n * This method returns a new DerivedHelper which is an EventEmitter\n * that fires the same `search`, `result` and `error` events. Those\n * events, however, will receive data specific to this DerivedHelper\n * and the SearchParameters that is returned by the call of the\n * parameter function.\n * @param {function} fn SearchParameters -> SearchParameters\n * @return {DerivedHelper}\n */\nAlgoliaSearchHelper.prototype.derive = function(fn) {\n var derivedHelper = new DerivedHelper(this, fn);\n this.derivedHelpers.push(derivedHelper);\n return derivedHelper;\n};\n\n/**\n * This method detaches a derived Helper from the main one. Prefer using the one from the\n * derived helper itself, to remove the event listeners too.\n * @private\n * @return {undefined}\n * @throws Error\n */\nAlgoliaSearchHelper.prototype.detachDerivedHelper = function(derivedHelper) {\n var pos = this.derivedHelpers.indexOf(derivedHelper);\n if (pos === -1) throw new Error('Derived helper already detached');\n this.derivedHelpers.splice(pos, 1);\n};\n\n/**\n * This method returns true if there is currently at least one on-going search.\n * @return {boolean} true if there is a search pending\n */\nAlgoliaSearchHelper.prototype.hasPendingRequests = function() {\n return this._currentNbQueries > 0;\n};\n\n/**\n * @typedef AlgoliaSearchHelper.NumericRefinement\n * @type {object}\n * @property {number[]} value the numbers that are used for filtering this attribute with\n * the operator specified.\n * @property {string} operator the faceting data: value, number of entries\n * @property {string} type will be 'numeric'\n */\n\n/**\n * @typedef AlgoliaSearchHelper.FacetRefinement\n * @type {object}\n * @property {string} value the string use to filter the attribute\n * @property {string} type the type of filter: 'conjunctive', 'disjunctive', 'exclude'\n */\n\nmodule.exports = AlgoliaSearchHelper;\n","'use strict';\n\nmodule.exports = function compact(array) {\n if (!Array.isArray(array)) {\n return [];\n }\n\n return array.filter(Boolean);\n};\n","'use strict';\n\n// NOTE: this behaves like lodash/defaults, but doesn't mutate the target\n// it also preserve keys order\nmodule.exports = function defaultsPure() {\n var sources = Array.prototype.slice.call(arguments);\n\n return sources.reduceRight(function(acc, source) {\n Object.keys(Object(source)).forEach(function(key) {\n if (source[key] === undefined) {\n return;\n }\n if (acc[key] !== undefined) {\n // remove if already added, so that we can add it in correct order\n delete acc[key];\n }\n acc[key] = source[key];\n });\n return acc;\n }, {});\n};\n","'use strict';\n\n/**\n * Replaces a leading - with \\-\n * @private\n * @param {any} value the facet value to replace\n * @returns any\n */\nfunction escapeFacetValue(value) {\n if (typeof value !== 'string') return value;\n\n return String(value).replace(/^-/, '\\\\-');\n}\n\n/**\n * Replaces a leading \\- with -\n * @private\n * @param {any} value the escaped facet value\n * @returns any\n */\nfunction unescapeFacetValue(value) {\n if (typeof value !== 'string') return value;\n\n return value.replace(/^\\\\-/, '-');\n}\n\nmodule.exports = {\n escapeFacetValue: escapeFacetValue,\n unescapeFacetValue: unescapeFacetValue\n};\n","'use strict';\n\n// @MAJOR can be replaced by native Array#find when we change support\nmodule.exports = function find(array, comparator) {\n if (!Array.isArray(array)) {\n return undefined;\n }\n\n for (var i = 0; i < array.length; i++) {\n if (comparator(array[i])) {\n return array[i];\n }\n }\n};\n","'use strict';\n\n// @MAJOR can be replaced by native Array#findIndex when we change support\nmodule.exports = function find(array, comparator) {\n if (!Array.isArray(array)) {\n return -1;\n }\n\n for (var i = 0; i < array.length; i++) {\n if (comparator(array[i])) {\n return i;\n }\n }\n return -1;\n};\n","'use strict';\n\nvar find = require('./find');\n\n/**\n * Transform sort format from user friendly notation to lodash format\n * @param {string[]} sortBy array of predicate of the form \"attribute:order\"\n * @param {string[]} [defaults] array of predicate of the form \"attribute:order\"\n * @return {array.} array containing 2 elements : attributes, orders\n */\nmodule.exports = function formatSort(sortBy, defaults) {\n var defaultInstructions = (defaults || []).map(function(sort) {\n return sort.split(':');\n });\n\n return sortBy.reduce(\n function preparePredicate(out, sort) {\n var sortInstruction = sort.split(':');\n\n var matchingDefault = find(defaultInstructions, function(\n defaultInstruction\n ) {\n return defaultInstruction[0] === sortInstruction[0];\n });\n\n if (sortInstruction.length > 1 || !matchingDefault) {\n out[0].push(sortInstruction[0]);\n out[1].push(sortInstruction[1]);\n return out;\n }\n\n out[0].push(matchingDefault[0]);\n out[1].push(matchingDefault[1]);\n return out;\n },\n [[], []]\n );\n};\n","'use strict';\n\nfunction inherits(ctor, superCtor) {\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n}\n\nmodule.exports = inherits;\n","'use strict';\n\nfunction intersection(arr1, arr2) {\n return arr1.filter(function(value, index) {\n return (\n arr2.indexOf(value) > -1 &&\n arr1.indexOf(value) === index /* skips duplicates */\n );\n });\n}\n\nmodule.exports = intersection;\n","'use strict';\n\nfunction clone(value) {\n if (typeof value === 'object' && value !== null) {\n return _merge(Array.isArray(value) ? [] : {}, value);\n }\n return value;\n}\n\nfunction isObjectOrArrayOrFunction(value) {\n return (\n typeof value === 'function' ||\n Array.isArray(value) ||\n Object.prototype.toString.call(value) === '[object Object]'\n );\n}\n\nfunction _merge(target, source) {\n if (target === source) {\n return target;\n }\n\n for (var key in source) {\n if (\n !Object.prototype.hasOwnProperty.call(source, key) ||\n key === '__proto__' ||\n key === 'constructor'\n ) {\n continue;\n }\n\n var sourceVal = source[key];\n var targetVal = target[key];\n\n if (typeof targetVal !== 'undefined' && typeof sourceVal === 'undefined') {\n continue;\n }\n\n if (\n isObjectOrArrayOrFunction(targetVal) &&\n isObjectOrArrayOrFunction(sourceVal)\n ) {\n target[key] = _merge(targetVal, sourceVal);\n } else {\n target[key] = clone(sourceVal);\n }\n }\n return target;\n}\n\n/**\n * This method is like Object.assign, but recursively merges own and inherited\n * enumerable keyed properties of source objects into the destination object.\n *\n * NOTE: this behaves like lodash/merge, but:\n * - does mutate functions if they are a source\n * - treats non-plain objects as plain\n * - does not work for circular objects\n * - treats sparse arrays as sparse\n * - does not convert Array-like objects (Arguments, NodeLists, etc.) to arrays\n *\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n */\n\nfunction merge(target) {\n if (!isObjectOrArrayOrFunction(target)) {\n target = {};\n }\n\n for (var i = 1, l = arguments.length; i < l; i++) {\n var source = arguments[i];\n\n if (isObjectOrArrayOrFunction(source)) {\n _merge(target, source);\n }\n }\n return target;\n}\n\nmodule.exports = merge;\n","'use strict';\n\nfunction objectHasKeys(obj) {\n return obj && Object.keys(obj).length > 0;\n}\n\nmodule.exports = objectHasKeys;\n","'use strict';\n\n// https://github.com/babel/babel/blob/3aaafae053fa75febb3aa45d45b6f00646e30ba4/packages/babel-helpers/src/helpers.js#L604-L620\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source === null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key;\n var i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\n","'use strict';\n\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined;\n var valIsNull = value === null;\n\n var othIsDefined = other !== undefined;\n var othIsNull = other === null;\n\n if (\n (!othIsNull && value > other) ||\n (valIsNull && othIsDefined) ||\n !valIsDefined\n ) {\n return 1;\n }\n if (\n (!valIsNull && value < other) ||\n (othIsNull && valIsDefined) ||\n !othIsDefined\n ) {\n return -1;\n }\n }\n return 0;\n}\n\n/**\n * @param {Array} collection object with keys in attributes\n * @param {Array} iteratees attributes\n * @param {Array} orders asc | desc\n */\nfunction orderBy(collection, iteratees, orders) {\n if (!Array.isArray(collection)) {\n return [];\n }\n\n if (!Array.isArray(orders)) {\n orders = [];\n }\n\n var result = collection.map(function(value, index) {\n return {\n criteria: iteratees.map(function(iteratee) {\n return value[iteratee];\n }),\n index: index,\n value: value\n };\n });\n\n result.sort(function comparer(object, other) {\n var index = -1;\n\n while (++index < object.criteria.length) {\n var res = compareAscending(object.criteria[index], other.criteria[index]);\n if (res) {\n if (index >= orders.length) {\n return res;\n }\n if (orders[index] === 'desc') {\n return -res;\n }\n return res;\n }\n }\n\n // This ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n });\n\n return result.map(function(res) {\n return res.value;\n });\n}\n\nmodule.exports = orderBy;\n","'use strict';\n\nfunction valToNumber(v) {\n if (typeof v === 'number') {\n return v;\n } else if (typeof v === 'string') {\n return parseFloat(v);\n } else if (Array.isArray(v)) {\n return v.map(valToNumber);\n }\n\n throw new Error('The value should be a number, a parsable string or an array of those.');\n}\n\nmodule.exports = valToNumber;\n","'use strict';\n\nvar merge = require('./functions/merge');\n\nfunction sortObject(obj) {\n return Object.keys(obj)\n .sort(function(a, b) {\n return a.localeCompare(b);\n })\n .reduce(function(acc, curr) {\n acc[curr] = obj[curr];\n return acc;\n }, {});\n}\n\nvar requestBuilder = {\n /**\n * Get all the queries to send to the client, those queries can used directly\n * with the Algolia client.\n * @private\n * @return {object[]} The queries\n */\n _getQueries: function getQueries(index, state) {\n var queries = [];\n\n // One query for the hits\n queries.push({\n indexName: index,\n params: requestBuilder._getHitsSearchParams(state)\n });\n\n // One for each disjunctive facets\n state.getRefinedDisjunctiveFacets().forEach(function(refinedFacet) {\n queries.push({\n indexName: index,\n params: requestBuilder._getDisjunctiveFacetSearchParams(state, refinedFacet)\n });\n });\n\n // More to get the parent levels of the hierarchical facets when refined\n state.getRefinedHierarchicalFacets().forEach(function(refinedFacet) {\n var hierarchicalFacet = state.getHierarchicalFacetByName(refinedFacet);\n var currentRefinement = state.getHierarchicalRefinement(refinedFacet);\n var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n\n // If we are deeper than level 0 (starting from `beer > IPA`)\n // we want to get all parent values\n if (currentRefinement.length > 0 && currentRefinement[0].split(separator).length > 1) {\n // We generate a map of the filters we will use for our facet values queries\n var filtersMap = currentRefinement[0].split(separator).slice(0, -1).reduce(\n function createFiltersMap(map, segment, level) {\n return map.concat({\n attribute: hierarchicalFacet.attributes[level],\n value: level === 0\n ? segment\n : [map[map.length - 1].value, segment].join(separator)\n });\n }\n , []);\n\n filtersMap.forEach(function(filter, level) {\n var params = requestBuilder._getDisjunctiveFacetSearchParams(\n state,\n filter.attribute,\n level === 0\n );\n\n // Keep facet filters unrelated to current hierarchical attributes\n function hasHierarchicalFacetFilter(value) {\n return hierarchicalFacet.attributes.some(function(attribute) {\n return attribute === value.split(':')[0];\n });\n }\n\n var filteredFacetFilters = (params.facetFilters || []).reduce(function(acc, facetFilter) {\n if (Array.isArray(facetFilter)) {\n var filtered = facetFilter.filter(function(filterValue) {\n return !hasHierarchicalFacetFilter(filterValue);\n });\n\n if (filtered.length > 0) {\n acc.push(filtered);\n }\n }\n\n if (typeof facetFilter === 'string' && !hasHierarchicalFacetFilter(facetFilter)) {\n acc.push(facetFilter);\n }\n\n return acc;\n }, []);\n\n var parent = filtersMap[level - 1];\n if (level > 0) {\n params.facetFilters = filteredFacetFilters.concat(parent.attribute + ':' + parent.value);\n } else {\n params.facetFilters = filteredFacetFilters.length > 0 ? filteredFacetFilters : undefined;\n }\n\n queries.push({indexName: index, params: params});\n });\n }\n });\n\n return queries;\n },\n\n /**\n * Build search parameters used to fetch hits\n * @private\n * @return {object.}\n */\n _getHitsSearchParams: function(state) {\n var facets = state.facets\n .concat(state.disjunctiveFacets)\n .concat(requestBuilder._getHitsHierarchicalFacetsAttributes(state));\n\n\n var facetFilters = requestBuilder._getFacetFilters(state);\n var numericFilters = requestBuilder._getNumericFilters(state);\n var tagFilters = requestBuilder._getTagFilters(state);\n var additionalParams = {\n facets: facets.indexOf('*') > -1 ? ['*'] : facets,\n tagFilters: tagFilters\n };\n\n if (facetFilters.length > 0) {\n additionalParams.facetFilters = facetFilters;\n }\n\n if (numericFilters.length > 0) {\n additionalParams.numericFilters = numericFilters;\n }\n\n return sortObject(merge({}, state.getQueryParams(), additionalParams));\n },\n\n /**\n * Build search parameters used to fetch a disjunctive facet\n * @private\n * @param {string} facet the associated facet name\n * @param {boolean} hierarchicalRootLevel ?? FIXME\n * @return {object}\n */\n _getDisjunctiveFacetSearchParams: function(state, facet, hierarchicalRootLevel) {\n var facetFilters = requestBuilder._getFacetFilters(state, facet, hierarchicalRootLevel);\n var numericFilters = requestBuilder._getNumericFilters(state, facet);\n var tagFilters = requestBuilder._getTagFilters(state);\n var additionalParams = {\n hitsPerPage: 0,\n page: 0,\n analytics: false,\n clickAnalytics: false\n };\n\n if (tagFilters.length > 0) {\n additionalParams.tagFilters = tagFilters;\n }\n\n var hierarchicalFacet = state.getHierarchicalFacetByName(facet);\n\n if (hierarchicalFacet) {\n additionalParams.facets = requestBuilder._getDisjunctiveHierarchicalFacetAttribute(\n state,\n hierarchicalFacet,\n hierarchicalRootLevel\n );\n } else {\n additionalParams.facets = facet;\n }\n\n if (numericFilters.length > 0) {\n additionalParams.numericFilters = numericFilters;\n }\n\n if (facetFilters.length > 0) {\n additionalParams.facetFilters = facetFilters;\n }\n\n return sortObject(merge({}, state.getQueryParams(), additionalParams));\n },\n\n /**\n * Return the numeric filters in an algolia request fashion\n * @private\n * @param {string} [facetName] the name of the attribute for which the filters should be excluded\n * @return {string[]} the numeric filters in the algolia format\n */\n _getNumericFilters: function(state, facetName) {\n if (state.numericFilters) {\n return state.numericFilters;\n }\n\n var numericFilters = [];\n\n Object.keys(state.numericRefinements).forEach(function(attribute) {\n var operators = state.numericRefinements[attribute] || {};\n Object.keys(operators).forEach(function(operator) {\n var values = operators[operator] || [];\n if (facetName !== attribute) {\n values.forEach(function(value) {\n if (Array.isArray(value)) {\n var vs = value.map(function(v) {\n return attribute + operator + v;\n });\n numericFilters.push(vs);\n } else {\n numericFilters.push(attribute + operator + value);\n }\n });\n }\n });\n });\n\n return numericFilters;\n },\n\n /**\n * Return the tags filters depending\n * @private\n * @return {string}\n */\n _getTagFilters: function(state) {\n if (state.tagFilters) {\n return state.tagFilters;\n }\n\n return state.tagRefinements.join(',');\n },\n\n\n /**\n * Build facetFilters parameter based on current refinements. The array returned\n * contains strings representing the facet filters in the algolia format.\n * @private\n * @param {string} [facet] if set, the current disjunctive facet\n * @return {array.}\n */\n _getFacetFilters: function(state, facet, hierarchicalRootLevel) {\n var facetFilters = [];\n\n var facetsRefinements = state.facetsRefinements || {};\n Object.keys(facetsRefinements).forEach(function(facetName) {\n var facetValues = facetsRefinements[facetName] || [];\n facetValues.forEach(function(facetValue) {\n facetFilters.push(facetName + ':' + facetValue);\n });\n });\n\n var facetsExcludes = state.facetsExcludes || {};\n Object.keys(facetsExcludes).forEach(function(facetName) {\n var facetValues = facetsExcludes[facetName] || [];\n facetValues.forEach(function(facetValue) {\n facetFilters.push(facetName + ':-' + facetValue);\n });\n });\n\n var disjunctiveFacetsRefinements = state.disjunctiveFacetsRefinements || {};\n Object.keys(disjunctiveFacetsRefinements).forEach(function(facetName) {\n var facetValues = disjunctiveFacetsRefinements[facetName] || [];\n if (facetName === facet || !facetValues || facetValues.length === 0) {\n return;\n }\n var orFilters = [];\n\n facetValues.forEach(function(facetValue) {\n orFilters.push(facetName + ':' + facetValue);\n });\n\n facetFilters.push(orFilters);\n });\n\n var hierarchicalFacetsRefinements = state.hierarchicalFacetsRefinements || {};\n Object.keys(hierarchicalFacetsRefinements).forEach(function(facetName) {\n var facetValues = hierarchicalFacetsRefinements[facetName] || [];\n var facetValue = facetValues[0];\n\n if (facetValue === undefined) {\n return;\n }\n\n var hierarchicalFacet = state.getHierarchicalFacetByName(facetName);\n var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n var rootPath = state._getHierarchicalRootPath(hierarchicalFacet);\n var attributeToRefine;\n var attributesIndex;\n\n // we ask for parent facet values only when the `facet` is the current hierarchical facet\n if (facet === facetName) {\n // if we are at the root level already, no need to ask for facet values, we get them from\n // the hits query\n if (facetValue.indexOf(separator) === -1 || (!rootPath && hierarchicalRootLevel === true) ||\n (rootPath && rootPath.split(separator).length === facetValue.split(separator).length)) {\n return;\n }\n\n if (!rootPath) {\n attributesIndex = facetValue.split(separator).length - 2;\n facetValue = facetValue.slice(0, facetValue.lastIndexOf(separator));\n } else {\n attributesIndex = rootPath.split(separator).length - 1;\n facetValue = rootPath;\n }\n\n attributeToRefine = hierarchicalFacet.attributes[attributesIndex];\n } else {\n attributesIndex = facetValue.split(separator).length - 1;\n\n attributeToRefine = hierarchicalFacet.attributes[attributesIndex];\n }\n\n if (attributeToRefine) {\n facetFilters.push([attributeToRefine + ':' + facetValue]);\n }\n });\n\n return facetFilters;\n },\n\n _getHitsHierarchicalFacetsAttributes: function(state) {\n var out = [];\n\n return state.hierarchicalFacets.reduce(\n // ask for as much levels as there's hierarchical refinements\n function getHitsAttributesForHierarchicalFacet(allAttributes, hierarchicalFacet) {\n var hierarchicalRefinement = state.getHierarchicalRefinement(hierarchicalFacet.name)[0];\n\n // if no refinement, ask for root level\n if (!hierarchicalRefinement) {\n allAttributes.push(hierarchicalFacet.attributes[0]);\n return allAttributes;\n }\n\n var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n var level = hierarchicalRefinement.split(separator).length;\n var newAttributes = hierarchicalFacet.attributes.slice(0, level + 1);\n\n return allAttributes.concat(newAttributes);\n }, out);\n },\n\n _getDisjunctiveHierarchicalFacetAttribute: function(state, hierarchicalFacet, rootLevel) {\n var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n if (rootLevel === true) {\n var rootPath = state._getHierarchicalRootPath(hierarchicalFacet);\n var attributeIndex = 0;\n\n if (rootPath) {\n attributeIndex = rootPath.split(separator).length;\n }\n return [hierarchicalFacet.attributes[attributeIndex]];\n }\n\n var hierarchicalRefinement = state.getHierarchicalRefinement(hierarchicalFacet.name)[0] || '';\n // if refinement is 'beers > IPA > Flying dog',\n // then we want `facets: ['beers > IPA']` as disjunctive facet (parent level values)\n\n var parentLevel = hierarchicalRefinement.split(separator).length - 1;\n return hierarchicalFacet.attributes.slice(0, parentLevel + 1);\n },\n\n getSearchForFacetQuery: function(facetName, query, maxFacetHits, state) {\n var stateForSearchForFacetValues = state.isDisjunctiveFacet(facetName) ?\n state.clearRefinements(facetName) :\n state;\n var searchForFacetSearchParameters = {\n facetQuery: query,\n facetName: facetName\n };\n if (typeof maxFacetHits === 'number') {\n searchForFacetSearchParameters.maxFacetHits = maxFacetHits;\n }\n return sortObject(merge(\n {},\n requestBuilder._getHitsSearchParams(stateForSearchForFacetValues),\n searchForFacetSearchParameters\n ));\n }\n};\n\nmodule.exports = requestBuilder;\n","'use strict';\n\nmodule.exports = function isValidUserToken(userToken) {\n if (userToken === null) {\n return false;\n }\n return /^[a-zA-Z0-9_-]{1,64}$/.test(userToken);\n};\n","'use strict';\n\nmodule.exports = '3.12.0';\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\ntry {\n\tnull.error; // eslint-disable-line no-unused-expressions\n} catch (e) {\n\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\tvar errorProto = getProto(getProto(e));\n\tINTRINSICS['%Error.prototype%'] = errorProto;\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (typeof define === 'function' && define.amd) {\n define(definition);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n \"use strict\";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = \"undefined\";\n var isIE = (typeof window !== undefinedType) && (typeof window.navigator !== undefinedType) && (\n /Trident\\/|MSIE /.test(window.navigator.userAgent)\n );\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Trace() doesn't print the message in IE, so for that case we need to wrap it\n function traceForIE() {\n if (console.log) {\n if (console.log.apply) {\n console.log.apply(console, arguments);\n } else {\n // In old IE, native console methods themselves don't have apply().\n Function.prototype.apply.apply(console.log, [console, arguments]);\n }\n }\n if (console.trace) console.trace();\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (methodName === 'trace' && isIE) {\n return traceForIE;\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn't present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n defaultLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n\n var storageKey = \"loglevel\";\n if (typeof name === \"string\") {\n storageKey += \":\" + name;\n } else if (typeof name === \"symbol\") {\n storageKey = undefined;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n if (typeof window === undefinedType || !storageKey) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType || !storageKey) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + \"=\");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n function clearPersistedLevel() {\n if (typeof window === undefinedType || !storageKey) return;\n\n // Use localStorage if available\n try {\n window.localStorage.removeItem(storageKey);\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC\";\n } catch (ignore) {}\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return \"No console available for logging\";\n }\n } else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n defaultLevel = level;\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.resetLevel = function () {\n self.setLevel(defaultLevel, false);\n clearPersistedLevel();\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if ((typeof name !== \"symbol\" && typeof name !== \"string\") || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n // ES6 default export, for compatibility\n defaultLogger['default'] = defaultLogger;\n\n return defaultLogger;\n}));\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n var valuesArray = split.call(String(obj), ',');\n var valuesJoined = '';\n for (var i = 0; i < valuesArray.length; ++i) {\n valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n }\n return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];\n }\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\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 &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bodyOpenClassName = exports.portalClassName = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require(\"react-dom\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _ModalPortal = require(\"./ModalPortal\");\n\nvar _ModalPortal2 = _interopRequireDefault(_ModalPortal);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar portalClassName = exports.portalClassName = \"ReactModalPortal\";\nvar bodyOpenClassName = exports.bodyOpenClassName = \"ReactModal__Body--open\";\n\nvar isReact16 = _safeHTMLElement.canUseDOM && _reactDom2.default.createPortal !== undefined;\n\nvar createHTMLElement = function createHTMLElement(name) {\n return document.createElement(name);\n};\n\nvar getCreatePortal = function getCreatePortal() {\n return isReact16 ? _reactDom2.default.createPortal : _reactDom2.default.unstable_renderSubtreeIntoContainer;\n};\n\nfunction getParentElement(parentSelector) {\n return parentSelector();\n}\n\nvar Modal = function (_Component) {\n _inherits(Modal, _Component);\n\n function Modal() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Modal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Modal.__proto__ || Object.getPrototypeOf(Modal)).call.apply(_ref, [this].concat(args))), _this), _this.removePortal = function () {\n !isReact16 && _reactDom2.default.unmountComponentAtNode(_this.node);\n var parent = getParentElement(_this.props.parentSelector);\n if (parent && parent.contains(_this.node)) {\n parent.removeChild(_this.node);\n } else {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"parentSelector\" prop did not returned any DOM ' + \"element. Make sure that the parent element is unmounted to \" + \"avoid any memory leaks.\");\n }\n }, _this.portalRef = function (ref) {\n _this.portal = ref;\n }, _this.renderPortal = function (props) {\n var createPortal = getCreatePortal();\n var portal = createPortal(_this, _react2.default.createElement(_ModalPortal2.default, _extends({ defaultStyles: Modal.defaultStyles }, props)), _this.node);\n _this.portalRef(portal);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Modal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!_safeHTMLElement.canUseDOM) return;\n\n if (!isReact16) {\n this.node = createHTMLElement(\"div\");\n }\n this.node.className = this.props.portalClassName;\n\n var parent = getParentElement(this.props.parentSelector);\n parent.appendChild(this.node);\n\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate(prevProps) {\n var prevParent = getParentElement(prevProps.parentSelector);\n var nextParent = getParentElement(this.props.parentSelector);\n return { prevParent: prevParent, nextParent: nextParent };\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, _, snapshot) {\n if (!_safeHTMLElement.canUseDOM) return;\n var _props = this.props,\n isOpen = _props.isOpen,\n portalClassName = _props.portalClassName;\n\n\n if (prevProps.portalClassName !== portalClassName) {\n this.node.className = portalClassName;\n }\n\n var prevParent = snapshot.prevParent,\n nextParent = snapshot.nextParent;\n\n if (nextParent !== prevParent) {\n prevParent.removeChild(this.node);\n nextParent.appendChild(this.node);\n }\n\n // Stop unnecessary renders if modal is remaining closed\n if (!prevProps.isOpen && !isOpen) return;\n\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (!_safeHTMLElement.canUseDOM || !this.node || !this.portal) return;\n\n var state = this.portal.state;\n var now = Date.now();\n var closesAt = state.isOpen && this.props.closeTimeoutMS && (state.closesAt || now + this.props.closeTimeoutMS);\n\n if (closesAt) {\n if (!state.beforeClose) {\n this.portal.closeWithTimeout();\n }\n\n setTimeout(this.removePortal, closesAt - now);\n } else {\n this.removePortal();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!_safeHTMLElement.canUseDOM || !isReact16) {\n return null;\n }\n\n if (!this.node && isReact16) {\n this.node = createHTMLElement(\"div\");\n }\n\n var createPortal = getCreatePortal();\n return createPortal(_react2.default.createElement(_ModalPortal2.default, _extends({\n ref: this.portalRef,\n defaultStyles: Modal.defaultStyles\n }, this.props)), this.node);\n }\n }], [{\n key: \"setAppElement\",\n value: function setAppElement(element) {\n ariaAppHider.setElement(element);\n }\n\n /* eslint-disable react/no-unused-prop-types */\n\n /* eslint-enable react/no-unused-prop-types */\n\n }]);\n\n return Modal;\n}(_react.Component);\n\nModal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n portalClassName: _propTypes2.default.string,\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n base: _propTypes2.default.string.isRequired,\n afterOpen: _propTypes2.default.string.isRequired,\n beforeClose: _propTypes2.default.string.isRequired\n })]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n base: _propTypes2.default.string.isRequired,\n afterOpen: _propTypes2.default.string.isRequired,\n beforeClose: _propTypes2.default.string.isRequired\n })]),\n appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n onAfterOpen: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n ariaHideApp: _propTypes2.default.bool,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n preventScroll: _propTypes2.default.bool,\n parentSelector: _propTypes2.default.func,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n overlayElement: _propTypes2.default.func,\n contentElement: _propTypes2.default.func\n};\nModal.defaultProps = {\n isOpen: false,\n portalClassName: portalClassName,\n bodyOpenClassName: bodyOpenClassName,\n role: \"dialog\",\n ariaHideApp: true,\n closeTimeoutMS: 0,\n shouldFocusAfterRender: true,\n shouldCloseOnEsc: true,\n shouldCloseOnOverlayClick: true,\n shouldReturnFocusAfterClose: true,\n preventScroll: false,\n parentSelector: function parentSelector() {\n return document.body;\n },\n overlayElement: function overlayElement(props, contentEl) {\n return _react2.default.createElement(\n \"div\",\n props,\n contentEl\n );\n },\n contentElement: function contentElement(props, children) {\n return _react2.default.createElement(\n \"div\",\n props,\n children\n );\n }\n};\nModal.defaultStyles = {\n overlay: {\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: \"rgba(255, 255, 255, 0.75)\"\n },\n content: {\n position: \"absolute\",\n top: \"40px\",\n left: \"40px\",\n right: \"40px\",\n bottom: \"40px\",\n border: \"1px solid #ccc\",\n background: \"#fff\",\n overflow: \"auto\",\n WebkitOverflowScrolling: \"touch\",\n borderRadius: \"4px\",\n outline: \"none\",\n padding: \"20px\"\n }\n};\n\n\n(0, _reactLifecyclesCompat.polyfill)(Modal);\n\nif (process.env.NODE_ENV !== \"production\") {\n Modal.setCreateHTMLElement = function (fn) {\n return createHTMLElement = fn;\n };\n}\n\nexports.default = Modal;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _focusManager = require(\"../helpers/focusManager\");\n\nvar focusManager = _interopRequireWildcard(_focusManager);\n\nvar _scopeTab = require(\"../helpers/scopeTab\");\n\nvar _scopeTab2 = _interopRequireDefault(_scopeTab);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _classList = require(\"../helpers/classList\");\n\nvar classList = _interopRequireWildcard(_classList);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _portalOpenInstances = require(\"../helpers/portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nrequire(\"../helpers/bodyTrap\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// so that our CSS is statically analyzable\nvar CLASS_NAMES = {\n overlay: \"ReactModal__Overlay\",\n content: \"ReactModal__Content\"\n};\n\n/**\n * We need to support the deprecated `KeyboardEvent.keyCode` in addition to\n * `KeyboardEvent.code` for apps that still support IE11. Can be removed when\n * `react-modal` only supports React >18 (which dropped IE support).\n */\nvar isTabKey = function isTabKey(event) {\n return event.code === \"Tab\" || event.keyCode === 9;\n};\nvar isEscKey = function isEscKey(event) {\n return event.code === \"Escape\" || event.keyCode === 27;\n};\n\nvar ariaHiddenInstances = 0;\n\nvar ModalPortal = function (_Component) {\n _inherits(ModalPortal, _Component);\n\n function ModalPortal(props) {\n _classCallCheck(this, ModalPortal);\n\n var _this = _possibleConstructorReturn(this, (ModalPortal.__proto__ || Object.getPrototypeOf(ModalPortal)).call(this, props));\n\n _this.setOverlayRef = function (overlay) {\n _this.overlay = overlay;\n _this.props.overlayRef && _this.props.overlayRef(overlay);\n };\n\n _this.setContentRef = function (content) {\n _this.content = content;\n _this.props.contentRef && _this.props.contentRef(content);\n };\n\n _this.afterClose = function () {\n var _this$props = _this.props,\n appElement = _this$props.appElement,\n ariaHideApp = _this$props.ariaHideApp,\n htmlOpenClassName = _this$props.htmlOpenClassName,\n bodyOpenClassName = _this$props.bodyOpenClassName,\n parentSelector = _this$props.parentSelector;\n\n\n var parentDocument = parentSelector && parentSelector().ownerDocument || document;\n\n // Remove classes.\n bodyOpenClassName && classList.remove(parentDocument.body, bodyOpenClassName);\n\n htmlOpenClassName && classList.remove(parentDocument.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n // Reset aria-hidden attribute if all modals have been removed\n if (ariaHideApp && ariaHiddenInstances > 0) {\n ariaHiddenInstances -= 1;\n\n if (ariaHiddenInstances === 0) {\n ariaAppHider.show(appElement);\n }\n }\n\n if (_this.props.shouldFocusAfterRender) {\n if (_this.props.shouldReturnFocusAfterClose) {\n focusManager.returnFocus(_this.props.preventScroll);\n focusManager.teardownScopedFocus();\n } else {\n focusManager.popWithoutFocus();\n }\n }\n\n if (_this.props.onAfterClose) {\n _this.props.onAfterClose();\n }\n\n _portalOpenInstances2.default.deregister(_this);\n };\n\n _this.open = function () {\n _this.beforeOpen();\n if (_this.state.afterOpen && _this.state.beforeClose) {\n clearTimeout(_this.closeTimer);\n _this.setState({ beforeClose: false });\n } else {\n if (_this.props.shouldFocusAfterRender) {\n focusManager.setupScopedFocus(_this.node);\n focusManager.markForFocusLater();\n }\n\n _this.setState({ isOpen: true }, function () {\n _this.openAnimationFrame = requestAnimationFrame(function () {\n _this.setState({ afterOpen: true });\n\n if (_this.props.isOpen && _this.props.onAfterOpen) {\n _this.props.onAfterOpen({\n overlayEl: _this.overlay,\n contentEl: _this.content\n });\n }\n });\n });\n }\n };\n\n _this.close = function () {\n if (_this.props.closeTimeoutMS > 0) {\n _this.closeWithTimeout();\n } else {\n _this.closeWithoutTimeout();\n }\n };\n\n _this.focusContent = function () {\n return _this.content && !_this.contentHasFocus() && _this.content.focus({ preventScroll: true });\n };\n\n _this.closeWithTimeout = function () {\n var closesAt = Date.now() + _this.props.closeTimeoutMS;\n _this.setState({ beforeClose: true, closesAt: closesAt }, function () {\n _this.closeTimer = setTimeout(_this.closeWithoutTimeout, _this.state.closesAt - Date.now());\n });\n };\n\n _this.closeWithoutTimeout = function () {\n _this.setState({\n beforeClose: false,\n isOpen: false,\n afterOpen: false,\n closesAt: null\n }, _this.afterClose);\n };\n\n _this.handleKeyDown = function (event) {\n if (isTabKey(event)) {\n (0, _scopeTab2.default)(_this.content, event);\n }\n\n if (_this.props.shouldCloseOnEsc && isEscKey(event)) {\n event.stopPropagation();\n _this.requestClose(event);\n }\n };\n\n _this.handleOverlayOnClick = function (event) {\n if (_this.shouldClose === null) {\n _this.shouldClose = true;\n }\n\n if (_this.shouldClose && _this.props.shouldCloseOnOverlayClick) {\n if (_this.ownerHandlesClose()) {\n _this.requestClose(event);\n } else {\n _this.focusContent();\n }\n }\n _this.shouldClose = null;\n };\n\n _this.handleContentOnMouseUp = function () {\n _this.shouldClose = false;\n };\n\n _this.handleOverlayOnMouseDown = function (event) {\n if (!_this.props.shouldCloseOnOverlayClick && event.target == _this.overlay) {\n event.preventDefault();\n }\n };\n\n _this.handleContentOnClick = function () {\n _this.shouldClose = false;\n };\n\n _this.handleContentOnMouseDown = function () {\n _this.shouldClose = false;\n };\n\n _this.requestClose = function (event) {\n return _this.ownerHandlesClose() && _this.props.onRequestClose(event);\n };\n\n _this.ownerHandlesClose = function () {\n return _this.props.onRequestClose;\n };\n\n _this.shouldBeClosed = function () {\n return !_this.state.isOpen && !_this.state.beforeClose;\n };\n\n _this.contentHasFocus = function () {\n return document.activeElement === _this.content || _this.content.contains(document.activeElement);\n };\n\n _this.buildClassName = function (which, additional) {\n var classNames = (typeof additional === \"undefined\" ? \"undefined\" : _typeof(additional)) === \"object\" ? additional : {\n base: CLASS_NAMES[which],\n afterOpen: CLASS_NAMES[which] + \"--after-open\",\n beforeClose: CLASS_NAMES[which] + \"--before-close\"\n };\n var className = classNames.base;\n if (_this.state.afterOpen) {\n className = className + \" \" + classNames.afterOpen;\n }\n if (_this.state.beforeClose) {\n className = className + \" \" + classNames.beforeClose;\n }\n return typeof additional === \"string\" && additional ? className + \" \" + additional : className;\n };\n\n _this.attributesFromObject = function (prefix, items) {\n return Object.keys(items).reduce(function (acc, name) {\n acc[prefix + \"-\" + name] = items[name];\n return acc;\n }, {});\n };\n\n _this.state = {\n afterOpen: false,\n beforeClose: false\n };\n\n _this.shouldClose = null;\n _this.moveFromContentToOverlay = null;\n return _this;\n }\n\n _createClass(ModalPortal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.isOpen) {\n this.open();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (process.env.NODE_ENV !== \"production\") {\n if (prevProps.bodyOpenClassName !== this.props.bodyOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"bodyOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n if (prevProps.htmlOpenClassName !== this.props.htmlOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"htmlOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n }\n\n if (this.props.isOpen && !prevProps.isOpen) {\n this.open();\n } else if (!this.props.isOpen && prevProps.isOpen) {\n this.close();\n }\n\n // Focus only needs to be set once when the modal is being opened\n if (this.props.shouldFocusAfterRender && this.state.isOpen && !prevState.isOpen) {\n this.focusContent();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.state.isOpen) {\n this.afterClose();\n }\n clearTimeout(this.closeTimer);\n cancelAnimationFrame(this.openAnimationFrame);\n }\n }, {\n key: \"beforeOpen\",\n value: function beforeOpen() {\n var _props = this.props,\n appElement = _props.appElement,\n ariaHideApp = _props.ariaHideApp,\n htmlOpenClassName = _props.htmlOpenClassName,\n bodyOpenClassName = _props.bodyOpenClassName,\n parentSelector = _props.parentSelector;\n\n\n var parentDocument = parentSelector && parentSelector().ownerDocument || document;\n\n // Add classes.\n bodyOpenClassName && classList.add(parentDocument.body, bodyOpenClassName);\n\n htmlOpenClassName && classList.add(parentDocument.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n if (ariaHideApp) {\n ariaHiddenInstances += 1;\n ariaAppHider.hide(appElement);\n }\n\n _portalOpenInstances2.default.register(this);\n }\n\n // Don't steal focus from inner elements\n\n }, {\n key: \"render\",\n value: function render() {\n var _props2 = this.props,\n id = _props2.id,\n className = _props2.className,\n overlayClassName = _props2.overlayClassName,\n defaultStyles = _props2.defaultStyles,\n children = _props2.children;\n\n var contentStyles = className ? {} : defaultStyles.content;\n var overlayStyles = overlayClassName ? {} : defaultStyles.overlay;\n\n if (this.shouldBeClosed()) {\n return null;\n }\n\n var overlayProps = {\n ref: this.setOverlayRef,\n className: this.buildClassName(\"overlay\", overlayClassName),\n style: _extends({}, overlayStyles, this.props.style.overlay),\n onClick: this.handleOverlayOnClick,\n onMouseDown: this.handleOverlayOnMouseDown\n };\n\n var contentProps = _extends({\n id: id,\n ref: this.setContentRef,\n style: _extends({}, contentStyles, this.props.style.content),\n className: this.buildClassName(\"content\", className),\n tabIndex: \"-1\",\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleContentOnMouseDown,\n onMouseUp: this.handleContentOnMouseUp,\n onClick: this.handleContentOnClick,\n role: this.props.role,\n \"aria-label\": this.props.contentLabel\n }, this.attributesFromObject(\"aria\", _extends({ modal: true }, this.props.aria)), this.attributesFromObject(\"data\", this.props.data || {}), {\n \"data-testid\": this.props.testId\n });\n\n var contentElement = this.props.contentElement(contentProps, children);\n return this.props.overlayElement(overlayProps, contentElement);\n }\n }]);\n\n return ModalPortal;\n}(_react.Component);\n\nModalPortal.defaultProps = {\n style: {\n overlay: {},\n content: {}\n },\n defaultStyles: {}\n};\nModalPortal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n defaultStyles: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n parentSelector: _propTypes2.default.func,\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n ariaHideApp: _propTypes2.default.bool,\n appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n onAfterOpen: _propTypes2.default.func,\n onAfterClose: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n preventScroll: _propTypes2.default.bool,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n children: _propTypes2.default.node,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n overlayElement: _propTypes2.default.func,\n contentElement: _propTypes2.default.func,\n testId: _propTypes2.default.string\n};\nexports.default = ModalPortal;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.assertNodeList = assertNodeList;\nexports.setElement = setElement;\nexports.validateElement = validateElement;\nexports.hide = hide;\nexports.show = show;\nexports.documentNotReadyOrSSRTesting = documentNotReadyOrSSRTesting;\n\nvar _warning = require(\"warning\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _safeHTMLElement = require(\"./safeHTMLElement\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar globalElement = null;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n if (globalElement) {\n if (globalElement.removeAttribute) {\n globalElement.removeAttribute(\"aria-hidden\");\n } else if (globalElement.length != null) {\n globalElement.forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n } else {\n document.querySelectorAll(globalElement).forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n }\n }\n globalElement = null;\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n var check = globalElement || {};\n console.log(\"ariaAppHider ----------\");\n console.log(check.nodeName, check.className, check.id);\n console.log(\"end ariaAppHider ----------\");\n }\n}\n/* eslint-enable no-console */\n\nfunction assertNodeList(nodeList, selector) {\n if (!nodeList || !nodeList.length) {\n throw new Error(\"react-modal: No elements were found for selector \" + selector + \".\");\n }\n}\n\nfunction setElement(element) {\n var useElement = element;\n if (typeof useElement === \"string\" && _safeHTMLElement.canUseDOM) {\n var el = document.querySelectorAll(useElement);\n assertNodeList(el, useElement);\n useElement = el;\n }\n globalElement = useElement || globalElement;\n return globalElement;\n}\n\nfunction validateElement(appElement) {\n var el = appElement || globalElement;\n if (el) {\n return Array.isArray(el) || el instanceof HTMLCollection || el instanceof NodeList ? el : [el];\n } else {\n (0, _warning2.default)(false, [\"react-modal: App element is not defined.\", \"Please use `Modal.setAppElement(el)` or set `appElement={el}`.\", \"This is needed so screen readers don't see main content\", \"when modal is opened. It is not recommended, but you can opt-out\", \"by setting `ariaHideApp={false}`.\"].join(\" \"));\n\n return [];\n }\n}\n\nfunction hide(appElement) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = validateElement(appElement)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var el = _step.value;\n\n el.setAttribute(\"aria-hidden\", \"true\");\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\nfunction show(appElement) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = validateElement(appElement)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var el = _step2.value;\n\n el.removeAttribute(\"aria-hidden\");\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n}\n\nfunction documentNotReadyOrSSRTesting() {\n globalElement = null;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\n\nvar _portalOpenInstances = require(\"./portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Body focus trap see Issue #742\n\nvar before = void 0,\n after = void 0,\n instances = [];\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n var _arr = [before, after];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var item = _arr[_i];\n if (!item) continue;\n item.parentNode && item.parentNode.removeChild(item);\n }\n before = after = null;\n instances = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n console.log(\"bodyTrap ----------\");\n console.log(instances.length);\n var _arr2 = [before, after];\n for (var _i2 = 0; _i2 < _arr2.length; _i2++) {\n var item = _arr2[_i2];\n var check = item || {};\n console.log(check.nodeName, check.className, check.id);\n }\n console.log(\"edn bodyTrap ----------\");\n}\n/* eslint-enable no-console */\n\nfunction focusContent() {\n if (instances.length === 0) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Open instances > 0 expected\");\n }\n return;\n }\n instances[instances.length - 1].focusContent();\n}\n\nfunction bodyTrap(eventType, openInstances) {\n if (!before && !after) {\n before = document.createElement(\"div\");\n before.setAttribute(\"data-react-modal-body-trap\", \"\");\n before.style.position = \"absolute\";\n before.style.opacity = \"0\";\n before.setAttribute(\"tabindex\", \"0\");\n before.addEventListener(\"focus\", focusContent);\n after = before.cloneNode();\n after.addEventListener(\"focus\", focusContent);\n }\n\n instances = openInstances;\n\n if (instances.length > 0) {\n // Add focus trap\n if (document.body.firstChild !== before) {\n document.body.insertBefore(before, document.body.firstChild);\n }\n if (document.body.lastChild !== after) {\n document.body.appendChild(after);\n }\n } else {\n // Remove focus trap\n if (before.parentElement) {\n before.parentElement.removeChild(before);\n }\n if (after.parentElement) {\n after.parentElement.removeChild(after);\n }\n }\n}\n\n_portalOpenInstances2.default.subscribe(bodyTrap);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nvar htmlClassList = {};\nvar docBodyClassList = {};\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction removeClass(at, cls) {\n at.classList.remove(cls);\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n var htmlElement = document.getElementsByTagName(\"html\")[0];\n for (var cls in htmlClassList) {\n removeClass(htmlElement, htmlClassList[cls]);\n }\n\n var body = document.body;\n for (var _cls in docBodyClassList) {\n removeClass(body, docBodyClassList[_cls]);\n }\n\n htmlClassList = {};\n docBodyClassList = {};\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n var classes = document.getElementsByTagName(\"html\")[0].className;\n var buffer = \"Show tracked classes:\\n\\n\";\n\n buffer += \" (\" + classes + \"):\\n \";\n for (var x in htmlClassList) {\n buffer += \" \" + x + \" \" + htmlClassList[x] + \"\\n \";\n }\n\n classes = document.body.className;\n\n buffer += \"\\n\\ndoc.body (\" + classes + \"):\\n \";\n for (var _x in docBodyClassList) {\n buffer += \" \" + _x + \" \" + docBodyClassList[_x] + \"\\n \";\n }\n\n buffer += \"\\n\";\n\n console.log(buffer);\n }\n}\n/* eslint-enable no-console */\n\n/**\n * Track the number of reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar incrementReference = function incrementReference(poll, className) {\n if (!poll[className]) {\n poll[className] = 0;\n }\n poll[className] += 1;\n return className;\n};\n\n/**\n * Drop the reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar decrementReference = function decrementReference(poll, className) {\n if (poll[className]) {\n poll[className] -= 1;\n }\n return className;\n};\n\n/**\n * Track a class and add to the given class list.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be tracked.\n */\nvar trackClass = function trackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n incrementReference(poll, className);\n classListRef.add(className);\n });\n};\n\n/**\n * Untrack a class and remove from the given class list if the reference\n * reaches 0.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be untracked.\n */\nvar untrackClass = function untrackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n decrementReference(poll, className);\n poll[className] === 0 && classListRef.remove(className);\n });\n};\n\n/**\n * Public inferface to add classes to the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\nvar add = exports.add = function add(element, classString) {\n return trackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};\n\n/**\n * Public inferface to remove classes from the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\nvar remove = exports.remove = function remove(element, classString) {\n return untrackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.handleBlur = handleBlur;\nexports.handleFocus = handleFocus;\nexports.markForFocusLater = markForFocusLater;\nexports.returnFocus = returnFocus;\nexports.popWithoutFocus = popWithoutFocus;\nexports.setupScopedFocus = setupScopedFocus;\nexports.teardownScopedFocus = teardownScopedFocus;\n\nvar _tabbable = require(\"../helpers/tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar focusLaterElements = [];\nvar modalElement = null;\nvar needToFocus = false;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n focusLaterElements = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n console.log(\"focusManager ----------\");\n focusLaterElements.forEach(function (f) {\n var check = f || {};\n console.log(check.nodeName, check.className, check.id);\n });\n console.log(\"end focusManager ----------\");\n }\n}\n/* eslint-enable no-console */\n\nfunction handleBlur() {\n needToFocus = true;\n}\n\nfunction handleFocus() {\n if (needToFocus) {\n needToFocus = false;\n if (!modalElement) {\n return;\n }\n // need to see how jQuery shims document.on('focusin') so we don't need the\n // setTimeout, firefox doesn't support focusin, if it did, we could focus\n // the element outside of a setTimeout. Side-effect of this implementation\n // is that the document.body gets focus, and then we focus our element right\n // after, seems fine.\n setTimeout(function () {\n if (modalElement.contains(document.activeElement)) {\n return;\n }\n var el = (0, _tabbable2.default)(modalElement)[0] || modalElement;\n el.focus();\n }, 0);\n }\n}\n\nfunction markForFocusLater() {\n focusLaterElements.push(document.activeElement);\n}\n\n/* eslint-disable no-console */\nfunction returnFocus() {\n var preventScroll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var toFocus = null;\n try {\n if (focusLaterElements.length !== 0) {\n toFocus = focusLaterElements.pop();\n toFocus.focus({ preventScroll: preventScroll });\n }\n return;\n } catch (e) {\n console.warn([\"You tried to return focus to\", toFocus, \"but it is not in the DOM anymore\"].join(\" \"));\n }\n}\n/* eslint-enable no-console */\n\nfunction popWithoutFocus() {\n focusLaterElements.length > 0 && focusLaterElements.pop();\n}\n\nfunction setupScopedFocus(element) {\n modalElement = element;\n\n if (window.addEventListener) {\n window.addEventListener(\"blur\", handleBlur, false);\n document.addEventListener(\"focus\", handleFocus, true);\n } else {\n window.attachEvent(\"onBlur\", handleBlur);\n document.attachEvent(\"onFocus\", handleFocus);\n }\n}\n\nfunction teardownScopedFocus() {\n modalElement = null;\n\n if (window.addEventListener) {\n window.removeEventListener(\"blur\", handleBlur);\n document.removeEventListener(\"focus\", handleFocus);\n } else {\n window.detachEvent(\"onBlur\", handleBlur);\n document.detachEvent(\"onFocus\", handleFocus);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.log = log;\nexports.resetState = resetState;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Tracks portals that are open and emits events to subscribers\n\nvar PortalOpenInstances = function PortalOpenInstances() {\n var _this = this;\n\n _classCallCheck(this, PortalOpenInstances);\n\n this.register = function (openInstance) {\n if (_this.openInstances.indexOf(openInstance) !== -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Cannot register modal instance that's already open\");\n }\n return;\n }\n _this.openInstances.push(openInstance);\n _this.emit(\"register\");\n };\n\n this.deregister = function (openInstance) {\n var index = _this.openInstances.indexOf(openInstance);\n if (index === -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Unable to deregister \" + openInstance + \" as \" + \"it was never registered\");\n }\n return;\n }\n _this.openInstances.splice(index, 1);\n _this.emit(\"deregister\");\n };\n\n this.subscribe = function (callback) {\n _this.subscribers.push(callback);\n };\n\n this.emit = function (eventType) {\n _this.subscribers.forEach(function (subscriber) {\n return subscriber(eventType,\n // shallow copy to avoid accidental mutation\n _this.openInstances.slice());\n });\n };\n\n this.openInstances = [];\n this.subscribers = [];\n};\n\nvar portalOpenInstances = new PortalOpenInstances();\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction log() {\n console.log(\"portalOpenInstances ----------\");\n console.log(portalOpenInstances.openInstances.length);\n portalOpenInstances.openInstances.forEach(function (p) {\n return console.log(p);\n });\n console.log(\"end portalOpenInstances ----------\");\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n portalOpenInstances = new PortalOpenInstances();\n}\n/* eslint-enable no-console */\n\nexports.default = portalOpenInstances;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canUseDOM = exports.SafeNodeList = exports.SafeHTMLCollection = undefined;\n\nvar _exenv = require(\"exenv\");\n\nvar _exenv2 = _interopRequireDefault(_exenv);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EE = _exenv2.default;\n\nvar SafeHTMLElement = EE.canUseDOM ? window.HTMLElement : {};\n\nvar SafeHTMLCollection = exports.SafeHTMLCollection = EE.canUseDOM ? window.HTMLCollection : {};\n\nvar SafeNodeList = exports.SafeNodeList = EE.canUseDOM ? window.NodeList : {};\n\nvar canUseDOM = exports.canUseDOM = EE.canUseDOM;\n\nexports.default = SafeHTMLElement;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = scopeTab;\n\nvar _tabbable = require(\"./tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getActiveElement() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n\n return el.activeElement.shadowRoot ? getActiveElement(el.activeElement.shadowRoot) : el.activeElement;\n}\n\nfunction scopeTab(node, event) {\n var tabbable = (0, _tabbable2.default)(node);\n\n if (!tabbable.length) {\n // Do nothing, since there are no elements that can receive focus.\n event.preventDefault();\n return;\n }\n\n var target = void 0;\n\n var shiftKey = event.shiftKey;\n var head = tabbable[0];\n var tail = tabbable[tabbable.length - 1];\n var activeElement = getActiveElement();\n\n // proceed with default browser behavior on tab.\n // Focus on last element on shift + tab.\n if (node === activeElement) {\n if (!shiftKey) return;\n target = tail;\n }\n\n if (tail === activeElement && !shiftKey) {\n target = head;\n }\n\n if (head === activeElement && shiftKey) {\n target = tail;\n }\n\n if (target) {\n event.preventDefault();\n target.focus();\n return;\n }\n\n // Safari radio issue.\n //\n // Safari does not move the focus to the radio button,\n // so we need to force it to really walk through all elements.\n //\n // This is very error prone, since we are trying to guess\n // if it is a safari browser from the first occurence between\n // chrome or safari.\n //\n // The chrome user agent contains the first ocurrence\n // as the 'chrome/version' and later the 'safari/version'.\n var checkSafari = /(\\bChrome\\b|\\bSafari\\b)\\//.exec(navigator.userAgent);\n var isSafariDesktop = checkSafari != null && checkSafari[1] != \"Chrome\" && /\\biPod\\b|\\biPad\\b/g.exec(navigator.userAgent) == null;\n\n // If we are not in safari desktop, let the browser control\n // the focus\n if (!isSafariDesktop) return;\n\n var x = tabbable.indexOf(activeElement);\n\n if (x > -1) {\n x += shiftKey ? -1 : 1;\n }\n\n target = tabbable[x];\n\n // If the tabbable element does not exist,\n // focus head/tail based on shiftKey\n if (typeof target === \"undefined\") {\n event.preventDefault();\n target = shiftKey ? tail : head;\n target.focus();\n return;\n }\n\n event.preventDefault();\n\n target.focus();\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = findTabbableDescendants;\n/*!\n * Adapted from jQuery UI core\n *\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\nvar DISPLAY_NONE = \"none\";\nvar DISPLAY_CONTENTS = \"contents\";\n\nvar tabbableNode = /input|select|textarea|button|object|iframe/;\n\nfunction isNotOverflowing(element, style) {\n return style.getPropertyValue(\"overflow\") !== \"visible\" ||\n // if 'overflow: visible' set, check if there is actually any overflow\n element.scrollWidth <= 0 && element.scrollHeight <= 0;\n}\n\nfunction hidesContents(element) {\n var zeroSize = element.offsetWidth <= 0 && element.offsetHeight <= 0;\n\n // If the node is empty, this is good enough\n if (zeroSize && !element.innerHTML) return true;\n\n try {\n // Otherwise we need to check some styles\n var style = window.getComputedStyle(element);\n var displayValue = style.getPropertyValue(\"display\");\n return zeroSize ? displayValue !== DISPLAY_CONTENTS && isNotOverflowing(element, style) : displayValue === DISPLAY_NONE;\n } catch (exception) {\n // eslint-disable-next-line no-console\n console.warn(\"Failed to inspect element style\");\n return false;\n }\n}\n\nfunction visible(element) {\n var parentElement = element;\n var rootNode = element.getRootNode && element.getRootNode();\n while (parentElement) {\n if (parentElement === document.body) break;\n\n // if we are not hidden yet, skip to checking outside the Web Component\n if (rootNode && parentElement === rootNode) parentElement = rootNode.host.parentNode;\n\n if (hidesContents(parentElement)) return false;\n parentElement = parentElement.parentNode;\n }\n return true;\n}\n\nfunction focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n var res = tabbableNode.test(nodeName) && !element.disabled || (nodeName === \"a\" ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n return res && visible(element);\n}\n\nfunction tabbable(element) {\n var tabIndex = element.getAttribute(\"tabindex\");\n if (tabIndex === null) tabIndex = undefined;\n var isTabIndexNaN = isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n}\n\nfunction findTabbableDescendants(element) {\n var descendants = [].slice.call(element.querySelectorAll(\"*\"), 0).reduce(function (finished, el) {\n return finished.concat(!el.shadowRoot ? [el] : findTabbableDescendants(el.shadowRoot));\n }, []);\n return descendants.filter(tabbable);\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Modal = require(\"./components/Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Modal2.default;\nmodule.exports = exports[\"default\"];","/**\n * @license React\n * react-jsx-runtime.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'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.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'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>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","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","\"use strict\";\n\nexport class Configuration {\n constructor(options = {}) {\n this.server = options.server || {\n nodes: [\n {\n host: \"localhost\",\n port: \"8108\",\n path: \"\",\n protocol: \"http\",\n },\n ],\n };\n\n this.server.cacheSearchResultsForSeconds = this.server.cacheSearchResultsForSeconds ?? 2 * 60;\n\n this.additionalSearchParameters = options.additionalSearchParameters ?? {};\n\n this.additionalSearchParameters.query_by =\n this.additionalSearchParameters.queryBy ?? this.additionalSearchParameters.query_by ?? \"\";\n\n this.additionalSearchParameters.preset =\n this.additionalSearchParameters.preset ?? this.additionalSearchParameters.preset ?? \"\";\n\n this.additionalSearchParameters.sort_by =\n this.additionalSearchParameters.sortBy ?? this.additionalSearchParameters.sort_by ?? \"\";\n\n this.additionalSearchParameters.highlight_full_fields =\n this.additionalSearchParameters.highlightFullFields ??\n this.additionalSearchParameters.highlight_full_fields ??\n this.additionalSearchParameters.query_by;\n\n this.geoLocationField = options.geoLocationField ?? \"_geoloc\";\n\n this.collectionSpecificSearchParameters = options.collectionSpecificSearchParameters ?? {};\n\n Object.keys(this.collectionSpecificSearchParameters).forEach((collection) => {\n const params = this.collectionSpecificSearchParameters[collection];\n params.query_by = params.queryBy ?? params.query_by;\n params.preset = params.preset ?? params.preset;\n params.sort_by = params.sortBy ?? params.sort_by;\n params.highlight_full_fields =\n params.highlightFullFields ??\n params.highlight_full_fields ??\n this.additionalSearchParameters.highlight_full_fields ??\n params.query_by;\n\n // Remove undefined values\n Object.keys(params).forEach((key) => (params[key] === undefined ? delete params[key] : {}));\n });\n }\n\n validate() {\n // Warn if camelCased parameters are used, suggest using snake_cased parameters instead\n if (\n this.additionalSearchParameters.queryBy ||\n Object.values(this.collectionSpecificSearchParameters).some((c) => c.queryBy)\n ) {\n console.warn(\n \"[typesense-instantsearch-adapter] Please use snake_cased versions of parameters in additionalSearchParameters instead of camelCased parameters. For example: Use query_by instead of queryBy. camelCased parameters will be deprecated in a future version.\" +\n \" We're making this change so that parameter names are identical to the ones sent to Typesense (which are all snake_cased), and to also keep the types for these parameters in sync with the types defined in typesense-js.\"\n );\n }\n\n /*\n * Either additionalSearchParameters.query_by or additionalSearchParameters.preset needs to be set, or\n * All collectionSpecificSearchParameters need to have query_by or preset\n *\n * */\n if (\n this.additionalSearchParameters.query_by.length === 0 &&\n this.additionalSearchParameters.preset.length === 0 &&\n (Object.keys(this.collectionSpecificSearchParameters).length === 0 ||\n Object.values(this.collectionSpecificSearchParameters).some(\n (c) => (c.query_by || \"\").length === 0 && (c.preset || \"\").length === 0\n ))\n ) {\n throw new Error(\n \"[typesense-instantsearch-adapter] Missing parameter: One of additionalSearchParameters.query_by or additionalSearchParameters.preset needs to be set, or all collectionSpecificSearchParameters need to have either .query_by or .preset set.\"\n );\n }\n }\n}\n","\"use strict\";\n\nimport { utils } from \"./support/utils\";\n\nexport class FacetSearchResponseAdapter {\n constructor(typesenseResponse, instantsearchRequest) {\n this.typesenseResponse = typesenseResponse;\n this.instantsearchRequest = instantsearchRequest;\n }\n\n _adaptFacetHits(typesenseFacetCounts) {\n let adaptedResult = {};\n const facet = typesenseFacetCounts.find((facet) => facet.field_name === this.instantsearchRequest.params.facetName);\n\n adaptedResult = facet.counts.map((facetCount) => ({\n value: facetCount.value,\n highlighted: this._adaptHighlightTag(\n facetCount.highlighted,\n this.instantsearchRequest.params.highlightPreTag,\n this.instantsearchRequest.params.highlightPostTag\n ),\n count: facetCount.count,\n }));\n\n return adaptedResult;\n }\n\n adapt() {\n const adaptedResult = {\n facetHits: this._adaptFacetHits(this.typesenseResponse.facet_counts),\n exhaustiveFacetsCount: true,\n processingTimeMS: this.typesenseResponse.search_time_ms,\n };\n return adaptedResult;\n }\n}\n\nObject.assign(FacetSearchResponseAdapter.prototype, utils);\n","\"use strict\";\n\nexport class SearchRequestAdapter {\n static get INDEX_NAME_MATCHING_REGEX() {\n return new RegExp(\"^(.+?)(?=(/sort/(.*))|$)\");\n }\n\n static get FILTER_STRING_MATCHING_REGEX() {\n return new RegExp(\"(.*)((?!:).):(?!:)(.*)\");\n }\n\n constructor(instantsearchRequests, typesenseClient, configuration) {\n this.instantsearchRequests = instantsearchRequests;\n this.typesenseClient = typesenseClient;\n this.configuration = configuration;\n this.additionalSearchParameters = configuration.additionalSearchParameters;\n this.collectionSpecificSearchParameters = configuration.collectionSpecificSearchParameters;\n }\n\n _adaptFacetFilters(facetFilters) {\n let adaptedResult = \"\";\n\n if (!facetFilters) {\n return adaptedResult;\n }\n\n /**\n * Need to transform:\n * facetFilters = [[\"field1:value1\", \"field1:value2\"], \"field2:value3\", \"field2:value4\"]\n *\n * Into this:\n * field1:=[value1,value2] && field2:=value3 && field2:=value4\n *\n * Steps:\n * - For each item in facetFilters\n * - If item is array\n * - OR values together.\n * - Warn if field names are not the same\n * - If item is string, convert to facet:=value format\n * - Join strings by &&\n */\n\n const transformedTypesenseFilters = facetFilters.map((item) => {\n if (Array.isArray(item)) {\n // Need to transform:\n // facetFilters = [\"field1:value1\", \"field1:value2\", \"facetN:valueN\"]\n //\n // Into this:\n // intermediateFacetFilters = {\n // \"field1\": [\"value1\", \"value2\"],\n // \"fieldN\": [\"valueN\"]\n // }\n\n const intermediateFacetFilters = {};\n item.forEach((facetFilter) => {\n const facetFilterMatches = facetFilter.match(this.constructor.FILTER_STRING_MATCHING_REGEX);\n const fieldName = `${facetFilterMatches[1]}${facetFilterMatches[2]}`;\n const fieldValue = `${facetFilterMatches[3]}`;\n intermediateFacetFilters[fieldName] = intermediateFacetFilters[fieldName] || [];\n intermediateFacetFilters[fieldName].push(fieldValue);\n });\n\n if (Object.keys(intermediateFacetFilters).length > 1) {\n console.error(\n `[Typesense-Instantsearch-Adapter] Typesense does not support cross-field ORs at the moment. The adapter could not OR values between these fields: ${Object.keys(\n intermediateFacetFilters\n ).join(\",\")}`\n );\n }\n\n // Pick first value from intermediateFacetFilters\n const fieldName = Object.keys(intermediateFacetFilters)[0];\n const fieldValues = intermediateFacetFilters[fieldName];\n\n // Need to transform:\n // intermediateFacetFilters = {\n // \"field1\": [\"value1\", \"value2\"],\n // }\n //\n // Into this:\n // field1:=[value1,value2]\n\n // Partition values into included and excluded values\n const [excludedFieldValues, includedFieldValues] = fieldValues.reduce(\n (result, fieldValue) => {\n if (fieldValue.startsWith(\"-\") && !this._isNumber(fieldValue)) {\n result[0].push(fieldValue.substring(1));\n } else {\n result[1].push(fieldValue);\n }\n return result;\n },\n [[], []]\n );\n\n const typesenseFilterStringComponents = [];\n if (includedFieldValues.length > 0) {\n typesenseFilterStringComponents.push(\n `${fieldName}:=[${includedFieldValues.map((v) => this._escapeFacetValue(v)).join(\",\")}]`\n );\n }\n if (excludedFieldValues.length > 0) {\n typesenseFilterStringComponents.push(\n `${fieldName}:!=[${excludedFieldValues.map((v) => this._escapeFacetValue(v)).join(\",\")}]`\n );\n }\n\n const typesenseFilterString = typesenseFilterStringComponents.filter((f) => f).join(\" && \");\n\n return typesenseFilterString;\n } else {\n // Need to transform:\n // fieldName:fieldValue\n // Into\n // fieldName:=fieldValue\n\n const facetFilterMatches = item.match(this.constructor.FILTER_STRING_MATCHING_REGEX);\n const fieldName = `${facetFilterMatches[1]}${facetFilterMatches[2]}`;\n const fieldValue = `${facetFilterMatches[3]}`;\n let typesenseFilterString;\n if (fieldValue.startsWith(\"-\") && !this._isNumber(fieldValue)) {\n typesenseFilterString = `${fieldName}:!=[${this._escapeFacetValue(fieldValue.substring(1))}]`;\n } else {\n typesenseFilterString = `${fieldName}:=[${this._escapeFacetValue(fieldValue)}]`;\n }\n\n return typesenseFilterString;\n }\n });\n\n adaptedResult = transformedTypesenseFilters.join(\" && \");\n // console.log(`${JSON.stringify(facetFilters)} => ${adaptedResult}`);\n\n return adaptedResult;\n }\n\n _escapeFacetValue(value) {\n // Don't escape booleans, integers or floats\n if (typeof value === \"boolean\" || value === \"true\" || value === \"false\" || this._isNumber(value)) {\n return value;\n }\n return `\\`${value}\\``;\n }\n\n _isNumber(value) {\n return (\n Number.isInteger(value % 1) || // Mod 1 will automatically try converting string values to integer/float\n !!(value % 1)\n ); // Is Float\n }\n\n _adaptNumericFilters(numericFilters) {\n // Need to transform this:\n // [\"field1<=634\", \"field1>=289\", \"field2<=5\", \"field3>=3\"]\n // to:\n // \"field1:=[634..289] && field2:<=5 && field3:>=3\"\n let adaptedResult = \"\";\n\n if (!numericFilters) {\n return adaptedResult;\n }\n\n // Transform to intermediate structure:\n // {\n // field1: {\n // \"<=\": 634,\n // \">=\": 289\n // },\n // field2: {\n // \"<=\": 5\n // },\n // field3: {\n // \">=\": 3\n // }\n // };\n const filtersHash = {};\n numericFilters.forEach((filter) => {\n const [, field, operator, value] = filter.match(new RegExp(\"(.*?)(<=|>=|>|<|:|=)(.*)\"));\n filtersHash[field] = filtersHash[field] || {};\n filtersHash[field][operator] = value;\n });\n\n // Transform that to:\n // \"field1:=[634..289] && field2:<=5 && field3:>=3\"\n const adaptedFilters = [];\n Object.keys(filtersHash).forEach((field) => {\n if (filtersHash[field][\"<=\"] != null && filtersHash[field][\">=\"] != null) {\n adaptedFilters.push(`${field}:=[${filtersHash[field][\">=\"]}..${filtersHash[field][\"<=\"]}]`);\n } else if (filtersHash[field][\"<=\"] != null) {\n adaptedFilters.push(`${field}:<=${filtersHash[field][\"<=\"]}`);\n } else if (filtersHash[field][\">=\"] != null) {\n adaptedFilters.push(`${field}:>=${filtersHash[field][\">=\"]}`);\n } else if (filtersHash[field][\"=\"] != null) {\n adaptedFilters.push(`${field}:=${filtersHash[field][\"=\"]}`);\n } else {\n console.warn(\n `[Typesense-Instantsearch-Adapter] Unsupported operator found ${JSON.stringify(filtersHash[field])}`\n );\n }\n });\n\n adaptedResult = adaptedFilters.join(\" && \");\n return adaptedResult;\n }\n\n _adaptGeoFilter({ insideBoundingBox, aroundRadius, aroundLatLng, insidePolygon }) {\n // Give this parameter first priority if it exists, since\n if (insideBoundingBox) {\n let x1, y1, x2, y2;\n if (Array.isArray(insideBoundingBox)) {\n [x1, y1, x2, y2] = insideBoundingBox.flat();\n } else {\n [x1, y1, x2, y2] = insideBoundingBox.split(\",\");\n }\n return `${this.configuration.geoLocationField}:(${x1}, ${y1}, ${x1}, ${y2}, ${x2}, ${y2}, ${x2}, ${y1})`;\n }\n\n if (aroundLatLng || aroundRadius) {\n if (!aroundRadius || aroundRadius === \"all\") {\n throw new Error(\n \"[Typesense-Instantsearch-Adapter] In Typesense, geo-filtering around a lat/lng also requires a numerical radius. \" +\n \"So the `aroundRadius` parameter is required when `aroundLatLng` is used. \" +\n \"If you intend to just geo-sort around a lat/long, you want to use the sortBy InstantSearch widget (or a virtual sortBy custom widget).\"\n );\n }\n const adaptedAroundRadius = `${parseFloat(aroundRadius) / 1000} km`; // aroundRadius is in meters\n return `${this.configuration.geoLocationField}:(${aroundLatLng}, ${adaptedAroundRadius})`;\n }\n\n if (insidePolygon) {\n let coordinates = insidePolygon;\n if (Array.isArray(insidePolygon)) {\n coordinates = insidePolygon.flat().join(\",\");\n }\n return `${this.configuration.geoLocationField}:(${coordinates})`;\n }\n }\n\n _adaptFilters(instantsearchParams) {\n const adaptedFilters = [];\n\n // `filters` can be used with the `Configure` widget\n // However the format needs to be in the Typesense filter_by format, instead of Algolia filter format.\n if (instantsearchParams.filters) {\n adaptedFilters.push(instantsearchParams.filters);\n }\n adaptedFilters.push(this._adaptFacetFilters(instantsearchParams.facetFilters));\n adaptedFilters.push(this._adaptNumericFilters(instantsearchParams.numericFilters));\n adaptedFilters.push(this._adaptGeoFilter(instantsearchParams));\n\n return adaptedFilters.filter((filter) => filter && filter !== \"\").join(\" && \");\n }\n\n _adaptIndexName(indexName) {\n return indexName.match(this.constructor.INDEX_NAME_MATCHING_REGEX)[1];\n }\n\n _adaptSortBy(indexName) {\n return indexName.match(this.constructor.INDEX_NAME_MATCHING_REGEX)[3];\n }\n\n _buildSearchParameters(instantsearchRequest) {\n const params = instantsearchRequest.params;\n const indexName = instantsearchRequest.indexName;\n const adaptedCollectionName = this._adaptIndexName(indexName);\n\n // Convert all common parameters to snake case\n const snakeCasedAdditionalSearchParameters = {};\n for (const [key, value] of Object.entries(this.additionalSearchParameters)) {\n snakeCasedAdditionalSearchParameters[this._camelToSnakeCase(key)] = value;\n }\n\n // Override, collection specific parameters\n if (this.collectionSpecificSearchParameters[adaptedCollectionName]) {\n for (const [key, value] of Object.entries(this.collectionSpecificSearchParameters[adaptedCollectionName])) {\n snakeCasedAdditionalSearchParameters[this._camelToSnakeCase(key)] = value;\n }\n }\n\n const typesenseSearchParams = Object.assign({}, snakeCasedAdditionalSearchParameters);\n\n const adaptedSortBy = this._adaptSortBy(indexName);\n\n Object.assign(typesenseSearchParams, {\n collection: adaptedCollectionName,\n q: params.query === \"\" || params.query === undefined ? \"*\" : params.query,\n facet_by: [params.facets].flat().join(\",\"),\n filter_by: this._adaptFilters(params) || snakeCasedAdditionalSearchParameters.filter_by,\n sort_by: adaptedSortBy || snakeCasedAdditionalSearchParameters.sort_by,\n max_facet_values: params.maxValuesPerFacet,\n page: (params.page || 0) + 1,\n });\n\n if (params.hitsPerPage) {\n typesenseSearchParams.per_page = params.hitsPerPage;\n }\n\n if (params.facetQuery) {\n typesenseSearchParams.facet_query = `${params.facetName}:${params.facetQuery}`;\n typesenseSearchParams.per_page = 0;\n }\n\n // console.log(params);\n // console.log(typesenseSearchParams);\n\n // Filter out empty or null values, so we don't accidentally override values set in presets\n // eslint-disable-next-line no-unused-vars\n return Object.fromEntries(Object.entries(typesenseSearchParams).filter(([_, v]) => v != null && v !== \"\"));\n }\n\n _camelToSnakeCase(str) {\n return str\n .split(/(?=[A-Z])/)\n .join(\"_\")\n .toLowerCase();\n }\n\n async request() {\n const searches = this.instantsearchRequests.map((instantsearchRequest) =>\n this._buildSearchParameters(instantsearchRequest)\n );\n\n return this.typesenseClient.multiSearch.perform({ searches: searches });\n }\n}\n","\"use strict\";\n\nimport { utils } from \"./support/utils\";\n\nexport class SearchResponseAdapter {\n constructor(typesenseResponse, instantsearchRequest, configuration) {\n this.typesenseResponse = typesenseResponse;\n this.instantsearchRequest = instantsearchRequest;\n this.configuration = configuration;\n }\n\n _adaptGroupedHits(typesenseGroupedHits) {\n let adaptedResult = [];\n\n adaptedResult = typesenseGroupedHits.map((groupedHit) => {\n const adaptedHits = this._adaptHits(groupedHit.hits);\n adaptedHits.forEach((hit) => (hit[\"group_key\"] = groupedHit.group_key));\n return adaptedHits;\n });\n\n // adaptedResult is now in the form of [[{}, {}], [{}, {}], ...]\n // where each element in the outermost array corresponds to a group.\n // We now flatten it to [{}, {}, {}]\n adaptedResult = adaptedResult.flat();\n\n return adaptedResult;\n }\n\n _adaptHits(typesenseHits) {\n let adaptedResult = [];\n adaptedResult = typesenseHits.map((typesenseHit) => {\n const adaptedHit = {\n ...typesenseHit.document,\n };\n adaptedHit.objectID = typesenseHit.document.id;\n adaptedHit._snippetResult = this._adaptHighlightResult(typesenseHit, \"snippet\");\n adaptedHit._highlightResult = this._adaptHighlightResult(typesenseHit, \"value\");\n\n // Add metadata fields to result, if a field with that name doesn't already exist\n [\"text_match\", \"geo_distance_meters\", \"curated\", \"text_match_info\"].forEach((metadataField) => {\n if (Object.keys(typesenseHit).includes(metadataField) && !Object.keys(adaptedHit).includes(metadataField)) {\n adaptedHit[metadataField] = typesenseHit[metadataField];\n }\n });\n\n const geoLocationValue = adaptedHit[this.configuration.geoLocationField];\n if (geoLocationValue) {\n adaptedHit._geoloc = {\n lat: geoLocationValue[0],\n lng: geoLocationValue[1],\n };\n }\n\n return adaptedHit;\n });\n return adaptedResult;\n }\n\n _adaptHighlightResult(typesenseHit, snippetOrValue) {\n const result = {};\n\n // If there is a highlight object available (as of v0.24.0),\n // And the highlight object uses the highlight format available in v0.24.0.rcn32 and above\n // use that instead of the highlights array, since it supports highlights of nested fields\n if (typesenseHit.highlight != null && this.isHighlightPost0240RCN32Format(typesenseHit.highlight)) {\n this.adaptHighlightObject(typesenseHit, result, snippetOrValue);\n } else {\n this.adaptHighlightsArray(typesenseHit, result, snippetOrValue);\n }\n return result;\n }\n\n isHighlightPost0240RCN32Format(highlight) {\n return highlight.full == null && highlight.snippet == null;\n }\n\n adaptHighlightsArray(typesenseHit, result, snippetOrValue) {\n // Algolia lists all searchable attributes in this key, even if there are no matches\n // So do the same and then override highlights\n\n Object.assign(\n result,\n ...Object.entries(typesenseHit.document).map(([attribute, value]) => ({\n [attribute]: {\n value: value,\n matchLevel: \"none\",\n matchedWords: [],\n },\n }))\n );\n\n typesenseHit.highlights.forEach((highlight) => {\n result[highlight.field] = {\n value: highlight[snippetOrValue] || highlight[`${snippetOrValue}s`],\n matchLevel: \"full\",\n matchedWords: highlight.matched_tokens,\n };\n\n if (highlight.indices) {\n result[highlight.field][\"matchedIndices\"] = highlight.indices;\n }\n });\n\n // Now convert any values that have an array value\n // Also, replace highlight tag\n Object.entries(result).forEach(([k, v]) => {\n const attribute = k;\n const { value, matchLevel, matchedWords, matchedIndices } = v;\n if (value == null) {\n result[attribute] = this._adaptHighlightNullValue();\n } else if (Array.isArray(value)) {\n // Algolia lists all values of the key in highlights, even those that don't have any highlights\n // So add all values of the array field, including highlights\n result[attribute] = [];\n typesenseHit.document[attribute].forEach((unhighlightedValueFromArray, index) => {\n if (matchedIndices && matchedIndices.includes(index)) {\n result[attribute].push({\n value: this._adaptHighlightTag(\n `${value[matchedIndices.indexOf(index)]}`,\n this.instantsearchRequest.params.highlightPreTag,\n this.instantsearchRequest.params.highlightPostTag\n ),\n matchLevel: matchLevel,\n matchedWords: matchedWords[index],\n });\n } else if (typeof unhighlightedValueFromArray === \"object\") {\n // Handle arrays of objects\n // Side note: Typesense does not support highlights for nested objects in this `highlights` array,\n // so we pass in an empty object below\n result[attribute].push(this._adaptHighlightInObjectValue(unhighlightedValueFromArray, {}, snippetOrValue));\n } else {\n result[attribute].push({\n value: `${unhighlightedValueFromArray}`,\n matchLevel: \"none\",\n matchedWords: [],\n });\n }\n });\n } else if (typeof value === \"object\") {\n // Handle nested objects\n // Side note: Typesense does not support highlights for nested objects in this `highlights` array,\n // so we pass in an empty object below\n result[attribute] = this._adaptHighlightInObjectValue(value, {}, snippetOrValue);\n } else {\n // Convert all values to strings\n result[attribute].value = this._adaptHighlightTag(\n `${value}`,\n this.instantsearchRequest.params.highlightPreTag,\n this.instantsearchRequest.params.highlightPostTag\n );\n }\n });\n }\n\n adaptHighlightObject(typesenseHit, result, snippetOrValue) {\n Object.assign(\n result,\n this._adaptHighlightInObjectValue(typesenseHit.document, typesenseHit.highlight, snippetOrValue)\n );\n }\n\n _adaptHighlightInObjectValue(objectValue, highlightObjectValue, snippetOrValue) {\n return Object.assign(\n {},\n ...Object.entries(objectValue).map(([attribute, value]) => {\n let adaptedValue;\n if (value == null) {\n adaptedValue = this._adaptHighlightNullValue();\n } else if (Array.isArray(value)) {\n adaptedValue = this._adaptHighlightInArrayValue(\n value,\n highlightObjectValue?.[attribute] ?? [],\n snippetOrValue\n );\n } else if (typeof value === \"object\") {\n adaptedValue = this._adaptHighlightInObjectValue(\n value,\n highlightObjectValue?.[attribute] ?? {},\n snippetOrValue\n );\n } else {\n adaptedValue = this._adaptHighlightInPrimitiveValue(value, highlightObjectValue?.[attribute], snippetOrValue);\n }\n\n return {\n [attribute]: adaptedValue,\n };\n })\n );\n }\n\n _adaptHighlightInArrayValue(arrayValue, highlightArrayValue, snippetOrValue) {\n return arrayValue.map((value, index) => {\n let adaptedValue;\n if (value == null) {\n adaptedValue = this._adaptHighlightNullValue();\n } else if (Array.isArray(value)) {\n adaptedValue = this._adaptHighlightInArrayValue(value, highlightArrayValue?.[index] ?? [], snippetOrValue);\n } else if (typeof value === \"object\") {\n adaptedValue = this._adaptHighlightInObjectValue(value, highlightArrayValue?.[index] ?? {}, snippetOrValue);\n } else {\n adaptedValue = this._adaptHighlightInPrimitiveValue(value, highlightArrayValue?.[index], snippetOrValue);\n }\n return adaptedValue;\n });\n }\n\n _adaptHighlightInPrimitiveValue(primitiveValue, highlightPrimitiveValue, snippetOrValue) {\n if (highlightPrimitiveValue != null) {\n return {\n value: this._adaptHighlightTag(\n `${\n highlightPrimitiveValue[snippetOrValue] ??\n highlightPrimitiveValue[\"highlight\"] ??\n highlightPrimitiveValue[\"snippet\"]\n }`,\n this.instantsearchRequest.params.highlightPreTag,\n this.instantsearchRequest.params.highlightPostTag\n ),\n matchLevel: (highlightPrimitiveValue.matched_tokens || []).length > 0 ? \"full\" : \"none\",\n matchedWords: highlightPrimitiveValue.matched_tokens || [],\n };\n } else {\n return {\n // Convert all values to strings\n value: this._adaptHighlightTag(\n `${primitiveValue}`,\n this.instantsearchRequest.params.highlightPreTag,\n this.instantsearchRequest.params.highlightPostTag\n ),\n matchLevel: \"none\",\n matchedWords: [],\n };\n }\n }\n\n _adaptHighlightNullValue() {\n return {\n value: \"\",\n matchLevel: \"none\",\n matchedWords: [],\n };\n }\n\n _adaptFacets(typesenseFacetCounts) {\n const adaptedResult = {};\n typesenseFacetCounts.forEach((facet) => {\n Object.assign(adaptedResult, {\n [facet.field_name]: Object.assign({}, ...facet.counts.map((count) => ({ [count.value]: count.count }))),\n });\n });\n return adaptedResult;\n }\n\n _adaptFacetStats(typesenseFacetCounts) {\n const adaptedResult = {};\n typesenseFacetCounts.forEach((facet) => {\n if (Object.keys(facet.stats).length > 0) {\n Object.assign(adaptedResult, {\n [facet.field_name]: facet.stats,\n });\n }\n });\n return adaptedResult;\n }\n\n adapt() {\n const adaptedResult = {\n hits: this.typesenseResponse.grouped_hits\n ? this._adaptGroupedHits(this.typesenseResponse.grouped_hits)\n : this._adaptHits(this.typesenseResponse.hits),\n nbHits: this.typesenseResponse.found,\n page: this.typesenseResponse.page - 1,\n nbPages: this._adaptNumberOfPages(),\n hitsPerPage: this.typesenseResponse.request_params.per_page,\n facets: this._adaptFacets(this.typesenseResponse.facet_counts || []),\n facets_stats: this._adaptFacetStats(this.typesenseResponse.facet_counts || {}),\n query: this.typesenseResponse.request_params.q,\n processingTimeMS: this.typesenseResponse.search_time_ms,\n };\n\n // console.log(adaptedResult);\n return adaptedResult;\n }\n}\n\nObject.assign(SearchResponseAdapter.prototype, utils);\n","\"use strict\";\n\nimport { Configuration } from \"./Configuration\";\nimport { SearchClient as TypesenseSearchClient } from \"typesense\";\nimport { SearchRequestAdapter } from \"./SearchRequestAdapter\";\nimport { SearchResponseAdapter } from \"./SearchResponseAdapter\";\nimport { FacetSearchResponseAdapter } from \"./FacetSearchResponseAdapter\";\n\nexport default class TypesenseInstantsearchAdapter {\n constructor(options) {\n this.updateConfiguration(options);\n this.searchClient = {\n clearCache: () => this.clearCache(),\n search: (instantsearchRequests) => this.searchTypesenseAndAdapt(instantsearchRequests),\n searchForFacetValues: (instantsearchRequests) =>\n this.searchTypesenseForFacetValuesAndAdapt(instantsearchRequests),\n };\n }\n\n async searchTypesenseAndAdapt(instantsearchRequests) {\n let typesenseResponse;\n try {\n typesenseResponse = await this._adaptAndPerformTypesenseRequest(instantsearchRequests);\n\n const adaptedResponses = typesenseResponse.results.map((typesenseResult, index) => {\n this._validateTypesenseResult(typesenseResult);\n const responseAdapter = new SearchResponseAdapter(\n typesenseResult,\n instantsearchRequests[index],\n this.configuration\n );\n return responseAdapter.adapt();\n });\n\n return {\n results: adaptedResponses,\n };\n } catch (error) {\n console.error(error);\n throw error;\n }\n }\n\n async searchTypesenseForFacetValuesAndAdapt(instantsearchRequests) {\n let typesenseResponse;\n try {\n typesenseResponse = await this._adaptAndPerformTypesenseRequest(instantsearchRequests);\n\n const adaptedResponses = typesenseResponse.results.map((typesenseResult, index) => {\n this._validateTypesenseResult(typesenseResult);\n const responseAdapter = new FacetSearchResponseAdapter(\n typesenseResult,\n instantsearchRequests[index],\n this.configuration\n );\n return responseAdapter.adapt();\n });\n\n return adaptedResponses;\n } catch (error) {\n console.error(error);\n throw error;\n }\n }\n\n async _adaptAndPerformTypesenseRequest(instantsearchRequests) {\n const requestAdapter = new SearchRequestAdapter(instantsearchRequests, this.typesenseClient, this.configuration);\n const typesenseResponse = await requestAdapter.request();\n return typesenseResponse;\n }\n\n clearCache() {\n this.typesenseClient = new TypesenseSearchClient(this.configuration.server);\n return this.searchClient;\n }\n\n updateConfiguration(options) {\n this.configuration = new Configuration(options);\n this.configuration.validate();\n this.typesenseClient = new TypesenseSearchClient(this.configuration.server);\n return true;\n }\n\n _validateTypesenseResult(typesenseResult) {\n if (typesenseResult.error) {\n throw new Error(`${typesenseResult.code} - ${typesenseResult.error}`);\n }\n if (!typesenseResult.hits && !typesenseResult.grouped_hits) {\n throw new Error(`Did not find any hits. ${typesenseResult.code} - ${typesenseResult.error}`);\n }\n }\n}\n","export const utils = {\n _adaptHighlightTag(value, highlightPreTag, highlightPostTag) {\n return value\n .replace(new RegExp(\"\", \"g\"), highlightPreTag || \"\")\n .replace(new RegExp(\"\", \"g\"), highlightPostTag || \"\");\n },\n _adaptNumberOfPages() {\n const result = this.typesenseResponse.found / this.typesenseResponse.request_params.per_page;\n if (Number.isFinite(result)) {\n return Math.ceil(result);\n } else {\n return 1;\n }\n },\n};\n","import Client from './Typesense/Client'\r\nimport SearchClient from './Typesense/SearchClient'\r\nimport * as Errors from './Typesense/Errors'\r\n\r\nexport { Client, SearchClient, Errors }\r\nexport default { Client, SearchClient, Errors }\r\n","import Aliases, { CollectionAliasSchema } from './Aliases'\r\nimport ApiCall from './ApiCall'\r\n\r\nexport default class Alias {\r\n constructor(private name: string, private apiCall: ApiCall) {}\r\n\r\n async retrieve(): Promise {\r\n return this.apiCall.get(this.endpointPath())\r\n }\r\n\r\n async delete(): Promise {\r\n return this.apiCall.delete(this.endpointPath())\r\n }\r\n\r\n private endpointPath(): string {\r\n return `${Aliases.RESOURCEPATH}/${this.name}`\r\n }\r\n}\r\n","import ApiCall from './ApiCall'\r\n\r\nconst RESOURCEPATH = '/aliases'\r\n\r\nexport interface CollectionAliasCreateSchema {\r\n collection_name: string\r\n}\r\n\r\nexport interface CollectionAliasSchema extends CollectionAliasCreateSchema {\r\n name: string\r\n}\r\n\r\nexport interface CollectionAliasesResponseSchema {\r\n aliases: CollectionAliasSchema[]\r\n}\r\n\r\nexport default class Aliases {\r\n constructor(private apiCall: ApiCall) {}\r\n\r\n async upsert(name: string, mapping: CollectionAliasCreateSchema): Promise {\r\n return this.apiCall.put(this.endpointPath(name), mapping)\r\n }\r\n\r\n async retrieve(): Promise {\r\n return this.apiCall.get(RESOURCEPATH)\r\n }\r\n\r\n private endpointPath(aliasName): string {\r\n return `${Aliases.RESOURCEPATH}/${aliasName}`\r\n }\r\n\r\n static get RESOURCEPATH(): string {\r\n return RESOURCEPATH\r\n }\r\n}\r\n","import axios, { AxiosRequestConfig, AxiosResponse, Method } from 'axios'\nimport { Logger } from 'loglevel'\nimport {\n HTTPError,\n ObjectAlreadyExists,\n ObjectNotFound,\n ObjectUnprocessable,\n RequestMalformed,\n RequestUnauthorized,\n ServerError\n} from './Errors'\nimport TypesenseError from './Errors/TypesenseError'\nimport Configuration, { NodeConfiguration } from './Configuration'\n\nconst APIKEYHEADERNAME = 'X-TYPESENSE-API-KEY'\nconst HEALTHY = true\nconst UNHEALTHY = false\n\ninterface Node extends NodeConfiguration {\n isHealthy: boolean\n index: string | number\n}\n\nexport default class ApiCall {\n private readonly apiKey: string\n private readonly nodes: Node[]\n private readonly nearestNode: Node\n private readonly connectionTimeoutSeconds: number\n private readonly healthcheckIntervalSeconds: number\n private readonly retryIntervalSeconds: number\n private readonly sendApiKeyAsQueryParam?: boolean\n private readonly numRetriesPerRequest: number\n private readonly additionalUserHeaders?: Record\n\n private readonly logger: Logger\n private currentNodeIndex: number\n\n constructor(private configuration: Configuration) {\n this.apiKey = this.configuration.apiKey\n this.nodes =\n this.configuration.nodes == null ? this.configuration.nodes : JSON.parse(JSON.stringify(this.configuration.nodes)) // Make a copy, since we'll be adding additional metadata to the nodes\n this.nearestNode =\n this.configuration.nearestNode == null\n ? this.configuration.nearestNode\n :JSON.parse(JSON.stringify(this.configuration.nearestNode))\n this.connectionTimeoutSeconds = this.configuration.connectionTimeoutSeconds\n this.healthcheckIntervalSeconds = this.configuration.healthcheckIntervalSeconds\n this.numRetriesPerRequest = this.configuration.numRetries\n this.retryIntervalSeconds = this.configuration.retryIntervalSeconds\n this.sendApiKeyAsQueryParam = this.configuration.sendApiKeyAsQueryParam\n this.additionalUserHeaders = this.configuration.additionalHeaders\n\n this.logger = this.configuration.logger\n\n this.initializeMetadataForNodes()\n this.currentNodeIndex = -1\n }\n\n async get(\n endpoint: string,\n queryParameters: any = {},\n {\n abortSignal = null,\n responseType = undefined\n }: { abortSignal?: any; responseType?: AxiosRequestConfig['responseType'] | undefined } = {}\n ): Promise {\n return this.performRequest('get', endpoint, { queryParameters, abortSignal, responseType })\n }\n\n async delete(endpoint: string, queryParameters: any = {}): Promise {\n return this.performRequest('delete', endpoint, { queryParameters })\n }\n\n async post(\n endpoint: string,\n bodyParameters: any = {},\n queryParameters: any = {},\n additionalHeaders: any = {}\n ): Promise {\n return this.performRequest('post', endpoint, { queryParameters, bodyParameters, additionalHeaders })\n }\n\n async put(endpoint: string, bodyParameters: any = {}, queryParameters: any = {}): Promise {\n return this.performRequest('put', endpoint, { queryParameters, bodyParameters })\n }\n\n async patch(endpoint: string, bodyParameters: any = {}, queryParameters: any = {}): Promise {\n return this.performRequest('patch', endpoint, { queryParameters, bodyParameters })\n }\n\n async performRequest(\n requestType: Method,\n endpoint: string,\n {\n queryParameters = null,\n bodyParameters = null,\n additionalHeaders = {},\n abortSignal = null,\n responseType = undefined\n }: {\n queryParameters?: any\n bodyParameters?: any\n additionalHeaders?: any\n abortSignal?: any\n responseType?: AxiosRequestConfig['responseType'] | undefined\n }\n ): Promise {\n this.configuration.validate()\n\n const requestNumber = Date.now()\n let lastException\n this.logger.debug(`Request #${requestNumber}: Performing ${requestType.toUpperCase()} request: ${endpoint}`)\n for (let numTries = 1; numTries <= this.numRetriesPerRequest + 1; numTries++) {\n let node = this.getNextNode(requestNumber)\n this.logger.debug(\n `Request #${requestNumber}: Attempting ${requestType.toUpperCase()} request Try #${numTries} to Node ${\n node.index\n }`\n )\n\n if (abortSignal && abortSignal.aborted) {\n return Promise.reject(new Error('Request aborted by caller.'))\n }\n\n let abortListener\n\n try {\n let requestOptions: AxiosRequestConfig = {\n method: requestType,\n url: this.uriFor(endpoint, node),\n headers: Object.assign({}, this.defaultHeaders(), additionalHeaders, this.additionalUserHeaders),\n timeout: this.connectionTimeoutSeconds * 1000,\n maxContentLength: Infinity,\n maxBodyLength: Infinity,\n responseType,\n validateStatus: (status) => {\n /* Override default validateStatus, which only considers 2xx a success.\n In our case, if the server returns any HTTP code, we will handle it below.\n We do this to be able to raise custom errors based on response code.\n */\n return status > 0\n },\n transformResponse: [\n (data, headers) => {\n let transformedData = data\n if (\n headers !== undefined &&\n typeof data === 'string' &&\n headers['content-type'] &&\n headers['content-type'].startsWith('application/json')\n ) {\n transformedData = JSON.parse(data)\n }\n return transformedData\n }\n ]\n }\n\n if (queryParameters && Object.keys(queryParameters).length !== 0) {\n requestOptions.params = queryParameters\n }\n\n if (this.sendApiKeyAsQueryParam) {\n requestOptions.params = requestOptions.params || {}\n requestOptions.params['x-typesense-api-key'] = this.apiKey\n }\n\n if (\n bodyParameters &&\n ((typeof bodyParameters === 'string' && bodyParameters.length !== 0) ||\n (typeof bodyParameters === 'object' && Object.keys(bodyParameters).length !== 0))\n ) {\n requestOptions.data = bodyParameters\n }\n\n // Translate from user-provided AbortController to the Axios request cancel mechanism.\n if (abortSignal) {\n const cancelToken = axios.CancelToken\n const source = cancelToken.source()\n abortListener = () => source.cancel()\n abortSignal.addEventListener('abort', abortListener)\n requestOptions.cancelToken = source.token\n }\n\n let response = await axios(requestOptions)\n if (response.status >= 1 && response.status <= 499) {\n // Treat any status code > 0 and < 500 to be an indication that node is healthy\n // We exclude 0 since some clients return 0 when request fails\n this.setNodeHealthcheck(node, HEALTHY)\n }\n this.logger.debug(\n `Request #${requestNumber}: Request to Node ${node.index} was made. Response Code was ${response.status}.`\n )\n\n if (response.status >= 200 && response.status < 300) {\n // If response is 2xx return a resolved promise\n return Promise.resolve(response.data)\n } else if (response.status < 500) {\n // Next, if response is anything but 5xx, don't retry, return a custom error\n return Promise.reject(this.customErrorForResponse(response, response.data?.message))\n } else {\n // Retry all other HTTP errors (HTTPStatus > 500)\n // This will get caught by the catch block below\n throw this.customErrorForResponse(response, response.data?.message)\n }\n } catch (error: any) {\n // This block handles retries for HTTPStatus > 500 and network layer issues like connection timeouts\n this.setNodeHealthcheck(node, UNHEALTHY)\n lastException = error\n this.logger.warn(\n `Request #${requestNumber}: Request to Node ${node.index} failed due to \"${error.code} ${error.message}${\n error.response == null ? '' : ' - ' + JSON.stringify(error.response?.data)\n }\"`\n )\n // this.logger.debug(error.stack)\n this.logger.warn(\n `Request #${requestNumber}: Sleeping for ${this.retryIntervalSeconds}s and then retrying request...`\n )\n await this.timer(this.retryIntervalSeconds)\n } finally {\n if (abortSignal && abortListener) {\n abortSignal.removeEventListener('abort', abortListener)\n }\n }\n }\n this.logger.debug(`Request #${requestNumber}: No retries left. Raising last error`)\n return Promise.reject(lastException)\n }\n\n // Attempts to find the next healthy node, looping through the list of nodes once.\n // But if no healthy nodes are found, it will just return the next node, even if it's unhealthy\n // so we can try the request for good measure, in case that node has become healthy since\n getNextNode(requestNumber: number = 0): Node {\n // Check if nearestNode is set and is healthy, if so return it\n if (this.nearestNode != null) {\n this.logger.debug(\n `Request #${requestNumber}: Nodes Health: Node ${this.nearestNode.index} is ${\n this.nearestNode.isHealthy === true ? 'Healthy' : 'Unhealthy'\n }`\n )\n if (this.nearestNode.isHealthy === true || this.nodeDueForHealthcheck(this.nearestNode, requestNumber)) {\n this.logger.debug(`Request #${requestNumber}: Updated current node to Node ${this.nearestNode.index}`)\n return this.nearestNode\n }\n this.logger.debug(`Request #${requestNumber}: Falling back to individual nodes`)\n }\n\n // Fallback to nodes as usual\n this.logger.debug(\n `Request #${requestNumber}: Nodes Health: ${this.nodes\n .map((node) => `Node ${node.index} is ${node.isHealthy === true ? 'Healthy' : 'Unhealthy'}`)\n .join(' || ')}`\n )\n let candidateNode: Node = this.nodes[0]\n for (let i = 0; i <= this.nodes.length; i++) {\n this.currentNodeIndex = (this.currentNodeIndex + 1) % this.nodes.length\n candidateNode = this.nodes[this.currentNodeIndex]\n if (candidateNode.isHealthy === true || this.nodeDueForHealthcheck(candidateNode, requestNumber)) {\n this.logger.debug(`Request #${requestNumber}: Updated current node to Node ${candidateNode.index}`)\n return candidateNode\n }\n }\n\n // None of the nodes are marked healthy, but some of them could have become healthy since last health check.\n // So we will just return the next node.\n this.logger.debug(\n `Request #${requestNumber}: No healthy nodes were found. Returning the next node, Node ${candidateNode.index}`\n )\n return candidateNode\n }\n\n nodeDueForHealthcheck(node, requestNumber: number = 0): boolean {\n const isDueForHealthcheck = Date.now() - node.lastAccessTimestamp > this.healthcheckIntervalSeconds * 1000\n if (isDueForHealthcheck) {\n this.logger.debug(\n `Request #${requestNumber}: Node ${node.index} has exceeded healtcheckIntervalSeconds of ${this.healthcheckIntervalSeconds}. Adding it back into rotation.`\n )\n }\n return isDueForHealthcheck\n }\n\n initializeMetadataForNodes(): void {\n if (this.nearestNode != null) {\n this.nearestNode.index = 'nearestNode'\n this.setNodeHealthcheck(this.nearestNode, HEALTHY)\n }\n\n this.nodes.forEach((node, i) => {\n node.index = i\n this.setNodeHealthcheck(node, HEALTHY)\n })\n }\n\n setNodeHealthcheck(node, isHealthy): void {\n node.isHealthy = isHealthy\n node.lastAccessTimestamp = Date.now()\n }\n\n uriFor(endpoint: string, node): string {\n if (node.url != null) {\n return `${node.url}${endpoint}`\n }\n return `${node.protocol}://${node.host}:${node.port}${node.path}${endpoint}`\n }\n\n defaultHeaders(): any {\n let defaultHeaders = {}\n if (!this.sendApiKeyAsQueryParam) {\n defaultHeaders[APIKEYHEADERNAME] = this.apiKey\n }\n defaultHeaders['Content-Type'] = 'application/json'\n return defaultHeaders\n }\n\n async timer(seconds): Promise {\n return new Promise((resolve) => setTimeout(resolve, seconds * 1000))\n }\n\n customErrorForResponse(response: AxiosResponse, messageFromServer: string): TypesenseError {\n let errorMessage = `Request failed with HTTP code ${response.status}`\n if (typeof messageFromServer === 'string' && messageFromServer.trim() !== '') {\n errorMessage += ` | Server said: ${messageFromServer}`\n }\n\n let error = new TypesenseError(errorMessage)\n\n if (response.status === 400) {\n error = new RequestMalformed(errorMessage)\n } else if (response.status === 401) {\n error = new RequestUnauthorized(errorMessage)\n } else if (response.status === 404) {\n error = new ObjectNotFound(errorMessage)\n } else if (response.status === 409) {\n error = new ObjectAlreadyExists(errorMessage)\n } else if (response.status === 422) {\n error = new ObjectUnprocessable(errorMessage)\n } else if (response.status >= 500 && response.status <= 599) {\n error = new ServerError(errorMessage)\n } else {\n error = new HTTPError(errorMessage)\n }\n\n error.httpStatus = response.status\n\n return error\n }\n}\n","import Configuration, { ConfigurationOptions } from './Configuration'\nimport ApiCall from './ApiCall'\nimport Collections from './Collections'\nimport Collection from './Collection'\nimport Aliases from './Aliases'\nimport Alias from './Alias'\nimport Keys from './Keys'\nimport Key from './Key'\nimport Debug from './Debug'\nimport Metrics from './Metrics'\nimport Health from './Health'\nimport Operations from './Operations'\nimport MultiSearch from './MultiSearch'\nimport Presets from './Presets'\nimport Preset from './Preset'\n\nexport default class Client {\n configuration: Configuration\n apiCall: ApiCall\n debug: Debug\n metrics: Metrics\n health: Health\n operations: Operations\n multiSearch: MultiSearch\n private readonly _collections: Collections\n private readonly individualCollections: Record\n private readonly _aliases: Aliases\n private readonly individualAliases: Record\n private readonly _keys: Keys\n private readonly individualKeys: Record\n private readonly _presets: Presets\n private readonly individualPresets: Record\n\n constructor(options: ConfigurationOptions) {\n options.sendApiKeyAsQueryParam = options.sendApiKeyAsQueryParam ?? false\n\n this.configuration = new Configuration(options)\n this.apiCall = new ApiCall(this.configuration)\n this.debug = new Debug(this.apiCall)\n this.metrics = new Metrics(this.apiCall)\n this.health = new Health(this.apiCall)\n this.operations = new Operations(this.apiCall)\n this.multiSearch = new MultiSearch(this.apiCall, this.configuration)\n this._collections = new Collections(this.apiCall)\n this.individualCollections = {}\n this._aliases = new Aliases(this.apiCall)\n this.individualAliases = {}\n this._keys = new Keys(this.apiCall)\n this.individualKeys = {}\n this._presets = new Presets(this.apiCall)\n this.individualPresets = {}\n }\n\n collections(): Collections\n collections = {}>(collectionName: string): Collection\n collections(collectionName?: string): Collections | Collection {\n if (collectionName === undefined) {\n return this._collections\n } else {\n if (this.individualCollections[collectionName] === undefined) {\n this.individualCollections[collectionName] = new Collection(collectionName, this.apiCall, this.configuration)\n }\n return this.individualCollections[collectionName]\n }\n }\n\n aliases(): Aliases\n aliases(aliasName: string): Alias\n aliases(aliasName?: string): Aliases | Alias {\n if (aliasName === undefined) {\n return this._aliases\n } else {\n if (this.individualAliases[aliasName] === undefined) {\n this.individualAliases[aliasName] = new Alias(aliasName, this.apiCall)\n }\n return this.individualAliases[aliasName]\n }\n }\n\n keys(): Keys\n keys(id: number): Key\n keys(id?: number): Keys | Key {\n if (id === undefined) {\n return this._keys\n } else {\n if (this.individualKeys[id] === undefined) {\n this.individualKeys[id] = new Key(id, this.apiCall)\n }\n return this.individualKeys[id]\n }\n }\n\n presets(): Presets\n presets(id: string): Preset\n presets(id?: string): Presets | Preset {\n if (id === undefined) {\n return this._presets\n } else {\n if (this.individualPresets[id] === undefined) {\n this.individualPresets[id] = new Preset(id, this.apiCall)\n }\n return this.individualPresets[id]\n }\n }\n}\n","import ApiCall from './ApiCall'\r\nimport Collections, { CollectionCreateSchema } from './Collections'\r\nimport Documents, { DocumentSchema } from './Documents'\r\nimport { ObjectNotFound } from './Errors'\r\nimport Overrides from './Overrides'\r\nimport Override from './Override'\r\nimport Synonyms from './Synonyms'\r\nimport Synonym from './Synonym'\r\nimport { Document } from './Document'\r\n\r\nexport type FieldType =\r\n | 'string'\r\n | 'int32'\r\n | 'int64'\r\n | 'float'\r\n | 'bool'\r\n | 'geopoint'\r\n | 'geopoint[]'\r\n | 'string[]'\r\n | 'int32[]'\r\n | 'int64[]'\r\n | 'float[]'\r\n | 'bool[]'\r\n | 'object'\r\n | 'object[]'\r\n | 'auto'\r\n | 'string*'\r\n\r\nexport interface CollectionFieldSchema {\r\n name: string\r\n type: FieldType\r\n optional?: boolean\r\n facet?: boolean\r\n index?: boolean\r\n sort?: boolean\r\n locale?: string\r\n infix?: boolean\r\n num_dim?: number\r\n [t: string]: unknown\r\n}\r\n\r\nexport interface CollectionSchema extends CollectionCreateSchema {\r\n created_at: number\r\n num_documents: number\r\n num_memory_shards: number\r\n}\r\n\r\nexport interface CollectionUpdateFieldSchema extends CollectionFieldSchema {\r\n drop?: boolean\r\n}\r\n\r\nexport interface CollectionUpdateSchema extends Partial> {\r\n fields?: CollectionUpdateFieldSchema[]\r\n}\r\n\r\nexport default class Collection {\r\n private readonly _documents: Documents\r\n private individualDocuments: Record> = {}\r\n private readonly _overrides: Overrides\r\n private individualOverrides: Record = {}\r\n private readonly _synonyms: Synonyms\r\n private individualSynonyms: Record = {}\r\n\r\n constructor(private readonly name: string, private readonly apiCall: ApiCall, private readonly configuration: any) {\r\n this.name = name\r\n this.apiCall = apiCall\r\n this.configuration = configuration\r\n\r\n this._documents = new Documents(this.name, this.apiCall, this.configuration)\r\n this._overrides = new Overrides(this.name, this.apiCall)\r\n this._synonyms = new Synonyms(this.name, this.apiCall)\r\n }\r\n\r\n async retrieve(): Promise {\r\n return this.apiCall.get(this.endpointPath())\r\n }\r\n\r\n async update(schema: CollectionUpdateSchema): Promise {\r\n return this.apiCall.patch(this.endpointPath(), schema)\r\n }\r\n\r\n async delete(): Promise {\r\n return this.apiCall.delete(this.endpointPath())\r\n }\r\n\r\n async exists(): Promise {\r\n try {\r\n await this.retrieve()\r\n return true\r\n } catch (e) {\r\n if (e instanceof ObjectNotFound) return false\r\n throw e\r\n }\r\n }\r\n\r\n documents(): Documents\r\n documents(documentId: string): Document\r\n documents(documentId?: string): Document | Documents {\r\n if (!documentId) {\r\n return this._documents\r\n } else {\r\n if (this.individualDocuments[documentId] === undefined) {\r\n this.individualDocuments[documentId] = new Document(this.name, documentId, this.apiCall)\r\n }\r\n return this.individualDocuments[documentId]\r\n }\r\n }\r\n\r\n overrides(): Overrides\r\n overrides(overrideId: string): Override\r\n overrides(overrideId?: string): Overrides | Override {\r\n if (overrideId === undefined) {\r\n return this._overrides\r\n } else {\r\n if (this.individualOverrides[overrideId] === undefined) {\r\n this.individualOverrides[overrideId] = new Override(this.name, overrideId, this.apiCall)\r\n }\r\n return this.individualOverrides[overrideId]\r\n }\r\n }\r\n\r\n synonyms(): Synonyms\r\n synonyms(synonymId: string): Synonym\r\n synonyms(synonymId?: string): Synonyms | Synonym {\r\n if (synonymId === undefined) {\r\n return this._synonyms\r\n } else {\r\n if (this.individualSynonyms[synonymId] === undefined) {\r\n this.individualSynonyms[synonymId] = new Synonym(this.name, synonymId, this.apiCall)\r\n }\r\n return this.individualSynonyms[synonymId]\r\n }\r\n }\r\n\r\n private endpointPath(): string {\r\n return `${Collections.RESOURCEPATH}/${this.name}`\r\n }\r\n}\r\n","import ApiCall from './ApiCall'\r\nimport { CollectionFieldSchema, CollectionSchema } from './Collection'\r\n\r\nexport interface CollectionCreateSchema {\r\n name: string\r\n default_sorting_field?: string\r\n fields?: CollectionFieldSchema[]\r\n symbols_to_index?: string[]\r\n token_separators?: string[]\r\n enable_nested_fields?: boolean\r\n}\r\n\r\nexport interface CollectionCreateOptions {\r\n src_name?: string\r\n}\r\n\r\nconst RESOURCEPATH = '/collections'\r\n\r\nexport default class Collections {\r\n constructor(private apiCall: ApiCall) {}\r\n\r\n async create(schema: CollectionCreateSchema, options: CollectionCreateOptions = {}): Promise {\r\n return this.apiCall.post(RESOURCEPATH, schema, options)\r\n }\r\n\r\n async retrieve(): Promise {\r\n return this.apiCall.get(RESOURCEPATH)\r\n }\r\n\r\n static get RESOURCEPATH() {\r\n return RESOURCEPATH\r\n }\r\n}\r\n","import * as logger from 'loglevel'\nimport { Logger, LogLevelDesc } from 'loglevel'\nimport { MissingConfigurationError } from './Errors'\n\nexport interface NodeConfiguration {\n host: string\n port: number\n protocol: string\n path?: string\n url?: string\n}\n\nexport interface ConfigurationOptions {\n apiKey: string\n nodes: NodeConfiguration[]\n randomizeNodes?: boolean\n /**\n * @deprecated\n * masterNode is now consolidated to nodes, starting with Typesense Server v0.12'\n */\n masterNode?: NodeConfiguration\n /**\n * @deprecated\n * readReplicaNodes is now consolidated to nodes, starting with Typesense Server v0.12'\n */\n readReplicaNodes?: NodeConfiguration[]\n nearestNode?: NodeConfiguration\n connectionTimeoutSeconds?: number\n timeoutSeconds?: number\n healthcheckIntervalSeconds?: number\n numRetries?: number\n retryIntervalSeconds?: number\n sendApiKeyAsQueryParam?: boolean | undefined\n useServerSideSearchCache?: boolean\n cacheSearchResultsForSeconds?: number\n additionalHeaders?: Record\n\n logLevel?: LogLevelDesc\n logger?: Logger\n}\n\nexport default class Configuration {\n readonly nodes: NodeConfiguration[]\n readonly nearestNode?: NodeConfiguration\n readonly connectionTimeoutSeconds: number\n readonly healthcheckIntervalSeconds: number\n readonly numRetries: number\n readonly retryIntervalSeconds: number\n readonly apiKey: string\n readonly sendApiKeyAsQueryParam?: boolean\n readonly cacheSearchResultsForSeconds: number\n readonly useServerSideSearchCache: boolean\n readonly logger: Logger\n readonly logLevel: LogLevelDesc\n readonly additionalHeaders?: Record\n\n constructor(options: ConfigurationOptions) {\n this.nodes = options.nodes || []\n this.nodes = this.nodes\n .map((node) => this.setDefaultPathInNode(node))\n .map((node) => this.setDefaultPortInNode(node))\n .map((node) => ({ ...node })) as NodeConfiguration[] // Make a deep copy\n\n if (options.randomizeNodes == null) {\n options.randomizeNodes = true\n }\n\n if (options.randomizeNodes === true) {\n this.shuffleArray(this.nodes)\n }\n\n this.nearestNode = options.nearestNode\n this.nearestNode = this.setDefaultPathInNode(this.nearestNode)\n this.nearestNode = this.setDefaultPortInNode(this.nearestNode)\n\n this.connectionTimeoutSeconds = options.connectionTimeoutSeconds || options.timeoutSeconds || 5\n this.healthcheckIntervalSeconds = options.healthcheckIntervalSeconds || 60\n this.numRetries = options.numRetries || this.nodes.length + (this.nearestNode == null ? 0 : 1) || 3\n this.retryIntervalSeconds = options.retryIntervalSeconds || 0.1\n\n this.apiKey = options.apiKey\n this.sendApiKeyAsQueryParam = options.sendApiKeyAsQueryParam // We will set a default for this in Client and SearchClient\n\n this.cacheSearchResultsForSeconds = options.cacheSearchResultsForSeconds || 0 // Disable client-side cache by default\n this.useServerSideSearchCache = options.useServerSideSearchCache || false\n\n this.logger = options.logger || logger\n this.logLevel = options.logLevel || 'warn'\n this.logger.setLevel(this.logLevel)\n\n this.additionalHeaders = options.additionalHeaders\n\n this.showDeprecationWarnings(options)\n this.validate()\n }\n\n validate(): boolean {\n if (this.nodes == null || this.nodes.length === 0 || this.validateNodes()) {\n throw new MissingConfigurationError('Ensure that nodes[].protocol, nodes[].host and nodes[].port are set')\n }\n\n if (this.nearestNode != null && this.isNodeMissingAnyParameters(this.nearestNode)) {\n throw new MissingConfigurationError(\n 'Ensure that nearestNodes.protocol, nearestNodes.host and nearestNodes.port are set'\n )\n }\n\n if (this.apiKey == null) {\n throw new MissingConfigurationError('Ensure that apiKey is set')\n }\n\n return true\n }\n\n private validateNodes(): boolean {\n return this.nodes.some((node) => {\n return this.isNodeMissingAnyParameters(node)\n })\n }\n\n private isNodeMissingAnyParameters(node: NodeConfiguration): boolean {\n return (\n !['protocol', 'host', 'port', 'path'].every((key) => {\n return node.hasOwnProperty(key)\n }) && node.url == null\n )\n }\n\n private setDefaultPathInNode(node: NodeConfiguration | undefined): NodeConfiguration | undefined {\n if (node != null && !node.hasOwnProperty('path')) {\n node.path = ''\n }\n return node\n }\n\n private setDefaultPortInNode(node: NodeConfiguration | undefined): NodeConfiguration | undefined {\n if (node != null && !node.hasOwnProperty('port') && node.hasOwnProperty('protocol')) {\n switch (node.protocol) {\n case 'https':\n node.port = 443\n break\n case 'http':\n node.port = 80\n break\n }\n }\n return node\n }\n\n private showDeprecationWarnings(options: ConfigurationOptions): void {\n if (options.timeoutSeconds) {\n this.logger.warn('Deprecation warning: timeoutSeconds is now renamed to connectionTimeoutSeconds')\n }\n if (options.masterNode) {\n this.logger.warn(\n 'Deprecation warning: masterNode is now consolidated to nodes, starting with Typesense Server v0.12'\n )\n }\n if (options.readReplicaNodes) {\n this.logger.warn(\n 'Deprecation warning: readReplicaNodes is now consolidated to nodes, starting with Typesense Server v0.12'\n )\n }\n }\n\n private shuffleArray(array) {\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1))\n ;[array[i], array[j]] = [array[j], array[i]]\n }\n }\n}\n","import ApiCall from './ApiCall'\r\n\r\nconst RESOURCEPATH = '/debug'\r\n\r\nexport interface DebugResponseSchema {\r\n state: number\r\n version: string\r\n}\r\n\r\nexport default class Debug {\r\n constructor(private apiCall: ApiCall) {}\r\n\r\n async retrieve(): Promise {\r\n return this.apiCall.get(RESOURCEPATH)\r\n }\r\n}\r\n","import ApiCall from './ApiCall'\r\nimport Collections from './Collections'\r\nimport Documents, { DocumentSchema, DocumentWriteParameters } from './Documents'\r\n\r\nexport class Document {\r\n constructor(private collectionName: string, private documentId: string, private apiCall: ApiCall) {}\r\n\r\n async retrieve(): Promise {\r\n return this.apiCall.get(this.endpointPath())\r\n }\r\n\r\n async delete(): Promise {\r\n return this.apiCall.delete(this.endpointPath())\r\n }\r\n\r\n async update(partialDocument: Partial, options: DocumentWriteParameters = {}): Promise {\r\n return this.apiCall.patch(this.endpointPath(), partialDocument, options)\r\n }\r\n\r\n private endpointPath(): string {\r\n return `${Collections.RESOURCEPATH}/${this.collectionName}${Documents.RESOURCEPATH}/${this.documentId}`\r\n }\r\n}\r\n","import type { ReadStream } from 'fs'\r\nimport ApiCall from './ApiCall'\r\nimport Configuration from './Configuration'\r\nimport { ImportError } from './Errors'\r\nimport { SearchOnlyDocuments } from './SearchOnlyDocuments'\r\n\r\n// Todo: use generic to extract filter_by values\r\nexport interface DeleteQuery {\r\n filter_by: string\r\n batch_size?: number\r\n}\r\n\r\nexport interface DeleteResponse {\r\n num_deleted: number\r\n}\r\n\r\ninterface ImportResponseSuccess {\r\n success: true\r\n}\r\n\r\nexport interface ImportResponseFail {\r\n success: false\r\n error: string\r\n document: DocumentSchema\r\n code: number\r\n}\r\n\r\nexport type ImportResponse = ImportResponseSuccess | ImportResponseFail\r\n\r\nexport interface DocumentSchema extends Record {}\r\n\r\nexport interface SearchParams {\r\n // From https://typesense.org/docs/latest/api/documents.html#arguments\r\n q: string\r\n query_by: string\r\n query_by_weights?: string\r\n prefix?: string | boolean // default: true\r\n filter_by?: string\r\n sort_by?: string // default: text match desc\r\n facet_by?: string\r\n max_facet_values?: number\r\n facet_query?: string\r\n facet_query_num_typos?: number\r\n page?: number // default: 1\r\n per_page?: number // default: 10, max 250\r\n group_by?: string\r\n group_limit?: number // default:\r\n include_fields?: string\r\n exclude_fields?: string\r\n highlight_fields?: string // default: all queried fields\r\n highlight_full_fields?: string // default: all fields\r\n highlight_affix_num_tokens?: number // default: 4\r\n highlight_start_tag?: string // default: \r\n highlight_end_tag?: string // default: \r\n snippet_threshold?: number // default: 30\r\n num_typos?: string | number // default: 2\r\n min_len_1typo?: number\r\n min_len_2typo?: number\r\n split_join_tokens?: string\r\n exhaustive_search?: boolean\r\n drop_tokens_threshold?: number // default: 10\r\n typo_tokens_threshold?: number // default: 100\r\n pinned_hits?: string\r\n hidden_hits?: string\r\n limit_hits?: number // default: no limit\r\n pre_segmented_query?: boolean\r\n enable_overrides?: boolean\r\n prioritize_exact_match?: boolean // default: true\r\n prioritize_token_position?: boolean\r\n search_cutoff_ms?: number\r\n use_cache?: boolean\r\n max_candidates?: number\r\n infix?: string\r\n preset?: string\r\n text_match_type?: string\r\n vector_query?: string\r\n}\r\n\r\ntype SearchResponseHighlightObject = {\r\n matched_tokens?: string[]\r\n snippet?: string\r\n value?: string\r\n}\r\n\r\nexport type SearchResponseHighlight = T extends string | number\r\n ? SearchResponseHighlightObject\r\n : {\r\n [TAttribute in keyof T]?: SearchResponseHighlight\r\n }\r\n\r\nexport interface SearchResponseHit {\r\n highlights?: [\r\n {\r\n field: keyof T\r\n snippet?: string\r\n value?: string\r\n snippets?: string[]\r\n indices?: number[]\r\n matched_tokens: string[][] | string[]\r\n }\r\n ]\r\n highlight: SearchResponseHighlight\r\n document: T\r\n text_match: number\r\n text_match_info?: {\r\n best_field_score: string // To prevent scores from being truncated by JSON spec\r\n best_field_weight: number\r\n fields_matched: number\r\n score: string // To prevent scores from being truncated by JSON spec\r\n tokens_matched: number\r\n }\r\n}\r\n\r\nexport interface SearchResponseFacetCountSchema {\r\n counts: {\r\n count: number\r\n highlighted: string\r\n value: string\r\n }[]\r\n field_name: keyof T\r\n stats: {\r\n avg?: number\r\n max?: number\r\n min?: number\r\n sum?: number\r\n }\r\n}\r\n\r\n// Todo: we could infer whether this is a grouped response by adding the search params as a generic\r\nexport interface SearchResponse {\r\n facet_counts?: SearchResponseFacetCountSchema[]\r\n found: number\r\n out_of: number\r\n page: number\r\n request_params: SearchParams\r\n search_time_ms: number\r\n hits?: SearchResponseHit[]\r\n grouped_hits?: {\r\n group_key: string[]\r\n hits: SearchResponseHit[]\r\n }[]\r\n}\r\n\r\nexport interface DocumentWriteParameters {\r\n dirty_values?: 'coerce_or_reject' | 'coerce_or_drop' | 'drop' | 'reject'\r\n action?: 'create' | 'update' | 'upsert' | 'emplace'\r\n}\r\n\r\nexport interface DocumentImportParameters extends DocumentWriteParameters {\r\n batch_size?: number\r\n return_doc?: boolean\r\n return_id?: boolean\r\n}\r\n\r\nexport interface DocumentsExportParameters {\r\n filter_by?: string\r\n include_fields?: string\r\n exclude_fields?: string\r\n}\r\n\r\nexport interface SearchableDocuments {\r\n search(searchParameters: SearchParams, options: SearchOptions): Promise>\r\n clearCache(): void\r\n}\r\n\r\nexport interface WriteableDocuments {\r\n create(document: T, options: DocumentWriteParameters): Promise\r\n upsert(document: T, options: DocumentWriteParameters): Promise\r\n update(document: T, options: DocumentWriteParameters): Promise\r\n delete(idOrQuery: string | DeleteQuery): Promise | Promise\r\n import(documents: T[] | string, options: DocumentWriteParameters): Promise\r\n export(options: DocumentsExportParameters): Promise\r\n}\r\n\r\nexport interface SearchOptions {\r\n cacheSearchResultsForSeconds?: number\r\n abortSignal?: AbortSignal | null\r\n}\r\n\r\nexport default class Documents\r\n extends SearchOnlyDocuments\r\n implements WriteableDocuments\r\n{\r\n constructor(collectionName: string, apiCall: ApiCall, configuration: Configuration) {\r\n super(collectionName, apiCall, configuration)\r\n }\r\n\r\n async create(document: T, options: DocumentWriteParameters = {}): Promise {\r\n if (!document) throw new Error('No document provided')\r\n return this.apiCall.post(this.endpointPath(), document, options)\r\n }\r\n\r\n async upsert(document: T, options: DocumentWriteParameters = {}): Promise {\r\n if (!document) throw new Error('No document provided')\r\n return this.apiCall.post(this.endpointPath(), document, Object.assign({}, options, { action: 'upsert' }))\r\n }\r\n\r\n async update(document: T, options: DocumentWriteParameters = {}): Promise {\r\n if (!document) throw new Error('No document provided')\r\n return this.apiCall.post(this.endpointPath(), document, Object.assign({}, options, { action: 'update' }))\r\n }\r\n\r\n async delete(idOrQuery: DeleteQuery): Promise\r\n async delete(idOrQuery: string): Promise\r\n async delete(idOrQuery: string | DeleteQuery = {} as DeleteQuery): Promise {\r\n if (typeof idOrQuery === 'string') {\r\n return this.apiCall.delete(this.endpointPath(idOrQuery), idOrQuery)\r\n } else {\r\n return this.apiCall.delete(this.endpointPath(), idOrQuery)\r\n }\r\n }\r\n\r\n async createMany(documents: T[], options: DocumentImportParameters = {}) {\r\n this.configuration.logger.warn(\r\n 'createMany is deprecated and will be removed in a future version. Use import instead, which now takes both an array of documents or a JSONL string of documents'\r\n )\r\n return this.import(documents, options)\r\n }\r\n\r\n /**\r\n * Import a set of documents in a batch.\r\n * @param {string|Array} documents - Can be a JSONL string of documents or an array of document objects.\r\n * @param options\r\n * @return {string|Array} Returns a JSONL string if the input was a JSONL string, otherwise it returns an array of results.\r\n */\r\n async import(documents: string, options?: DocumentImportParameters): Promise\r\n async import(documents: T[], options?: DocumentImportParameters): Promise\r\n async import(documents: T[] | string, options: DocumentImportParameters = {}): Promise {\r\n let documentsInJSONLFormat\r\n if (Array.isArray(documents)) {\r\n try {\r\n documentsInJSONLFormat = documents.map((document) => JSON.stringify(document)).join('\\n')\r\n } catch (error: any) {\r\n // if rangeerror, throw custom error message\r\n if (RangeError instanceof error && error?.includes('Too many properties to enumerate')) {\r\n throw new Error(`${error}\r\n It looks like you have reached a Node.js limit that restricts the number of keys in an Object: https://stackoverflow.com/questions/9282869/are-there-limits-to-the-number-of-properties-in-a-javascript-object\r\n\r\n Please try reducing the number of keys in your document, or using CURL to import your data.\r\n `)\r\n }\r\n\r\n // else, throw the non-range error anyways\r\n throw new Error(error)\r\n }\r\n } else {\r\n documentsInJSONLFormat = documents\r\n }\r\n\r\n const resultsInJSONLFormat = await this.apiCall.performRequest('post', this.endpointPath('import'), {\r\n queryParameters: options,\r\n bodyParameters: documentsInJSONLFormat,\r\n additionalHeaders: { 'Content-Type': 'text/plain' }\r\n })\r\n\r\n if (Array.isArray(documents)) {\r\n const resultsInJSONFormat = resultsInJSONLFormat.split('\\n').map((r) => JSON.parse(r)) as ImportResponse[]\r\n const failedItems = resultsInJSONFormat.filter((r) => r.success === false)\r\n if (failedItems.length > 0) {\r\n throw new ImportError(\r\n `${resultsInJSONFormat.length - failedItems.length} documents imported successfully, ${\r\n failedItems.length\r\n } documents failed during import. Use \\`error.importResults\\` from the raised exception to get a detailed error reason for each document.`,\r\n resultsInJSONFormat\r\n )\r\n } else {\r\n return resultsInJSONFormat\r\n }\r\n } else {\r\n return resultsInJSONLFormat as string\r\n }\r\n }\r\n\r\n /**\r\n * Returns a JSONL string for all the documents in this collection\r\n */\r\n async export(options: DocumentsExportParameters = {}): Promise {\r\n return this.apiCall.get(this.endpointPath('export'), options)\r\n }\r\n\r\n /**\r\n * Returns a NodeJS readable stream of JSONL for all the documents in this collection.\r\n */\r\n async exportStream(options: DocumentsExportParameters = {}): Promise {\r\n return this.apiCall.get(this.endpointPath('export'), options, { responseType: 'stream' })\r\n }\r\n}\r\n","import TypesenseError from './TypesenseError'\r\n\r\nexport default class HTTPError extends TypesenseError {}\r\n","import TypesenseError from './TypesenseError'\r\nimport { ImportResponseFail } from '../Documents'\r\n\r\nexport default class ImportError extends TypesenseError {\r\n importResults: ImportResponseFail\r\n constructor(message, importResults) {\r\n super(message)\r\n this.importResults = importResults\r\n }\r\n}\r\n","import TypesenseError from './TypesenseError'\r\n\r\nexport default class MissingConfigurationError extends TypesenseError {}\r\n","import TypesenseError from './TypesenseError'\r\n\r\nexport default class ObjectAlreadyExists extends TypesenseError {}\r\n","import TypesenseError from './TypesenseError'\r\n\r\nexport default class ObjectNotFound extends TypesenseError {}\r\n","import TypesenseError from './TypesenseError'\r\n\r\nexport default class ObjectUnprocessable extends TypesenseError {}\r\n","import TypesenseError from './TypesenseError'\r\n\r\nexport default class RequestMalformed extends TypesenseError {}\r\n","import TypesenseError from './TypesenseError'\r\n\r\nexport default class RequestUnauthorized extends TypesenseError {}\r\n","import TypesenseError from './TypesenseError'\r\n\r\nexport default class ServerError extends TypesenseError {}\r\n","export default class TypesenseError extends Error {\n httpStatus?: number\n\n // Source: https://stackoverflow.com/a/58417721/123545\n constructor(message?: string) {\n super(message)\n this.name = new.target.name\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n","import HTTPError from './HTTPError'\r\nimport MissingConfigurationError from './MissingConfigurationError'\r\nimport ObjectAlreadyExists from './ObjectAlreadyExists'\r\nimport ObjectNotFound from './ObjectNotFound'\r\nimport ObjectUnprocessable from './ObjectUnprocessable'\r\nimport RequestMalformed from './RequestMalformed'\r\nimport RequestUnauthorized from './RequestUnauthorized'\r\nimport ServerError from './ServerError'\r\nimport ImportError from './ImportError'\r\nimport TypesenseError from './TypesenseError'\r\n\r\nexport {\r\n HTTPError,\r\n MissingConfigurationError,\r\n ObjectAlreadyExists,\r\n ObjectNotFound,\r\n ObjectUnprocessable,\r\n RequestMalformed,\r\n RequestUnauthorized,\r\n ServerError,\r\n TypesenseError,\r\n ImportError\r\n}\r\n","import ApiCall from './ApiCall'\r\n\r\nconst RESOURCEPATH = '/health'\r\n\r\nexport interface HealthResponse {\r\n ok: boolean\r\n}\r\n\r\nexport default class Health {\r\n constructor(private apiCall: ApiCall) {}\r\n\r\n async retrieve(): Promise {\r\n return this.apiCall.get(RESOURCEPATH)\r\n }\r\n}\r\n","import ApiCall from './ApiCall'\r\nimport Keys from './Keys'\r\n\r\nexport interface KeyCreateSchema {\r\n actions: string[]\r\n collections: string[]\r\n description?: string\r\n value?: string\r\n expires_at?: number\r\n}\r\n\r\nexport interface KeyDeleteSchema {\r\n id: number\r\n}\r\n\r\nexport interface KeySchema extends KeyCreateSchema {\r\n id: number\r\n}\r\n\r\nexport default class Key {\r\n constructor(private id: number, private apiCall: ApiCall) {}\r\n\r\n async retrieve(): Promise {\r\n return this.apiCall.get(this.endpointPath())\r\n }\r\n\r\n async delete(): Promise {\r\n return this.apiCall.delete(this.endpointPath())\r\n }\r\n\r\n private endpointPath(): string {\r\n return `${Keys.RESOURCEPATH}/${this.id}`\r\n }\r\n}\r\n","import { createHmac } from 'crypto'\r\nimport ApiCall from './ApiCall'\r\nimport { KeyCreateSchema, KeySchema } from './Key'\r\nimport { SearchParams } from './Documents'\r\n\r\nconst RESOURCEPATH = '/keys'\r\n\r\nexport interface KeysRetrieveSchema {\r\n keys: KeySchema[]\r\n}\r\n\r\nexport interface GenerateScopedSearchKeyParams extends Partial {\r\n expires_at?: number\r\n cache_ttl?: number\r\n}\r\n\r\nexport default class Keys {\r\n constructor(private apiCall: ApiCall) {\r\n this.apiCall = apiCall\r\n }\r\n\r\n async create(params: KeyCreateSchema): Promise {\r\n return this.apiCall.post(Keys.RESOURCEPATH, params)\r\n }\r\n\r\n async retrieve(): Promise {\r\n return this.apiCall.get(RESOURCEPATH)\r\n }\r\n\r\n generateScopedSearchKey(searchKey: string, parameters: GenerateScopedSearchKeyParams): string {\r\n // Note: only a key generated with the `documents:search` action will be\r\n // accepted by the server, when usined with the search endpoint.\r\n const paramsJSON = JSON.stringify(parameters)\r\n const digest = Buffer.from(createHmac('sha256', searchKey).update(paramsJSON).digest('base64'))\r\n const keyPrefix = searchKey.substr(0, 4)\r\n const rawScopedKey = `${digest}${keyPrefix}${paramsJSON}`\r\n\r\n return Buffer.from(rawScopedKey).toString('base64')\r\n }\r\n\r\n static get RESOURCEPATH() {\r\n return RESOURCEPATH\r\n }\r\n}\r\n","import ApiCall from './ApiCall'\r\n\r\nconst RESOURCEPATH = '/metrics.json'\r\n\r\nexport interface MetricsResponse {\r\n system_cpu1_active_percentage: string\r\n system_cpu2_active_percentage: string\r\n system_cpu3_active_percentage: string\r\n system_cpu4_active_percentage: string\r\n system_cpu_active_percentage: string\r\n system_disk_total_bytes: string\r\n system_disk_used_bytes: string\r\n system_memory_total_bytes: string\r\n system_memory_used_bytes: string\r\n system_network_received_bytes: string\r\n system_network_sent_bytes: string\r\n typesense_memory_active_bytes: string\r\n typesense_memory_allocated_bytes: string\r\n typesense_memory_fragmentation_ratio: string\r\n typesense_memory_mapped_bytes: string\r\n typesense_memory_metadata_bytes: string\r\n typesense_memory_resident_bytes: string\r\n typesense_memory_retained_bytes: string\r\n}\r\n\r\nexport default class Metrics {\r\n constructor(private apiCall: ApiCall) {}\r\n\r\n async retrieve(): Promise {\r\n return this.apiCall.get(RESOURCEPATH)\r\n }\r\n}\r\n","import ApiCall from './ApiCall'\nimport Configuration from './Configuration'\nimport RequestWithCache from './RequestWithCache'\nimport { DocumentSchema, SearchParams, SearchResponse } from './Documents'\n\nconst RESOURCEPATH = '/multi_search'\n\nexport interface MultiSearchRequestSchema extends SearchParams {\n collection?: string\n 'x-typesense-api-key'?: string\n}\n\nexport interface MultiSearchRequestsSchema {\n searches: MultiSearchRequestSchema[]\n}\n\nexport interface MultiSearchResponse {\n results: SearchResponse[]\n}\n\nexport default class MultiSearch {\n private requestWithCache: RequestWithCache\n\n constructor(\n private apiCall: ApiCall,\n private configuration: Configuration,\n private useTextContentType: boolean = false\n ) {\n this.requestWithCache = new RequestWithCache()\n }\n\n clearCache() {\n this.requestWithCache.clearCache()\n }\n\n async perform(\n searchRequests: MultiSearchRequestsSchema,\n commonParams: Partial = {},\n {\n cacheSearchResultsForSeconds = this.configuration.cacheSearchResultsForSeconds\n }: { cacheSearchResultsForSeconds?: number } = {}\n ): Promise> {\n let additionalHeaders = {}\n if (this.useTextContentType) {\n additionalHeaders['content-type'] = 'text/plain'\n }\n\n let additionalQueryParams = {}\n if (this.configuration.useServerSideSearchCache === true) {\n additionalQueryParams['use_cache'] = true\n }\n const queryParams = Object.assign({}, commonParams, additionalQueryParams)\n\n return this.requestWithCache.perform(\n this.apiCall,\n this.apiCall.post,\n [RESOURCEPATH, searchRequests, queryParams, additionalHeaders],\n { cacheResponseForSeconds: cacheSearchResultsForSeconds }\n ) as Promise>\n }\n}\n","import ApiCall from './ApiCall'\n\nconst RESOURCEPATH = '/operations'\n\nexport default class Operations {\n constructor(private apiCall: ApiCall) {}\n\n async perform(operationName: 'vote' | 'snapshot' | 'cache/clear' | string, queryParameters: Record = {}): Promise {\n return this.apiCall.post(`${RESOURCEPATH}/${operationName}`, {}, queryParameters)\n }\n}\n","import ApiCall from './ApiCall'\r\nimport Collections from './Collections'\r\nimport Overrides, { OverrideCreateSchema } from './Overrides'\r\n\r\nexport interface OverrideSchema extends OverrideCreateSchema {\r\n id: string\r\n}\r\n\r\nexport interface OverrideDeleteSchema {\r\n id: string\r\n}\r\n\r\nexport default class Override {\r\n constructor(private collectionName: string, private overrideId: string, private apiCall: ApiCall) {}\r\n\r\n async retrieve(): Promise {\r\n return this.apiCall.get(this.endpointPath())\r\n }\r\n\r\n async delete(): Promise {\r\n return this.apiCall.delete(this.endpointPath())\r\n }\r\n\r\n private endpointPath(): string {\r\n return `${Collections.RESOURCEPATH}/${this.collectionName}${Overrides.RESOURCEPATH}/${this.overrideId}`\r\n }\r\n}\r\n","import ApiCall from './ApiCall'\r\nimport Collections from './Collections'\r\nimport { OverrideSchema } from './Override'\r\n\r\nconst RESOURCEPATH = '/overrides'\r\n\r\nexport interface OverrideRuleQuerySchema {\r\n query: string\r\n match: 'exact' | 'contains'\r\n}\r\n\r\nexport interface OverrideRuleFilterSchema {\r\n filter_by: string\r\n}\r\n\r\nexport interface OverrideCreateSchema {\r\n rule: OverrideRuleQuerySchema | OverrideRuleFilterSchema\r\n filter_by?: string\r\n sort_by?: string\r\n remove_matched_tokens?: boolean\r\n replace_query?: string\r\n includes?: Array<{\r\n id: string\r\n position: number\r\n }>\r\n excludes?: Array<{ id: string }>\r\n filter_curated_hits?: boolean\r\n effective_from_ts?: number\r\n effective_to_ts?: number\r\n stop_processing?: boolean\r\n}\r\n\r\nexport interface OverridesRetrieveSchema {\r\n overrides: OverrideSchema[]\r\n}\r\n\r\nexport default class Overrides {\r\n constructor(private collectionName: string, private apiCall: ApiCall) {}\r\n\r\n async upsert(overrideId: string, params: OverrideCreateSchema): Promise {\r\n return this.apiCall.put(this.endpointPath(overrideId), params)\r\n }\r\n\r\n async retrieve(): Promise {\r\n return this.apiCall.get(this.endpointPath())\r\n }\r\n\r\n private endpointPath(operation?: string): string {\r\n return `${Collections.RESOURCEPATH}/${this.collectionName}${Overrides.RESOURCEPATH}${\r\n operation === undefined ? '' : '/' + operation\r\n }`\r\n }\r\n\r\n static get RESOURCEPATH(): string {\r\n return RESOURCEPATH\r\n }\r\n}\r\n","import ApiCall from './ApiCall'\nimport Presets, { PresetCreateSchema } from './Presets'\n\nexport interface PresetSchema extends PresetCreateSchema {\n id: string\n}\n\nexport interface PresetDeleteSchema {\n id: string\n}\n\nexport default class Preset {\n constructor(private presetId: string, private apiCall: ApiCall) {}\n\n async retrieve(): Promise {\n return this.apiCall.get(this.endpointPath())\n }\n\n async delete(): Promise {\n return this.apiCall.delete(this.endpointPath())\n }\n\n private endpointPath(): string {\n return `${Presets.RESOURCEPATH}/${this.presetId}`\n }\n}\n","import ApiCall from './ApiCall'\nimport { PresetSchema } from './Preset'\nimport { SearchParams } from './Documents'\nimport { MultiSearchRequestsSchema } from './MultiSearch'\n\nconst RESOURCEPATH = '/presets'\n\nexport interface PresetCreateSchema {\n value: SearchParams | MultiSearchRequestsSchema\n}\n\nexport interface PresetsRetrieveSchema {\n presets: PresetSchema[]\n}\n\nexport default class Presets {\n constructor(private apiCall: ApiCall) {}\n\n async upsert(presetId: string, params: PresetCreateSchema): Promise {\n return this.apiCall.put(this.endpointPath(presetId), params)\n }\n\n async retrieve(): Promise {\n return this.apiCall.get(this.endpointPath())\n }\n\n private endpointPath(operation?: string): string {\n return `${Presets.RESOURCEPATH}${operation === undefined ? '' : '/' + operation}`\n }\n\n static get RESOURCEPATH(): string {\n return RESOURCEPATH\n }\n}\n","const defaultCacheResponseForSeconds = 2 * 60\nconst defaultMaxSize = 100\n\nexport default class RequestWithCache {\n private responseCache: Map = new Map()\n\n clearCache() {\n this.responseCache = new Map()\n }\n\n // Todo: should probably be passed a callback instead, or an apiCall instance. Types are messy this way\n async perform(\n requestContext: any,\n requestFunction: (...params: any) => unknown,\n requestFunctionArguments: any[],\n cacheOptions: CacheOptions\n ): Promise {\n const { cacheResponseForSeconds = defaultCacheResponseForSeconds, maxSize = defaultMaxSize } = cacheOptions\n const isCacheDisabled = cacheResponseForSeconds <= 0 || maxSize <= 0\n\n if (isCacheDisabled) {\n return requestFunction.call(requestContext, ...requestFunctionArguments)\n }\n\n const requestFunctionArgumentsJSON = JSON.stringify(requestFunctionArguments)\n const cacheEntry = this.responseCache.get(requestFunctionArgumentsJSON)\n const now = Date.now()\n\n if (cacheEntry) {\n const isEntryValid = now - cacheEntry.requestTimestamp < cacheResponseForSeconds * 1000\n if (isEntryValid) {\n this.responseCache.delete(requestFunctionArgumentsJSON)\n this.responseCache.set(requestFunctionArgumentsJSON, cacheEntry)\n return Promise.resolve(cacheEntry.response)\n } else {\n this.responseCache.delete(requestFunctionArgumentsJSON)\n }\n }\n const response = await requestFunction.call(requestContext, ...requestFunctionArguments)\n this.responseCache.set(requestFunctionArgumentsJSON, {\n requestTimestamp: now,\n response\n })\n const isCacheOverMaxSize = this.responseCache.size > maxSize\n if (isCacheOverMaxSize) {\n const oldestEntry = this.responseCache.keys().next().value\n this.responseCache.delete(oldestEntry)\n }\n return response as T\n }\n}\n\ninterface CacheOptions {\n cacheResponseForSeconds?: number\n maxSize?: number\n}\n","import Configuration, { ConfigurationOptions } from './Configuration'\nimport ApiCall from './ApiCall'\nimport MultiSearch from './MultiSearch'\nimport { DocumentSchema } from './Documents'\nimport { SearchOnlyCollection } from './SearchOnlyCollection'\n\nexport default class SearchClient {\n public readonly multiSearch: MultiSearch\n private readonly configuration: Configuration\n private readonly apiCall: ApiCall\n private readonly individualCollections: Record\n\n constructor(options: ConfigurationOptions) {\n options.sendApiKeyAsQueryParam = options.sendApiKeyAsQueryParam ?? true\n if (options.sendApiKeyAsQueryParam === true && (options.apiKey || '').length > 2000) {\n console.warn(\n '[typesense] API Key is longer than 2000 characters which is over the allowed limit, so disabling sending it as a query parameter.'\n )\n options.sendApiKeyAsQueryParam = false\n }\n\n this.configuration = new Configuration(options)\n this.apiCall = new ApiCall(this.configuration)\n this.multiSearch = new MultiSearch(this.apiCall, this.configuration, true)\n this.individualCollections = {}\n }\n\n clearCache() {\n this.multiSearch.clearCache()\n\n Object.entries(this.individualCollections).forEach(([_, collection]) => {\n collection.documents().clearCache()\n })\n }\n\n collections(\n collectionName: string\n ): SearchOnlyCollection | SearchOnlyCollection {\n if (!collectionName) {\n throw new Error(\n 'Typesense.SearchClient only supports search operations, so the collectionName that needs to ' +\n 'be searched must be specified. Use Typesense.Client if you need to access the collection object.'\n )\n } else {\n if (this.individualCollections[collectionName] === undefined) {\n this.individualCollections[collectionName] = new SearchOnlyCollection(\n collectionName,\n this.apiCall,\n this.configuration\n )\n }\n return this.individualCollections[collectionName]\n }\n }\n}\n","import { DocumentSchema, SearchableDocuments } from './Documents'\r\nimport ApiCall from './ApiCall'\r\nimport { SearchOnlyDocuments } from './SearchOnlyDocuments'\r\n\r\nexport class SearchOnlyCollection {\r\n private readonly _documents: SearchableDocuments\r\n\r\n constructor(private readonly name: string, private readonly apiCall: ApiCall, private readonly configuration: any) {\r\n this._documents = new SearchOnlyDocuments(this.name, this.apiCall, this.configuration)\r\n }\r\n\r\n documents(): SearchableDocuments {\r\n return this._documents\r\n }\r\n}\r\n","import RequestWithCache from './RequestWithCache'\nimport ApiCall from './ApiCall'\nimport Configuration from './Configuration'\nimport Collections from './Collections'\nimport type { DocumentSchema, SearchableDocuments, SearchOptions, SearchParams, SearchResponse } from './Documents'\n\nconst RESOURCEPATH = '/documents'\n\nexport class SearchOnlyDocuments implements SearchableDocuments {\n protected requestWithCache: RequestWithCache = new RequestWithCache()\n\n constructor(protected collectionName: string, protected apiCall: ApiCall, protected configuration: Configuration) {}\n\n clearCache() {\n this.requestWithCache.clearCache()\n }\n\n async search(\n searchParameters: SearchParams,\n {\n cacheSearchResultsForSeconds = this.configuration.cacheSearchResultsForSeconds,\n abortSignal = null\n }: SearchOptions = {}\n ): Promise> {\n let additionalQueryParams = {}\n if (this.configuration.useServerSideSearchCache === true) {\n additionalQueryParams['use_cache'] = true\n }\n const queryParams = Object.assign({}, searchParameters, additionalQueryParams)\n\n return this.requestWithCache.perform(\n this.apiCall,\n this.apiCall.get,\n [this.endpointPath('search'), queryParams, { abortSignal }],\n {\n cacheResponseForSeconds: cacheSearchResultsForSeconds\n }\n ) as Promise>\n }\n\n protected endpointPath(operation?: string) {\n return `${Collections.RESOURCEPATH}/${this.collectionName}${RESOURCEPATH}${\n operation === undefined ? '' : '/' + operation\n }`\n }\n\n static get RESOURCEPATH() {\n return RESOURCEPATH\n }\n}\n","import ApiCall from './ApiCall'\r\nimport Collections from './Collections'\r\nimport Synonyms, { SynonymCreateSchema } from './Synonyms'\r\n\r\nexport interface SynonymSchema extends SynonymCreateSchema {\r\n id: string\r\n}\r\n\r\nexport interface SynonymDeleteSchema {\r\n id: string\r\n}\r\n\r\nexport default class Synonym {\r\n constructor(private collectionName: string, private synonymId: string, private apiCall: ApiCall) {}\r\n\r\n async retrieve(): Promise {\r\n return this.apiCall.get(this.endpointPath())\r\n }\r\n\r\n async delete(): Promise {\r\n return this.apiCall.delete(this.endpointPath())\r\n }\r\n\r\n private endpointPath(): string {\r\n return `${Collections.RESOURCEPATH}/${this.collectionName}${Synonyms.RESOURCEPATH}/${this.synonymId}`\r\n }\r\n}\r\n","import ApiCall from './ApiCall'\r\nimport Collections from './Collections'\r\nimport { SynonymSchema } from './Synonym'\r\n\r\nconst RESOURCEPATH = '/synonyms'\r\n\r\nexport interface SynonymCreateSchema {\r\n synonyms: string[]\r\n root?: string\r\n locale?: string\r\n symbols_to_index?: string[]\r\n}\r\n\r\nexport interface SynonymsRetrieveSchema {\r\n synonyms: SynonymSchema[]\r\n}\r\n\r\nexport default class Synonyms {\r\n constructor(private collectionName: string, private apiCall: ApiCall) {}\r\n\r\n async upsert(synonymId: string, params: SynonymCreateSchema): Promise {\r\n return this.apiCall.put(this.endpointPath(synonymId), params)\r\n }\r\n\r\n async retrieve(): Promise {\r\n return this.apiCall.get(this.endpointPath())\r\n }\r\n\r\n private endpointPath(operation?: string) {\r\n return `${Collections.RESOURCEPATH}/${this.collectionName}${Synonyms.RESOURCEPATH}${\r\n operation === undefined ? '' : '/' + operation\r\n }`\r\n }\r\n\r\n static get RESOURCEPATH(): string {\r\n return RESOURCEPATH\r\n }\r\n}\r\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar transitionalDefaults = require('../defaults/transitional');\nvar Cancel = require('../cancel/Cancel');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar enhanceError = require('../core/enhanceError');\nvar transitionalDefaults = require('./transitional');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = {\n \"version\": \"0.26.1\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return toString.call(val) === '[object FormData]';\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return toString.call(val) === '[object URLSearchParams]';\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\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'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\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","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return 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(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(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};","////////////////////////////////////////////////////////////////////////////////\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/**\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: any;\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`. May be either a URL or the pieces of a\n * 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 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 // 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","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","import type { Location, Path, To } from \"./history\";\nimport { warning, invariant, parsePath } 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}\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\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport interface Submission {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\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?: any;\n}\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs): Promise | Response | Promise | any;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs): Promise | Response | Promise | any;\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: {\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 formData?: Submission[\"formData\"];\n actionResult?: DataResult;\n defaultShouldRevalidate: boolean;\n }): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\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\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 */\ntype 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 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 detectErrorBoundary: DetectErrorBoundaryFunction,\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 hasErrorBoundary: detectErrorBoundary(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n id,\n hasErrorBoundary: detectErrorBoundary(route),\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n detectErrorBoundary,\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\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 explodes _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 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 const starParam = params[star];\n\n // Apply the splat\n return starParam;\n }\n\n const keyMatch = segment.match(/^:(\\w+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n\n if (optional === \"?\") {\n return param == null ? \"\" : param;\n }\n\n if (param == null) {\n invariant(false, `Missing \":${key}\" param`);\n }\n\n return 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, paramNames] = 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 = paramNames.reduce>(\n (memo, paramName, 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 memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\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 paramNames: string[] = [];\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(/\\/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"/([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\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, paramNames];\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/**\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 (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\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, null, 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 (error) {\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 * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n error?: Error;\n 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 unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\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 DataResult,\n DeferredData,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DeferredResult,\n ErrorResult,\n FormEncType,\n FormMethod,\n DetectErrorBoundaryFunction,\n RedirectResult,\n RouteData,\n AgnosticRouteObject,\n Submission,\n SuccessResult,\n AgnosticRouteMatch,\n ShouldRevalidateFunction,\n RouteManifest,\n ImmutableRouteKey,\n ActionFunction,\n LoaderFunction,\n V7_MutationFormMethod,\n V7_FormMethod,\n HTMLFormMethod,\n MutationFormMethod,\n} from \"./utils\";\nimport {\n ErrorResponse,\n ResultType,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\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 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 * 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, 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,\n opts?: RouterNavigateOptions\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_normalizeFormMethod: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n future?: FutureConfig;\n hydrationData?: HydrationState;\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\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (state: RouterState): void;\n}\n\ninterface UseMatchesMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: unknown;\n handle: unknown;\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: UseMatchesMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\n/**\n * Options for a navigate() call for a Link navigation\n */\ntype LinkNavigateOptions = {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n};\n\n/**\n * Options for a navigate() call for a Form navigation\n */\ntype SubmissionNavigateOptions = {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n formData: FormData;\n};\n\n/**\n * Options to pass to navigate() for either a Link or Form navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions =\n | Omit\n | Omit;\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 };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: FormMethod | V7_FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\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 formData: undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Loading: {\n state: \"loading\";\n formMethod: FormMethod | V7_FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\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}\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};\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};\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 isBrowser =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\";\nconst isServer = !isBrowser;\n\nconst defaultDetectErrorBoundary = (route: AgnosticRouteObject) =>\n Boolean(route.hasErrorBoundary);\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 invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let detectErrorBoundary =\n init.detectErrorBoundary || defaultDetectErrorBoundary;\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 detectErrorBoundary,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_normalizeFormMethod: 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(\n dataRoutes,\n init.history.location,\n init.basename\n );\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 =\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 !initialMatches.some((m) => m.route.lazy) &&\n // And we have to either have no loaders or have been provided hydrationData\n (!initialMatches.some((m) => m.route.loader) || init.hydrationData != null);\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 // 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 // - useRevalidate()\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 from their actions\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\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 deleteBlocker(blockerKey!);\n updateState({ blockers: new Map(router.state.blockers) });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\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 }\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 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(newState: Partial): void {\n state = {\n ...state,\n ...newState,\n };\n subscribers.forEach((subscriber) => subscriber(state));\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 ): 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 for (let [key] of blockerFunctions) {\n deleteBlocker(key);\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 updateState({\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: new Map(state.blockers),\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 // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = 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,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n to,\n future,\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 blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\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 deleteBlocker(blockerKey!);\n updateState({ blockers: new Map(state.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 });\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 submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponse;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: 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 let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, init.basename);\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(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n });\n return;\n }\n\n // Short circuit if it's only a hash change and not a mutation submission\n // For example, on /page#hash and submit a which will\n // default to a navigation to /page\n if (\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches });\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 }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n ...opts.submission,\n };\n loadingNavigation = navigation;\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 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 }\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n ...submission,\n };\n updateState({ navigation });\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 detectErrorBoundary,\n router.basename\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 pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation;\n if (!loadingNavigation) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n ...submission,\n };\n loadingNavigation = navigation;\n }\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 || fetcherSubmission\n ? submission || fetcherSubmission\n : loadingNavigation.formMethod &&\n loadingNavigation.formAction &&\n loadingNavigation.formData &&\n loadingNavigation.formEncType\n ? {\n formMethod: loadingNavigation.formMethod,\n formAction: loadingNavigation.formAction,\n formData: loadingNavigation.formData,\n formEncType: loadingNavigation.formEncType,\n }\n : undefined;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n routesToUse,\n init.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 // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n completeNavigation(location, {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\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 (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: fetcher && fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState({\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\n pendingNavigationLoadId = ++incrementingLoadId;\n revalidatingFetchers.forEach((rf) =>\n fetchControllers.set(rf.key, pendingNavigationController!)\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 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 await startRedirectNavigation(state, redirect, { 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 markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n\n return {\n loaderData,\n errors,\n ...(didAbortFetchLoads || revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n };\n }\n\n function getFetcher(key: string): Fetcher {\n return state.fetchers.get(key) || IDLE_FETCHER;\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,\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\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches = matchRoutes(routesToUse, href, init.basename);\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: href })\n );\n return;\n }\n\n let { path, submission } = normalizeNavigateOptions(\n href,\n future,\n opts,\n true\n );\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, submission);\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(key, routeId, path, match, matches, submission);\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 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);\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n ...submission,\n data: existingFetcher && existingFetcher.data,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, fetcher);\n updateState({ fetchers: new Map(state.fetchers) });\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 actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n detectErrorBoundary,\n router.basename\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by ou 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 if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n fetchRedirectIds.add(key);\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n ...submission,\n data: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n return startRedirectNavigation(state, actionResult, {\n submission,\n isFetchActionRedirect: true,\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 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\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, init.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: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: actionResult.data,\n ...submission,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n routesToUse,\n init.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: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: existingFetcher && existingFetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(staleKey, revalidatingFetcher);\n fetchControllers.set(staleKey, abortController);\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\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 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 return startRedirectNavigation(state, redirect);\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 let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: actionResult.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n\n let didAbortFetchLoads = 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 ...(didAbortFetchLoads ? { 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 submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n // Put this fetcher into it's loading state\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n ...submission,\n data: existingFetcher && existingFetcher.data,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\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 result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n detectErrorBoundary,\n router.basename\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 ou 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 // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n await startRedirectNavigation(state, result);\n return;\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n state.fetchers.delete(key);\n // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n // do we need to behave any differently with our non-redirect errors?\n // What if it was a non-redirect Response?\n updateState({\n fetchers: new Map(state.fetchers),\n errors: {\n [boundaryMatch.route.id]: result.error,\n },\n });\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\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 replace,\n isFetchActionRedirect,\n }: {\n submission?: Submission;\n replace?: boolean;\n isFetchActionRedirect?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(\n state.location,\n redirect.location,\n // TODO: This can be removed once we get rid of useTransition in Remix v2\n {\n _isRedirect: true,\n ...(isFetchActionRedirect ? { _isFetchActionRedirect: true } : {}),\n }\n );\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n // Check if this an absolute external redirect that goes to a new origin\n if (\n ABSOLUTE_URL_REGEX.test(redirect.location) &&\n isBrowser &&\n typeof window?.location !== \"undefined\"\n ) {\n let url = init.history.createURL(redirect.location);\n let isDifferentBasename =\n stripBasename(url.pathname, init.basename || \"/\") == null;\n\n if (window.location.origin !== url.origin || isDifferentBasename) {\n if (replace) {\n window.location.replace(redirect.location);\n } else {\n window.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, formData } = state.navigation;\n if (!submission && formMethod && formAction && formData && formEncType) {\n submission = {\n formMethod,\n formAction,\n formEncType,\n formData,\n };\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 if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n submission &&\n isMutationMethod(submission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...submission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else if (isFetchActionRedirect) {\n // For a fetch action redirect, we kick off a new loading navigation\n // without the fetcher submission, but we send it along for shouldRevalidate\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation: {\n state: \"loading\",\n location: redirectLocation,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n },\n fetcherSubmission: submission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // Otherwise, we kick off a new loading navigation, preserving the\n // submission info for the duration of this navigation\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation: {\n state: \"loading\",\n location: redirectLocation,\n formMethod: submission ? submission.formMethod : undefined,\n formAction: submission ? submission.formAction : undefined,\n formEncType: submission ? submission.formEncType : undefined,\n formData: submission ? submission.formData : undefined,\n },\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 detectErrorBoundary,\n router.basename\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, request.signal),\n f.match,\n f.matches,\n manifest,\n detectErrorBoundary,\n router.basename\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 request.signal,\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n request.signal,\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 setFetcherError(key: string, routeId: string, error: any) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n });\n }\n\n function deleteFetcher(key: string): void {\n if (fetchControllers.has(key)) abortFetcher(key);\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n state.fetchers.delete(key);\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: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): void {\n let doneKeys = [];\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 }\n }\n markFetchersDone(doneKeys);\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 state.blockers.set(key, newBlocker);\n updateState({ blockers: new Map(state.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 || ((location) => location.key);\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 saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\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 inFlightDataRoutes = newRoutes;\n }\n\n router = {\n get basename() {\n return init.basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\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,\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\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n detectErrorBoundary?: DetectErrorBoundaryFunction;\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 detectErrorBoundary =\n opts?.detectErrorBoundary || defaultDetectErrorBoundary;\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n detectErrorBoundary,\n undefined,\n manifest\n );\n let basename = (opts ? opts.basename : null) || \"/\";\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 && !isRedirectResponse(e.response)) {\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 detectErrorBoundary,\n basename,\n true,\n isRouteRequest,\n requestContext\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\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 detectErrorBoundary,\n basename,\n true,\n isRouteRequest,\n requestContext\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\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: RouterNavigateOptions\n): opts is SubmissionNavigateOptions {\n return opts != null && \"formData\" in opts;\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 to: To,\n future: FutureConfig,\n opts?: RouterNavigateOptions,\n isFetcher = false\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponse;\n} {\n let path = typeof to === \"string\" ? to : createPath(to);\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 // Create a Submission on non-GET navigations\n let submission: Submission | undefined;\n if (opts.formData) {\n let formMethod = opts.formMethod || \"get\";\n submission = {\n formMethod: future.v7_normalizeFormMethod\n ? (formMethod.toUpperCase() as V7_FormMethod)\n : (formMethod.toLowerCase() as FormMethod),\n formAction: stripHashFromPath(path),\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData: opts.formData,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n let searchParams = convertFormDataToSearchParams(opts.formData);\n // Since fetcher GET submissions only run a single loader (as opposed to\n // navigation GET submissions which run all loaders), we need to preserve\n // 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 isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n fetchLoadMatches: Map,\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 let defaultShouldRevalidate =\n // Forced revalidation due to submission, useRevalidate, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.toString() === nextUrl.toString() ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search;\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 if (match.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 if (match.route.loader == null) {\n return false;\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 defaultShouldRevalidate ||\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 if fetcher won't be present in the subsequent render\n if (!matches.some((m) => m.route.id === f.routeId)) {\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\n if (!fetcherMatches) {\n revalidatingFetchers.push({ key, ...f, matches: null, match: null });\n return;\n }\n\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n if (cancelledFetcherLoads.includes(key)) {\n revalidatingFetchers.push({\n key,\n matches: fetcherMatches,\n match: fetcherMatch,\n ...f,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // hit a static href, so they _always_ check shouldRevalidate and the\n // default is strictly if a revalidation is explicitly required (action\n // submissions, useRevalidator, X-Remix-Revalidate).\n let 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,\n });\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n matches: fetcherMatches,\n match: fetcherMatch,\n ...f,\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: Parameters[0]\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 detectErrorBoundary: DetectErrorBoundaryFunction,\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 detectErrorBoundary\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 // `detectErrorBoundary` function to set the `hasErrorBoundary` route\n // property since the logic will differ between frameworks.\n hasErrorBoundary: detectErrorBoundary({ ...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 detectErrorBoundary: DetectErrorBoundaryFunction,\n basename = \"/\",\n isStaticRequest: boolean = false,\n isRouteRequest: boolean = false,\n requestContext?: unknown\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({ request, params: match.params, context: requestContext }),\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 values = await Promise.all([\n runHandler(handler),\n loadLazyRouteModule(match.route, detectErrorBoundary, manifest),\n ]);\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, detectErrorBoundary, 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 throw getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).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 {\n invariant(\n handler,\n `Could not find the ${type} to run on the \"${match.route.id}\" route`\n );\n\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 let activeMatches = matches.slice(0, matches.indexOf(match) + 1);\n let routePathnames = getPathContributingMatches(activeMatches).map(\n (match) => match.pathnameBase\n );\n let resolvedLocation = resolveTo(\n location,\n routePathnames,\n new URL(request.url).pathname\n );\n invariant(\n createPath(resolvedLocation),\n `Unable to resolve redirect location: ${location}`\n );\n\n // Prepend the basename to the redirect location if we have one\n if (basename) {\n let path = resolvedLocation.pathname;\n resolvedLocation.pathname =\n path === \"/\" ? basename : joinPaths([basename, path]);\n }\n\n location = createPath(resolvedLocation);\n } else if (!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 (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 };\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 (isRouteRequest) {\n // eslint-disable-next-line no-throw-literal\n throw {\n type: resultType || ResultType.data,\n response: result,\n };\n }\n\n let data: any;\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 data = await result.json();\n } else {\n data = await result.text();\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponse(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, formData } = 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 init.body =\n formEncType === \"application/x-www-form-urlencoded\"\n ? convertFormDataToSearchParams(formData)\n : formData;\n }\n\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\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, value instanceof File ? value.name : value);\n }\n\n return searchParams;\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 } = 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 (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: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\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 = 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\";\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 }\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 ErrorResponse(\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(results: DataResult[]): RedirectResult | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return result;\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 return (\n a.pathname === b.pathname && a.search === b.search && a.hash !== b.hash\n );\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 || 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 signal: AbortSignal,\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 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\n// Note: This should match the format exported by useMatches, so if you change\n// this please also change that :) Eventually we'll DRY this up\nfunction createUseMatchesMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UseMatchesMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id] as unknown,\n handle: route.handle as unknown,\n };\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//#endregion\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\nimport * as React from \"react\";\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction isPolyfill(x: any, y: any) {\n return (\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y) // eslint-disable-line no-self-compare\n );\n}\n\nconst is: (x: any, y: any) => boolean =\n typeof Object.is === \"function\" ? Object.is : isPolyfill;\n\n// Intentionally not using named imports because Rollup uses dynamic\n// dispatch for CommonJS interop named imports.\nconst { useState, useEffect, useLayoutEffect, useDebugValue } = React;\n\nlet didWarnOld18Alpha = false;\nlet didWarnUncachedGetSnapshot = false;\n\n// Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\nexport function useSyncExternalStore(\n subscribe: (fn: () => void) => () => void,\n getSnapshot: () => T,\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n getServerSnapshot?: () => T\n): T {\n if (__DEV__) {\n if (!didWarnOld18Alpha) {\n if (\"startTransition\" in React) {\n didWarnOld18Alpha = true;\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that \" +\n \"does not support useSyncExternalStore. The \" +\n \"use-sync-external-store shim will not work correctly. Upgrade \" +\n \"to a newer pre-release.\"\n );\n }\n }\n }\n\n // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n const value = getSnapshot();\n if (__DEV__) {\n if (!didWarnUncachedGetSnapshot) {\n const cachedValue = getSnapshot();\n if (!is(value, cachedValue)) {\n console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n );\n didWarnUncachedGetSnapshot = true;\n }\n }\n }\n\n // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n const [{ inst }, forceUpdate] = useState({ inst: { value, getSnapshot } });\n\n // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n useLayoutEffect(() => {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n\n // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe, value, getSnapshot]);\n\n useEffect(() => {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n const handleStoreChange = () => {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n };\n // Subscribe to the store and return a clean-up function.\n return subscribe(handleStoreChange);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe]);\n\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst: any) {\n const latestGetSnapshot = inst.getSnapshot;\n const prevValue = inst.value;\n try {\n const nextValue = latestGetSnapshot();\n return !is(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n","/**\n * Inlined into the react-router repo since use-sync-external-store does not\n * provide a UMD-compatible package, so we need this to be able to distribute\n * UMD react-router bundles\n */\n\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 * @flow\n */\n\nimport * as React from \"react\";\n\nimport { useSyncExternalStore as client } from \"./useSyncExternalStoreShimClient\";\nimport { useSyncExternalStore as server } from \"./useSyncExternalStoreShimServer\";\n\nconst canUseDOM: boolean = !!(\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\"\n);\nconst isServerEnvironment = !canUseDOM;\nconst shim = isServerEnvironment ? server : client;\n\nexport const useSyncExternalStore =\n \"useSyncExternalStore\" in React\n ? ((module) => module.useSyncExternalStore)(React)\n : shim;\n","import * as React from \"react\";\nimport type {\n AgnosticRouteMatch,\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n History,\n Location,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n LazyRouteFunction,\n} from \"@remix-run/router\";\nimport type { Action as NavigationType } 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 errorElement?: React.ReactNode | null;\n Component?: 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 errorElement?: React.ReactNode | null;\n Component?: 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 extends NavigationContextObject {\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 type RelativeRoutingType = \"route\" | \"path\";\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\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}\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}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\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 Router as RemixRouter,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n DataRouteMatch,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n AwaitContext,\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\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 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 { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\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. If this is a root navigation, then we\n // navigate to the raw basename which allows the basename to have full\n // control over the presence of a trailing slash on root links\n if (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 [basename, navigator, routePathnamesJson, locationPathname]\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 { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\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 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 dataRouterStateContext = React.useContext(DataRouterStateContext);\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 `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 dataRouterStateContext || undefined\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 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 \n ErrorBoundary prop on \n <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\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\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 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 (state.location !== props.location) {\n return {\n error: props.error,\n location: props.location,\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 || state.error,\n location: state.location,\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 ? (\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\"]\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 the current errors: ${errors}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error = match.route.id ? errors?.[match.route.id] : null;\n // Only data routers handle errors\n let errorElement: React.ReactNode | null = null;\n if (dataRouterState) {\n if (match.route.ErrorBoundary) {\n errorElement = ;\n } else if (match.route.errorElement) {\n errorElement = match.route.errorElement;\n } else {\n errorElement = ;\n }\n }\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode = outlet;\n if (error) {\n children = errorElement;\n } else if (match.route.Component) {\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\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}\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}\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\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 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 {\n revalidate: dataRouterContext.router.revalidate,\n state: 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() {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () =>\n matches.map((match) => {\n let { pathname, params } = match;\n // Note: This structure matches that created by createUseMatchesMatch\n // in the @remix-run/router , so if you change this please also change\n // that :) Eventually we'll DRY this up\n return {\n id: match.route.id,\n pathname,\n params,\n data: loaderData[match.route.id] as unknown,\n handle: match.route.handle as unknown,\n };\n }),\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\n let route = React.useContext(RouteContext);\n invariant(route, `useActionData must be used inside a RouteContext`);\n\n return Object.values(state?.actionData || {})[0];\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) {\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 } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n let [blockerKey] = React.useState(() => String(++blockerId));\n\n let blockerFunction = React.useCallback(\n (args) => {\n return typeof shouldBlock === \"function\"\n ? !!shouldBlock(args)\n : !!shouldBlock;\n },\n [shouldBlock]\n );\n\n let blocker = router.getBlocker(blockerKey, blockerFunction);\n\n // Cleanup on unmount\n React.useEffect(\n () => () => router.deleteBlocker(blockerKey),\n [router, blockerKey]\n );\n\n // Prefer the blocker from state since DataRouterContext is memoized so this\n // ensures we update on blocker state updates\n return state.blockers.get(blockerKey) || blocker;\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 * as React from \"react\";\nimport type {\n TrackedPromise,\n InitialEntry,\n Location,\n MemoryHistory,\n Router as RemixRouter,\n RouterState,\n To,\n LazyRouteFunction,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n AbortedDeferredError,\n createMemoryHistory,\n UNSAFE_invariant as invariant,\n parsePath,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport { useSyncExternalStore as useSyncExternalStoreShim } from \"./use-sync-external-store-shim\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n RouteMatch,\n RouteObject,\n Navigator,\n NonIndexRouteObject,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n LocationContext,\n NavigationContext,\n DataRouterContext,\n DataRouterStateContext,\n AwaitContext,\n} from \"./context\";\nimport {\n useAsyncValue,\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n}\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n}: RouterProviderProps): React.ReactElement {\n let getState = React.useCallback(() => router.state, [router]);\n\n // Sync router state to our component state to force re-renders\n let state: RouterState = useSyncExternalStoreShim(\n router.subscribe,\n getState,\n // We have to provide this so React@18 doesn't complain during hydration,\n // but we pass our serialized hydration data into the router so state here\n // is already synced with what the server saw\n getState\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