{"version":3,"file":"static/js/main.2db8cca5.js","mappings":"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","sources":["api/adminAPI.js","api/auth.js","api/errors.js","api/novaposhta.js","api/profile.js","api/settings.js","api/utils.js","components/general/Loading/Loading.jsx","components/general/Loading/index.js","../node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","../node_modules/i18next-http-backend/esm/utils.js","../node_modules/i18next-http-backend/esm/request.js","../node_modules/i18next-http-backend/esm/index.js","locale/detector.js","locale/index.js","stores/adminStore.js","stores/modalsStore.js","api/order.js","api/products.js","stores/orderStore.js","stores/profileStore.js","stores/settingsStore.js","utils/googleAnalytics.js","utils/helpers.js","utils/isDebug.js","utils/layout.js","utils/messengersList.js","utils/paymentsList.js","utils/serviceParser.ts","utils/validations.js","../node_modules/@mobx-devtools/tools/src/index.ts","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/@sentry/src/constants.ts","../node_modules/@sentry/src/debug-build.ts","../node_modules/@sentry/src/eventProcessors.ts","../node_modules/@sentry/src/exports.ts","../node_modules/@sentry/src/hub.ts","../node_modules/@sentry/src/scope.ts","../node_modules/@sentry/src/session.ts","../node_modules/@sentry/src/tracing/dynamicSamplingContext.ts","../node_modules/@sentry/src/utils/applyScopeDataToEvent.ts","../node_modules/@sentry/src/utils/getRootSpan.ts","../node_modules/@sentry/src/utils/prepareEvent.ts","../node_modules/@sentry/src/utils/spanUtils.ts","../node_modules/@sentry/src/version.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/extensions.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/constants.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/debug-build.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/exports.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/syncpromise.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/eventProcessors.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/session.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/utils/applyScopeDataToEvent.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/scope.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/version.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/hub.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/metrics/metric-summary.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/semanticAttributes.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/dynamicSamplingContext.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/instrument/globalError.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/instrument/globalUnhandledRejection.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/errors.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/hubextensions.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/idletransaction.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/sampling.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/span.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/spanstatus.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/utils/handleCallbackErrors.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/trace.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/transaction.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/utils.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/utils/getRootSpan.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/utils/hasTracingEnabled.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/utils/spanUtils.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/baggage.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/instrument/_handlers.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/is.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/logger.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/misc.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/node.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/env.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/object.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/stacktrace.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/time.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/worldwide.ts","../node_modules/@sentry/src/browser.ts","../node_modules/@sentry/src/is.ts","../node_modules/@sentry/src/logger.ts","../node_modules/@sentry/src/misc.ts","../node_modules/@sentry/src/normalize.ts","../node_modules/@sentry/src/memo.ts","../node_modules/@sentry/src/object.ts","../node_modules/@sentry/src/stacktrace.ts","../node_modules/@sentry/src/string.ts","../node_modules/@sentry/src/syncpromise.ts","../node_modules/@sentry/src/time.ts","../node_modules/@sentry/src/worldwide.ts","../node_modules/downloadjs/download.js","../node_modules/fast-deep-equal/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/mobx/src/errors.ts","../node_modules/mobx/src/utils/global.ts","../node_modules/mobx/src/utils/utils.ts","../node_modules/mobx/src/api/decorators.ts","../node_modules/mobx/src/types/overrideannotation.ts","../node_modules/mobx/src/core/atom.ts","../node_modules/mobx/src/utils/comparer.ts","../node_modules/mobx/src/types/modifiers.ts","../node_modules/mobx/src/types/actionannotation.ts","../node_modules/mobx/src/types/flowannotation.ts","../node_modules/mobx/src/types/computedannotation.ts","../node_modules/mobx/src/types/observableannotation.ts","../node_modules/mobx/src/types/autoannotation.ts","../node_modules/mobx/src/api/observable.ts","../node_modules/mobx/src/types/dynamicobject.ts","../node_modules/mobx/src/api/computed.ts","../node_modules/mobx/src/core/action.ts","../node_modules/mobx/src/types/observablevalue.ts","../node_modules/mobx/src/core/computedvalue.ts","../node_modules/mobx/src/core/observable.ts","../node_modules/mobx/src/core/derivation.ts","../node_modules/mobx/src/core/globalstate.ts","../node_modules/mobx/src/core/reaction.ts","../node_modules/mobx/src/core/spy.ts","../node_modules/mobx/src/api/action.ts","../node_modules/mobx/src/api/autorun.ts","../node_modules/mobx/src/api/become-observed.ts","../node_modules/mobx/src/api/configure.ts","../node_modules/mobx/src/api/extendobservable.ts","../node_modules/mobx/src/api/extras.ts","../node_modules/mobx/src/api/flow.ts","../node_modules/mobx/src/api/intercept-read.ts","../node_modules/mobx/src/api/intercept.ts","../node_modules/mobx/src/api/iscomputed.ts","../node_modules/mobx/src/api/isobservable.ts","../node_modules/mobx/src/api/object-api.ts","../node_modules/mobx/src/api/observe.ts","../node_modules/mobx/src/api/tojs.ts","../node_modules/mobx/src/api/trace.ts","../node_modules/mobx/src/api/transaction.ts","../node_modules/mobx/src/api/when.ts","../node_modules/mobx/src/types/intercept-utils.ts","../node_modules/mobx/src/types/listen-utils.ts","../node_modules/mobx/src/api/makeObservable.ts","../node_modules/mobx/src/types/observablearray.ts","../node_modules/mobx/src/types/observablemap.ts","../node_modules/mobx/src/types/observableset.ts","../node_modules/mobx/src/types/observableobject.ts","../node_modules/mobx/src/types/legacyobservablearray.ts","../node_modules/mobx/src/types/type-utils.ts","../node_modules/mobx/src/utils/eq.ts","../node_modules/mobx/src/utils/iterable.ts","../node_modules/mobx/src/mobx.ts","../node_modules/object-assign/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-i18next/dist/es/unescape.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../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/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@loadable/component/dist/esm/loadable.esm.mjs","../node_modules/goober/dist/goober.modern.js","../node_modules/i18next/dist/esm/i18next.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/js-cookie/dist/js.cookie.mjs","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","../node_modules/@sentry/src/integration.ts","../node_modules/@sentry/src/integrations/inboundfilters.ts","../node_modules/@sentry/src/integrations/functiontostring.ts","../node_modules/@sentry/src/sdk.ts","../node_modules/@sentry/src/supports.ts","../node_modules/@sentry/src/vendor/supportsHistory.ts","../node_modules/@sentry/src/instrument/_handlers.ts","../node_modules/@sentry/src/instrument/history.ts","../node_modules/@sentry/src/dsn.ts","../node_modules/@sentry/src/envelope.ts","../node_modules/@sentry/src/error.ts","../node_modules/@sentry/src/api.ts","../node_modules/@sentry/src/metrics/envelope.ts","../node_modules/@sentry/src/metrics/utils.ts","../node_modules/@sentry/src/baseclient.ts","../node_modules/@sentry/src/utils/sdkMetadata.ts","../node_modules/src/debug-build.ts","../node_modules/src/eventbuilder.ts","../node_modules/src/helpers.ts","../node_modules/src/client.ts","../node_modules/@sentry/src/env.ts","../node_modules/src/userfeedback.ts","../node_modules/@sentry/src/clientreport.ts","../node_modules/@sentry/src/instrument/console.ts","../node_modules/@sentry/src/instrument/dom.ts","../node_modules/@sentry/src/instrument/xhr.ts","../node_modules/@sentry/src/instrument/fetch.ts","../node_modules/@sentry/src/severity.ts","../node_modules/@sentry/src/url.ts","../node_modules/src/integrations/breadcrumbs.ts","../node_modules/src/integrations/dedupe.ts","../node_modules/@sentry/src/instrument/globalError.ts","../node_modules/@sentry/src/instrument/globalUnhandledRejection.ts","../node_modules/src/integrations/globalhandlers.ts","../node_modules/src/integrations/httpcontext.ts","../node_modules/@sentry/src/aggregate-errors.ts","../node_modules/src/integrations/linkederrors.ts","../node_modules/src/integrations/trycatch.ts","../node_modules/src/stack-parsers.ts","../node_modules/@sentry/src/promisebuffer.ts","../node_modules/@sentry/src/ratelimit.ts","../node_modules/@sentry/src/transports/base.ts","../node_modules/src/transports/utils.ts","../node_modules/src/transports/fetch.ts","../node_modules/src/transports/xhr.ts","../node_modules/src/sdk.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/browser.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/common/debug-build.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/types.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/bindReporter.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/getNavigationEntry.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/getActivationStart.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/initMetric.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/generateUniqueID.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/observe.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/onHidden.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/getCLS.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/getVisibilityWatcher.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/getFID.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/lib/polyfills/interactionCountPolyfill.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/getINP.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/getLCP.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/web-vitals/onTTFB.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/instrument.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/span.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/url.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/metrics/utils.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/metrics/index.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/dsn.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/envelope.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/tracing/measurement.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/supports.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/instrument/fetch.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/instrument/xhr.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/string.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/common/fetch.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/request.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/vendor/supportsHistory.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/instrument/history.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/browsertracing.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/router.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/buildPolyfills/_optionalChain.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/node/integrations/utils/node-utils.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/node/integrations/apollo.ts","../node_modules/@sentry/tracing/node_modules/@sentry/src/requestdata.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/node/integrations/express.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/node/integrations/graphql.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/node/integrations/mongo.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/node/integrations/mysql.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/node/integrations/postgres.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/node/integrations/prisma.ts","../node_modules/src/index.ts","../node_modules/@sentry/tracing/node_modules/@sentry-internal/src/browser/backgroundtab.ts","stores/__debug.js","app/App.tsx","index.js"],"sourcesContent":["import {\r\n host\r\n} from 'api/utils'\r\nimport download from 'downloadjs'\r\nimport Cookies from 'js-cookie'\r\n\r\nconst endpoint = `${host}/admin`\r\nconst apiEndpoint = `${endpoint}/api/v1`\r\n\r\nexport default class AdminAPI {\r\n static loginListeners = []\r\n\r\n static subscribeLogin(f) {\r\n this.loginListeners.push(f)\r\n }\r\n\r\n static unsubscribeLogin(f) {\r\n const index = this.loginListeners.findIndex(l => l === f)\r\n if (index >= 0) this.loginListeners.splice(index, 1)\r\n }\r\n\r\n static async checkUser() {\r\n return Boolean(Cookies.get('AdminToken'))\r\n }\r\n\r\n static async signIn(payload) {\r\n const resp = await fetch(`${endpoint}/auth/signin`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n redirect: 'follow',\r\n body: JSON.stringify(payload)\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n this.loginListeners.forEach(l => l(true))\r\n return\r\n\r\n case 401:\r\n throw new Error(\"Неверный логин или пароль\")\r\n\r\n default:\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n\r\n static async signOut() {\r\n const resp = await fetch(`${endpoint}/auth/signout`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n redirect: 'follow'\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n Cookies.remove(\"AdminToken\")\r\n this.loginListeners.forEach(l => l(false))\r\n return\r\n\r\n default:\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n\r\n static async getAllUsers() {\r\n const resp = await fetch(`${apiEndpoint}/users/`, {\r\n credentials: 'include',\r\n redirect: 'follow'\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n return await resp.json()\r\n\r\n default:\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n\r\n static async createGroup(group) {\r\n var body = new FormData()\r\n Object.keys(group).forEach(key => body.append(key, group[key]))\r\n\r\n const resp = await fetch(`${apiEndpoint}/create-group`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n redirect: 'follow',\r\n body\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n const result = await resp.blob()\r\n download(result, group.name + '.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')\r\n return\r\n\r\n case 409:\r\n throw new Error(\"Один из введенных email уже существует\")\r\n\r\n default:\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n\r\n static async deleteUsers(ids) {\r\n const resp = await fetch(`${apiEndpoint}/users/`, {\r\n method: 'DELETE',\r\n credentials: 'include',\r\n redirect: 'follow',\r\n body: JSON.stringify(ids)\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n return await resp.json()\r\n\r\n default:\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n\r\n static async changeProfile(id, changes, selected) {\r\n const resp = await fetch(`${apiEndpoint}/users/${id}`, {\r\n method: 'PATCH',\r\n credentials: 'include',\r\n redirect: 'follow',\r\n body: JSON.stringify({\r\n selected: selected,\r\n changes: changes\r\n })\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n return await resp.json()\r\n\r\n default:\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n\r\n static async copyCustomization(donorID, recipientsIds) {\r\n const resp = await fetch(`${apiEndpoint}/users/${donorID}/copy-customization`, {\r\n method: 'PATCH',\r\n credentials: 'include',\r\n redirect: 'follow',\r\n body: JSON.stringify(recipientsIds)\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n return await resp.json()\r\n\r\n default:\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n\r\n static async createOrder(id, orders) {\r\n const resp = await fetch(`${apiEndpoint}/users/${id}/order`, {\r\n method: 'PUT',\r\n credentials: 'include',\r\n redirect: 'follow',\r\n body: JSON.stringify(orders)\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n return await resp.json()\r\n\r\n default:\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n\r\n static async restoreUser(id) {\r\n const resp = await fetch(`${apiEndpoint}/users/${id}/restore`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n redirect: 'follow'\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n return await resp.json()\r\n\r\n default:\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n\r\n static async getCompanies() {\r\n const resp = await fetch(`${apiEndpoint}/companies`, {\r\n credentials: 'include',\r\n redirect: 'follow'\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n return await resp.json()\r\n\r\n default:\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n\r\n static async getDefaultCompany() {\r\n const resp = await fetch(`${apiEndpoint}/companies/default`, {\r\n credentials: 'include',\r\n redirect: 'follow'\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n return await resp.json()\r\n\r\n default:\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n\r\n static async saveCompany(company) {\r\n var body = new FormData()\r\n Object.keys(company).forEach(key => {\r\n if (key.endsWith('File')) {\r\n body.append(key, company[key])\r\n delete company[key]\r\n }\r\n })\r\n\r\n body.append('data', JSON.stringify(company))\r\n\r\n const resp = await fetch(`${apiEndpoint}/companies`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n redirect: 'follow',\r\n body\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n return await resp.json()\r\n\r\n default:\r\n const err = await resp.text()\r\n if (err) {\r\n throw new Error(err)\r\n }\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n\r\n static async deleteCompany(id) {\r\n const resp = await fetch(`${apiEndpoint}/companies/${id}`, {\r\n method: 'DELETE',\r\n credentials: 'include',\r\n redirect: 'follow'\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n return true\r\n\r\n default:\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n\r\n static async sendPushAll(push) {\r\n var body = new FormData()\r\n Object.keys(push).forEach(key => key !== 'actions' && body.append(key, push[key]))\r\n body.append('actions', JSON.stringify(push.actions))\r\n\r\n const resp = await fetch(`${apiEndpoint}/send-push/all`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n redirect: 'follow',\r\n body\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n return await resp.json()\r\n\r\n default:\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n\r\n static async getAllPushTokens() {\r\n const resp = await fetch(`${apiEndpoint}/push/tokens`, {\r\n credentials: 'include',\r\n redirect: 'follow'\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n return await resp.json()\r\n\r\n default:\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n\r\n static async deletePushTokens(tokens) {\r\n const resp = await fetch(`${apiEndpoint}/push/tokens/delete`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n redirect: 'follow',\r\n body: JSON.stringify(tokens)\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n return\r\n\r\n default:\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n\r\n static async getAllPushMessages() {\r\n const resp = await fetch(`${apiEndpoint}/push/messages`, {\r\n credentials: 'include',\r\n redirect: 'follow'\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n let res = await resp.json()\r\n if (!res) return []\r\n return res\r\n\r\n default:\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n\r\n static async deletePushMessages(ids) {\r\n const resp = await fetch(`${apiEndpoint}/push/messages/delete`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n redirect: 'follow',\r\n body: JSON.stringify(ids)\r\n })\r\n\r\n switch (resp.status) {\r\n case 200:\r\n return\r\n\r\n default:\r\n throw new Error(\"Неизвестная ошибка\")\r\n }\r\n }\r\n}","import {\r\n checkUser,\r\n host\r\n} from 'api/utils'\r\nimport Cookies from 'js-cookie' \r\n\r\nconst endpoint = `${host}/auth` \r\n\r\nexport default class AuthAPI {\r\n static loginListeners = []\r\n\r\n static subscribeLogin(f) {\r\n this.loginListeners.push(f)\r\n }\r\n\r\n static unsubscribeLogin(f) {\r\n const index = this.loginListeners.findIndex(l => l === f)\r\n if(index >= 0) this.loginListeners.splice(index, 1)\r\n }\r\n\r\n static async checkUser() {\r\n return await checkUser()\r\n } \r\n\r\n static async signOut() {\r\n const resp = await fetch(`${endpoint}/signout`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n redirect: 'follow'\r\n })\r\n \r\n switch(resp.status) {\r\n case 200:\r\n Cookies.remove('Token')\r\n this.loginListeners.forEach(l => l(false))\r\n return\r\n \r\n default:\r\n throw new Error(\"error__unknown\")\r\n }\r\n }\r\n\r\n static async signIn(payload) {\r\n const resp = await fetch(`${endpoint}/signin`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n redirect: 'follow',\r\n body: JSON.stringify(payload)\r\n })\r\n \r\n switch(resp.status) {\r\n case 200:\r\n this.loginListeners.forEach(l => l(true))\r\n return\r\n \r\n case 401:\r\n throw new Error(\"signin-error__wrong-credentials\")\r\n \r\n default:\r\n throw new Error(\"error__unknown\")\r\n }\r\n }\r\n\r\n static async restorePassword(payload) {\r\n const resp = await fetch(`${endpoint}/restore`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n redirect: 'follow',\r\n body: JSON.stringify(payload)\r\n })\r\n \r\n switch(resp.status) {\r\n case 200:\r\n return\r\n \r\n case 401:\r\n throw new Error(\"error__user-not-exists\")\r\n \r\n default:\r\n throw new Error(\"error__unknown\")\r\n }\r\n }\r\n\r\n static async signUp(payload) {\r\n const resp = await fetch(`${endpoint}/signup`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n redirect: 'follow',\r\n body: JSON.stringify(payload)\r\n })\r\n \r\n switch(resp.status) {\r\n case 200:\r\n this.loginListeners.forEach(l => l(true))\r\n return\r\n \r\n case 409:\r\n throw new Error(\"error__user-already-exists\")\r\n \r\n default:\r\n throw new Error(\"error__unknown\")\r\n }\r\n }\r\n}","export class UnauthorizedError extends Error {\r\n\r\n}","import { API, host } from 'api/utils'\n\nconst endpoint = `${host}/np`\n\nexport default class NovaposhtaAPI extends API {\n static async getCities(q) {\n const resp = await fetch(`${endpoint}/cities?q=${q}`, {\n method: 'GET',\n credentials: 'include',\n redirect: 'follow'\n })\n\n if (await this._checkStatus(resp)) return await resp.json()\n }\n\n static async getDepartments(cityRef, q) {\n const resp = await fetch(`${endpoint}/departments?ref=${cityRef}&q=${q}`, {\n method: 'GET',\n credentials: 'include',\n redirect: 'follow'\n })\n\n if (await this._checkStatus(resp)) return await resp.json()\n }\n\n static async getOwnerships() {\n const resp = await fetch(`${endpoint}/ownerships`, {\n method: 'GET',\n credentials: 'include',\n redirect: 'follow'\n })\n\n if (await this._checkStatus(resp)) return await resp.json()\n }\n\n static async getStreets(cityRef, q) {\n const resp = await fetch(`${endpoint}/streets?ref=${cityRef}&q=${q}`, {\n method: 'GET',\n credentials: 'include',\n redirect: 'follow'\n })\n\n if (await this._checkStatus(resp)) return await resp.json()\n }\n}","import { API, host } from \"api/utils\";\r\n\r\nconst endpoint = `${host}/api/v1`;\r\n\r\nexport default class ProfileAPI extends API {\r\n static async pay(id) {\r\n window.open(`${endpoint}/profile/pay/${id}`);\r\n }\r\n\r\n static async getProfileByID(id, companyCard) {\r\n const resp = await fetch(`${host}${companyCard ? '/card' : ''}/profile/${id}`, {\r\n method: \"GET\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async getProfile() {\r\n if (!(await this._checkAuth())) return;\r\n\r\n const resp = await fetch(`${endpoint}/profile/`, {\r\n method: \"GET\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async changeProfile(payload) {\r\n if (!(await this._checkAuth())) return;\r\n\r\n const resp = await fetch(`${endpoint}/profile/`, {\r\n method: \"PATCH\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(payload),\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async changeProfileURL(url) {\r\n if (!(await this._checkAuth())) return;\r\n\r\n const resp = await fetch(`${endpoint}/profile/url`, {\r\n method: \"PUT\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ custom_url: url }),\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async changeProfileLayout(layout) {\r\n if (!(await this._checkAuth())) return;\r\n\r\n const resp = await fetch(`${endpoint}/profile/layout`, {\r\n method: \"PUT\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(layout),\r\n });\r\n\r\n await this._checkStatus(resp);\r\n }\r\n\r\n static async uploadProfilePhoto(pfp) {\r\n if (!(await this._checkAuth())) return;\r\n\r\n const resp = await fetch(`${endpoint}/profile/photo`, {\r\n method: \"PUT\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ pfp }),\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async uploadProfileCustomLogo(file) {\r\n if (!(await this._checkAuth())) return;\r\n\r\n var data = new FormData();\r\n data.append(\"file\", file);\r\n\r\n const resp = await fetch(`${endpoint}/profile/custom-logo`, {\r\n method: \"PUT\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n body: data,\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async deleteProfileCustomLogo() {\r\n if (!(await this._checkAuth())) return;\r\n\r\n const resp = await fetch(`${endpoint}/profile/custom-logo`, {\r\n method: \"DELETE\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async uploadGroupLogo(file) {\r\n if (!(await this._checkAuth())) return;\r\n\r\n var data = new FormData();\r\n data.append(\"file\", file);\r\n\r\n const resp = await fetch(`${endpoint}/profile/group-logo`, {\r\n method: \"PUT\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n body: data,\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async deleteGroupLogo(file) {\r\n if (!(await this._checkAuth())) return;\r\n\r\n const resp = await fetch(`${endpoint}/profile/group-logo`, {\r\n method: \"DELETE\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async uploadProfileCustomBackground(file) {\r\n if (!(await this._checkAuth())) return;\r\n\r\n var data = new FormData();\r\n data.append(\"file\", file);\r\n\r\n const resp = await fetch(`${endpoint}/profile/custom-background`, {\r\n method: \"PUT\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n body: data,\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async deleteProfileCustomBackground() {\r\n if (!(await this._checkAuth())) return;\r\n\r\n const resp = await fetch(`${endpoint}/profile/custom-background`, {\r\n method: \"DELETE\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async deleteProfilePhoto() {\r\n if (!(await this._checkAuth())) return;\r\n\r\n const resp = await fetch(`${endpoint}/profile/photo`, {\r\n method: \"DELETE\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async uploadProfileMenu(file) {\r\n if (!(await this._checkAuth())) return;\r\n\r\n var data = new FormData();\r\n data.append(\"file\", file);\r\n\r\n const resp = await fetch(`${endpoint}/profile/menu`, {\r\n method: \"PUT\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n body: data,\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async deleteProfileMenu() {\r\n if (!(await this._checkAuth())) return;\r\n\r\n const resp = await fetch(`${endpoint}/profile/menu`, {\r\n method: \"DELETE\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async setProfileMenuLink(link) {\r\n if (!(await this._checkAuth())) return;\r\n\r\n const resp = await fetch(`${endpoint}/profile/menu/link`, {\r\n method: \"PUT\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ link }),\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async restoreProfile() {\r\n if (!(await this._checkAuth())) return;\r\n\r\n const resp = await fetch(`${endpoint}/profile/restore`, {\r\n method: \"POST\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async restoreClearProfile() {\r\n if (!(await this._checkAuth())) return;\r\n\r\n const resp = await fetch(`${endpoint}/profile/restore-clear`, {\r\n method: \"POST\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async hardDeleteProfile() {\r\n if (!(await this._checkAuth())) return;\r\n\r\n const resp = await fetch(`${endpoint}/profile/hard-delete`, {\r\n method: \"POST\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async registration(email, password) {\r\n if (!(await this._checkAuth())) return;\r\n\r\n const resp = await fetch(`${endpoint}/profile/registration`, {\r\n method: \"POST\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ email, password }),\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async cancelRegistration() {\r\n if (!(await this._checkAuth())) return;\r\n\r\n const resp = await fetch(`${endpoint}/profile/registration`, {\r\n method: \"DELETE\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n\r\n static async resendEmailConfirmation() {\r\n if (!(await this._checkAuth())) return;\r\n\r\n const resp = await fetch(`${endpoint}/profile/resend-email-confirmation`, {\r\n method: \"POST\",\r\n credentials: \"include\",\r\n redirect: \"follow\",\r\n });\r\n\r\n if (await this._checkStatus(resp)) return await resp.json();\r\n }\r\n}\r\n","import { API, host } from 'api/utils'\r\n\r\nconst endpoint = `${host}/api/v1`\r\n\r\nexport default class SettingsAPI extends API {\r\n static async getSettings() {\r\n if (!(await this._checkAuth())) return\r\n\r\n const resp = await fetch(`${endpoint}/settings/`, {\r\n method: 'GET',\r\n credentials: 'include',\r\n redirect: 'follow',\r\n })\r\n\r\n if (await this._checkStatus(resp)) return await resp.json()\r\n }\r\n\r\n static async setType(type) {\r\n if (!(await this._checkAuth())) return\r\n\r\n const resp = await fetch(`${endpoint}/settings/type`, {\r\n method: 'PUT',\r\n credentials: 'include',\r\n redirect: 'follow',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({ type }),\r\n })\r\n\r\n if (await this._checkStatus(resp)) return await resp.json()\r\n }\r\n\r\n static async setDisableAutoSave(disable_auto_save) {\r\n if (!(await this._checkAuth())) return\r\n\r\n const resp = await fetch(`${endpoint}/settings/disable-auto-save`, {\r\n method: 'PUT',\r\n credentials: 'include',\r\n redirect: 'follow',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({ disable_auto_save }),\r\n })\r\n\r\n if (await this._checkStatus(resp)) return await resp.json()\r\n }\r\n\r\n static async changeEmail(email) {\r\n if (!(await this._checkAuth())) return\r\n\r\n const resp = await fetch(`${endpoint}/settings/email`, {\r\n method: 'PUT',\r\n credentials: 'include',\r\n redirect: 'follow',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({ email }),\r\n })\r\n\r\n if (await this._checkStatus(resp)) {\r\n if (resp.status === 409) {\r\n throw new Error(\"error__user-already-exists\")\r\n }\r\n return await resp.json()\r\n }\r\n }\r\n\r\n static async changePassword(old_password, new_password) {\r\n if (!(await this._checkAuth())) return\r\n\r\n const resp = await fetch(`${endpoint}/settings/password`, {\r\n method: 'PUT',\r\n credentials: 'include',\r\n redirect: 'follow',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({ old_password, new_password }),\r\n })\r\n\r\n if (await this._checkStatus(resp)) return await resp.json()\r\n }\r\n\r\n static async deleteProfile() {\r\n if (!(await this._checkAuth())) return\r\n\r\n const resp = await fetch(`${endpoint}/settings/profile`, {\r\n method: 'DELETE',\r\n credentials: 'include',\r\n redirect: 'follow',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n\r\n if (await this._checkStatus(resp)) return await resp.json()\r\n }\r\n}\r\n","import { UnauthorizedError } from './errors';\r\n\r\nexport const host = window.origin\r\n//'/api'\r\nexport const originalHost = \"https://passment.com.ua\"\r\n\r\n// TODO: write a fetch function with retries and checks\r\n\r\nexport async function checkUser() {\r\n return document.cookie.indexOf(\"Token=\") > -1;\r\n}\r\n\r\nexport function checkStatus(status) {\r\n switch (status) {\r\n case 200:\r\n return true\r\n\r\n case 401:\r\n throw new Error(\"signin-error__wrong-credentials\")\r\n\r\n default:\r\n throw new Error(\"error__unknown\")\r\n }\r\n}\r\n\r\nexport class API {\r\n static async _checkAuth() {\r\n if (!await checkUser()) {\r\n const err = new UnauthorizedError()\r\n\r\n if (this._onError) this._onError(err)\r\n\r\n throw err\r\n }\r\n\r\n return true\r\n }\r\n\r\n static onError(f) {\r\n this._onError = f\r\n }\r\n\r\n static async _checkStatus(resp) {\r\n let err;\r\n\r\n switch (resp.status) {\r\n case 200:\r\n return true\r\n\r\n case 401:\r\n err = new UnauthorizedError()\r\n break\r\n\r\n default:\r\n let text = ''\r\n try {\r\n text = await resp.text()\r\n } catch { }\r\n if (!text) {\r\n text = \"error__unknown\"\r\n }\r\n err = new Error(text)\r\n }\r\n\r\n if (this._onError) this._onError(err)\r\n\r\n throw err\r\n }\r\n}","import React from \"react\";\r\nimport \"./Loading.css\";\r\n\r\nfunction Loading() {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default Loading;\r\n","import Loading from \"./Loading\";\r\nexport default Loading;","import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\n\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nfunction defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\n\n// eslint-disable-next-line no-control-regex\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\nvar serializeCookie = function serializeCookie(name, val, options) {\n var opt = options || {};\n opt.path = opt.path || '/';\n var value = encodeURIComponent(val);\n var str = \"\".concat(name, \"=\").concat(value);\n\n if (opt.maxAge > 0) {\n var maxAge = opt.maxAge - 0;\n if (Number.isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += \"; Max-Age=\".concat(Math.floor(maxAge));\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += \"; Domain=\".concat(opt.domain);\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += \"; Path=\".concat(opt.path);\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += \"; Expires=\".concat(opt.expires.toUTCString());\n }\n\n if (opt.httpOnly) str += '; HttpOnly';\n if (opt.secure) str += '; Secure';\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n\n case 'lax':\n str += '; SameSite=Lax';\n break;\n\n case 'strict':\n str += '; SameSite=Strict';\n break;\n\n case 'none':\n str += '; SameSite=None';\n break;\n\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n};\n\nvar cookie = {\n create: function create(name, value, minutes, domain) {\n var cookieOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n path: '/',\n sameSite: 'strict'\n };\n\n if (minutes) {\n cookieOptions.expires = new Date();\n cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);\n }\n\n if (domain) cookieOptions.domain = domain;\n document.cookie = serializeCookie(name, encodeURIComponent(value), cookieOptions);\n },\n read: function read(name) {\n var nameEQ = \"\".concat(name, \"=\");\n var ca = document.cookie.split(';');\n\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n\n return null;\n },\n remove: function remove(name) {\n this.create(name, '', -1);\n }\n};\nvar cookie$1 = {\n name: 'cookie',\n lookup: function lookup(options) {\n var found;\n\n if (options.lookupCookie && typeof document !== 'undefined') {\n var c = cookie.read(options.lookupCookie);\n if (c) found = c;\n }\n\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupCookie && typeof document !== 'undefined') {\n cookie.create(options.lookupCookie, lng, options.cookieMinutes, options.cookieDomain, options.cookieOptions);\n }\n }\n};\n\nvar querystring = {\n name: 'querystring',\n lookup: function lookup(options) {\n var found;\n\n if (typeof window !== 'undefined') {\n var search = window.location.search;\n\n if (!window.location.search && window.location.hash && window.location.hash.indexOf('?') > -1) {\n search = window.location.hash.substring(window.location.hash.indexOf('?'));\n }\n\n var query = search.substring(1);\n var params = query.split('&');\n\n for (var i = 0; i < params.length; i++) {\n var pos = params[i].indexOf('=');\n\n if (pos > 0) {\n var key = params[i].substring(0, pos);\n\n if (key === options.lookupQuerystring) {\n found = params[i].substring(pos + 1);\n }\n }\n }\n }\n\n return found;\n }\n};\n\nvar hasLocalStorageSupport = null;\n\nvar localStorageAvailable = function localStorageAvailable() {\n if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;\n\n try {\n hasLocalStorageSupport = window !== 'undefined' && window.localStorage !== null;\n var testKey = 'i18next.translate.boo';\n window.localStorage.setItem(testKey, 'foo');\n window.localStorage.removeItem(testKey);\n } catch (e) {\n hasLocalStorageSupport = false;\n }\n\n return hasLocalStorageSupport;\n};\n\nvar localStorage = {\n name: 'localStorage',\n lookup: function lookup(options) {\n var found;\n\n if (options.lookupLocalStorage && localStorageAvailable()) {\n var lng = window.localStorage.getItem(options.lookupLocalStorage);\n if (lng) found = lng;\n }\n\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupLocalStorage && localStorageAvailable()) {\n window.localStorage.setItem(options.lookupLocalStorage, lng);\n }\n }\n};\n\nvar hasSessionStorageSupport = null;\n\nvar sessionStorageAvailable = function sessionStorageAvailable() {\n if (hasSessionStorageSupport !== null) return hasSessionStorageSupport;\n\n try {\n hasSessionStorageSupport = window !== 'undefined' && window.sessionStorage !== null;\n var testKey = 'i18next.translate.boo';\n window.sessionStorage.setItem(testKey, 'foo');\n window.sessionStorage.removeItem(testKey);\n } catch (e) {\n hasSessionStorageSupport = false;\n }\n\n return hasSessionStorageSupport;\n};\n\nvar sessionStorage = {\n name: 'sessionStorage',\n lookup: function lookup(options) {\n var found;\n\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n var lng = window.sessionStorage.getItem(options.lookupSessionStorage);\n if (lng) found = lng;\n }\n\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n window.sessionStorage.setItem(options.lookupSessionStorage, lng);\n }\n }\n};\n\nvar navigator$1 = {\n name: 'navigator',\n lookup: function lookup(options) {\n var found = [];\n\n if (typeof navigator !== 'undefined') {\n if (navigator.languages) {\n // chrome only; not an array, so can't use .push.apply instead of iterating\n for (var i = 0; i < navigator.languages.length; i++) {\n found.push(navigator.languages[i]);\n }\n }\n\n if (navigator.userLanguage) {\n found.push(navigator.userLanguage);\n }\n\n if (navigator.language) {\n found.push(navigator.language);\n }\n }\n\n return found.length > 0 ? found : undefined;\n }\n};\n\nvar htmlTag = {\n name: 'htmlTag',\n lookup: function lookup(options) {\n var found;\n var htmlTag = options.htmlTag || (typeof document !== 'undefined' ? document.documentElement : null);\n\n if (htmlTag && typeof htmlTag.getAttribute === 'function') {\n found = htmlTag.getAttribute('lang');\n }\n\n return found;\n }\n};\n\nvar path = {\n name: 'path',\n lookup: function lookup(options) {\n var found;\n\n if (typeof window !== 'undefined') {\n var language = window.location.pathname.match(/\\/([a-zA-Z-]*)/g);\n\n if (language instanceof Array) {\n if (typeof options.lookupFromPathIndex === 'number') {\n if (typeof language[options.lookupFromPathIndex] !== 'string') {\n return undefined;\n }\n\n found = language[options.lookupFromPathIndex].replace('/', '');\n } else {\n found = language[0].replace('/', '');\n }\n }\n }\n\n return found;\n }\n};\n\nvar subdomain = {\n name: 'subdomain',\n lookup: function lookup(options) {\n // If given get the subdomain index else 1\n var lookupFromSubdomainIndex = typeof options.lookupFromSubdomainIndex === 'number' ? options.lookupFromSubdomainIndex + 1 : 1; // get all matches if window.location. is existing\n // first item of match is the match itself and the second is the first group macht which sould be the first subdomain match\n // is the hostname no public domain get the or option of localhost\n\n var language = typeof window !== 'undefined' && window.location && window.location.hostname && window.location.hostname.match(/^(\\w{2,5})\\.(([a-z0-9-]{1,63}\\.[a-z]{2,6})|localhost)/i); // if there is no match (null) return undefined\n\n if (!language) return undefined; // return the given group match\n\n return language[lookupFromSubdomainIndex];\n }\n};\n\nfunction getDefaults() {\n return {\n order: ['querystring', 'cookie', 'localStorage', 'sessionStorage', 'navigator', 'htmlTag'],\n lookupQuerystring: 'lng',\n lookupCookie: 'i18next',\n lookupLocalStorage: 'i18nextLng',\n lookupSessionStorage: 'i18nextLng',\n // cache user language\n caches: ['localStorage'],\n excludeCacheFor: ['cimode'] // cookieMinutes: 10,\n // cookieDomain: 'myDomain'\n\n };\n}\n\nvar Browser = /*#__PURE__*/function () {\n function Browser(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Browser);\n\n this.type = 'languageDetector';\n this.detectors = {};\n this.init(services, options);\n }\n\n _createClass(Browser, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults()); // backwards compatibility\n\n if (this.options.lookupFromUrlIndex) this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex;\n this.i18nOptions = i18nOptions;\n this.addDetector(cookie$1);\n this.addDetector(querystring);\n this.addDetector(localStorage);\n this.addDetector(sessionStorage);\n this.addDetector(navigator$1);\n this.addDetector(htmlTag);\n this.addDetector(path);\n this.addDetector(subdomain);\n }\n }, {\n key: \"addDetector\",\n value: function addDetector(detector) {\n this.detectors[detector.name] = detector;\n }\n }, {\n key: \"detect\",\n value: function detect(detectionOrder) {\n var _this = this;\n\n if (!detectionOrder) detectionOrder = this.options.order;\n var detected = [];\n detectionOrder.forEach(function (detectorName) {\n if (_this.detectors[detectorName]) {\n var lookup = _this.detectors[detectorName].lookup(_this.options);\n\n if (lookup && typeof lookup === 'string') lookup = [lookup];\n if (lookup) detected = detected.concat(lookup);\n }\n });\n if (this.services.languageUtils.getBestMatchFromCodes) return detected; // new i18next v19.5.0\n\n return detected.length > 0 ? detected[0] : null; // a little backward compatibility\n }\n }, {\n key: \"cacheUserLanguage\",\n value: function cacheUserLanguage(lng, caches) {\n var _this2 = this;\n\n if (!caches) caches = this.options.caches;\n if (!caches) return;\n if (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(lng) > -1) return;\n caches.forEach(function (cacheName) {\n if (_this2.detectors[cacheName]) _this2.detectors[cacheName].cacheUserLanguage(lng, _this2.options);\n });\n }\n }]);\n\n return Browser;\n}();\n\nBrowser.type = 'languageDetector';\n\nexport { Browser as default };\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nexport function defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\nexport function hasXMLHttpRequest() {\n return typeof XMLHttpRequest === 'function' || (typeof XMLHttpRequest === \"undefined\" ? \"undefined\" : _typeof(XMLHttpRequest)) === 'object';\n}\n\nfunction isPromise(maybePromise) {\n return !!maybePromise && typeof maybePromise.then === 'function';\n}\n\nexport function makePromise(maybePromise) {\n if (isPromise(maybePromise)) {\n return maybePromise;\n }\n return Promise.resolve(maybePromise);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport { defaults, hasXMLHttpRequest } from './utils.js';\nimport * as fetchNode from './getFetch.cjs';\nvar fetchApi;\nif (typeof fetch === 'function') {\n if (typeof global !== 'undefined' && global.fetch) {\n fetchApi = global.fetch;\n } else if (typeof window !== 'undefined' && window.fetch) {\n fetchApi = window.fetch;\n } else {\n fetchApi = fetch;\n }\n}\nvar XmlHttpRequestApi;\nif (hasXMLHttpRequest()) {\n if (typeof global !== 'undefined' && global.XMLHttpRequest) {\n XmlHttpRequestApi = global.XMLHttpRequest;\n } else if (typeof window !== 'undefined' && window.XMLHttpRequest) {\n XmlHttpRequestApi = window.XMLHttpRequest;\n }\n}\nvar ActiveXObjectApi;\nif (typeof ActiveXObject === 'function') {\n if (typeof global !== 'undefined' && global.ActiveXObject) {\n ActiveXObjectApi = global.ActiveXObject;\n } else if (typeof window !== 'undefined' && window.ActiveXObject) {\n ActiveXObjectApi = window.ActiveXObject;\n }\n}\nif (!fetchApi && fetchNode && !XmlHttpRequestApi && !ActiveXObjectApi) fetchApi = fetchNode.default || fetchNode;\nif (typeof fetchApi !== 'function') fetchApi = undefined;\nvar addQueryString = function addQueryString(url, params) {\n if (params && _typeof(params) === 'object') {\n var queryString = '';\n for (var paramName in params) {\n queryString += '&' + encodeURIComponent(paramName) + '=' + encodeURIComponent(params[paramName]);\n }\n if (!queryString) return url;\n url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);\n }\n return url;\n};\nvar fetchIt = function fetchIt(url, fetchOptions, callback) {\n fetchApi(url, fetchOptions).then(function (response) {\n if (!response.ok) return callback(response.statusText || 'Error', {\n status: response.status\n });\n response.text().then(function (data) {\n callback(null, {\n status: response.status,\n data: data\n });\n }).catch(callback);\n }).catch(callback);\n};\nvar omitFetchOptions = false;\n\nvar requestWithFetch = function requestWithFetch(options, url, payload, callback) {\n if (options.queryStringParams) {\n url = addQueryString(url, options.queryStringParams);\n }\n var headers = defaults({}, typeof options.customHeaders === 'function' ? options.customHeaders() : options.customHeaders);\n if (payload) headers['Content-Type'] = 'application/json';\n var reqOptions = typeof options.requestOptions === 'function' ? options.requestOptions(payload) : options.requestOptions;\n var fetchOptions = defaults({\n method: payload ? 'POST' : 'GET',\n body: payload ? options.stringify(payload) : undefined,\n headers: headers\n }, omitFetchOptions ? {} : reqOptions);\n try {\n fetchIt(url, fetchOptions, callback);\n } catch (e) {\n if (!reqOptions || Object.keys(reqOptions).length === 0 || !e.message || e.message.indexOf('not implemented') < 0) {\n return callback(e);\n }\n try {\n Object.keys(reqOptions).forEach(function (opt) {\n delete fetchOptions[opt];\n });\n fetchIt(url, fetchOptions, callback);\n omitFetchOptions = true;\n } catch (err) {\n callback(err);\n }\n }\n};\n\nvar requestWithXmlHttpRequest = function requestWithXmlHttpRequest(options, url, payload, callback) {\n if (payload && _typeof(payload) === 'object') {\n payload = addQueryString('', payload).slice(1);\n }\n if (options.queryStringParams) {\n url = addQueryString(url, options.queryStringParams);\n }\n try {\n var x;\n if (XmlHttpRequestApi) {\n x = new XmlHttpRequestApi();\n } else {\n x = new ActiveXObjectApi('MSXML2.XMLHTTP.3.0');\n }\n x.open(payload ? 'POST' : 'GET', url, 1);\n if (!options.crossDomain) {\n x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n x.withCredentials = !!options.withCredentials;\n if (payload) {\n x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n if (x.overrideMimeType) {\n x.overrideMimeType('application/json');\n }\n var h = options.customHeaders;\n h = typeof h === 'function' ? h() : h;\n if (h) {\n for (var i in h) {\n x.setRequestHeader(i, h[i]);\n }\n }\n x.onreadystatechange = function () {\n x.readyState > 3 && callback(x.status >= 400 ? x.statusText : null, {\n status: x.status,\n data: x.responseText\n });\n };\n x.send(payload);\n } catch (e) {\n console && console.log(e);\n }\n};\nvar request = function request(options, url, payload, callback) {\n if (typeof payload === 'function') {\n callback = payload;\n payload = undefined;\n }\n callback = callback || function () {};\n if (fetchApi) {\n return requestWithFetch(options, url, payload, callback);\n }\n if (hasXMLHttpRequest() || typeof ActiveXObject === 'function') {\n return requestWithXmlHttpRequest(options, url, payload, callback);\n }\n callback(new Error('No fetch and no xhr implementation found!'));\n};\nexport default request;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _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); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nimport { defaults, makePromise } from './utils.js';\nimport request from './request.js';\nvar getDefaults = function getDefaults() {\n return {\n loadPath: '/locales/{{lng}}/{{ns}}.json',\n addPath: '/locales/add/{{lng}}/{{ns}}',\n allowMultiLoading: false,\n parse: function parse(data) {\n return JSON.parse(data);\n },\n stringify: JSON.stringify,\n parsePayload: function parsePayload(namespace, key, fallbackValue) {\n return _defineProperty({}, key, fallbackValue || '');\n },\n request: request,\n reloadInterval: typeof window !== 'undefined' ? false : 60 * 60 * 1000,\n customHeaders: {},\n queryStringParams: {},\n crossDomain: false,\n withCredentials: false,\n overrideMimeType: false,\n requestOptions: {\n mode: 'cors',\n credentials: 'same-origin',\n cache: 'default'\n }\n };\n};\nvar Backend = function () {\n function Backend(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _classCallCheck(this, Backend);\n this.services = services;\n this.options = options;\n this.allOptions = allOptions;\n this.type = 'backend';\n this.init(services, options, allOptions);\n }\n _createClass(Backend, [{\n key: \"init\",\n value: function init(services) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults());\n this.allOptions = allOptions;\n if (this.services && this.options.reloadInterval) {\n setInterval(function () {\n return _this.reload();\n }, this.options.reloadInterval);\n }\n }\n }, {\n key: \"readMulti\",\n value: function readMulti(languages, namespaces, callback) {\n this._readAny(languages, languages, namespaces, namespaces, callback);\n }\n }, {\n key: \"read\",\n value: function read(language, namespace, callback) {\n this._readAny([language], language, [namespace], namespace, callback);\n }\n }, {\n key: \"_readAny\",\n value: function _readAny(languages, loadUrlLanguages, namespaces, loadUrlNamespaces, callback) {\n var _this2 = this;\n var loadPath = this.options.loadPath;\n if (typeof this.options.loadPath === 'function') {\n loadPath = this.options.loadPath(languages, namespaces);\n }\n loadPath = makePromise(loadPath);\n loadPath.then(function (resolvedLoadPath) {\n if (!resolvedLoadPath) return callback(null, {});\n var url = _this2.services.interpolator.interpolate(resolvedLoadPath, {\n lng: languages.join('+'),\n ns: namespaces.join('+')\n });\n _this2.loadUrl(url, callback, loadUrlLanguages, loadUrlNamespaces);\n });\n }\n }, {\n key: \"loadUrl\",\n value: function loadUrl(url, callback, languages, namespaces) {\n var _this3 = this;\n this.options.request(this.options, url, undefined, function (err, res) {\n if (res && (res.status >= 500 && res.status < 600 || !res.status)) return callback('failed loading ' + url + '; status code: ' + res.status, true);\n if (res && res.status >= 400 && res.status < 500) return callback('failed loading ' + url + '; status code: ' + res.status, false);\n if (!res && err && err.message && err.message.indexOf('Failed to fetch') > -1) return callback('failed loading ' + url + ': ' + err.message, true);\n if (err) return callback(err, false);\n var ret, parseErr;\n try {\n if (typeof res.data === 'string') {\n ret = _this3.options.parse(res.data, languages, namespaces);\n } else {\n ret = res.data;\n }\n } catch (e) {\n parseErr = 'failed parsing ' + url + ' to json';\n }\n if (parseErr) return callback(parseErr, false);\n callback(null, ret);\n });\n }\n }, {\n key: \"create\",\n value: function create(languages, namespace, key, fallbackValue, callback) {\n var _this4 = this;\n if (!this.options.addPath) return;\n if (typeof languages === 'string') languages = [languages];\n var payload = this.options.parsePayload(namespace, key, fallbackValue);\n var finished = 0;\n var dataArray = [];\n var resArray = [];\n languages.forEach(function (lng) {\n var addPath = _this4.options.addPath;\n if (typeof _this4.options.addPath === 'function') {\n addPath = _this4.options.addPath(lng, namespace);\n }\n var url = _this4.services.interpolator.interpolate(addPath, {\n lng: lng,\n ns: namespace\n });\n _this4.options.request(_this4.options, url, payload, function (data, res) {\n finished += 1;\n dataArray.push(data);\n resArray.push(res);\n if (finished === languages.length) {\n if (callback) callback(dataArray, resArray);\n }\n });\n });\n }\n }, {\n key: \"reload\",\n value: function reload() {\n var _this5 = this;\n var _this$services = this.services,\n backendConnector = _this$services.backendConnector,\n languageUtils = _this$services.languageUtils,\n logger = _this$services.logger;\n var currentLanguage = backendConnector.language;\n if (currentLanguage && currentLanguage.toLowerCase() === 'cimode') return;\n\n var toLoad = [];\n var append = function append(lng) {\n var lngs = languageUtils.toResolveHierarchy(lng);\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n append(currentLanguage);\n if (this.allOptions.preload) this.allOptions.preload.forEach(function (l) {\n return append(l);\n });\n toLoad.forEach(function (lng) {\n _this5.allOptions.ns.forEach(function (ns) {\n backendConnector.read(lng, ns, 'read', null, null, function (err, data) {\n if (err) logger.warn(\"loading namespace \".concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) logger.log(\"loaded namespace \".concat(ns, \" for language \").concat(lng), data);\n backendConnector.loaded(\"\".concat(lng, \"|\").concat(ns), err, data);\n });\n });\n });\n }\n }]);\n return Backend;\n}();\nBackend.type = 'backend';\nexport default Backend;","const localeMap = Object.freeze({\n '^en.*': 'en',\n '^(ru|kk|ka|ro|hy|be|mo|uk).*': 'ua',\n})\n\nexport default class CustomDetector {\n name = 'custom'\n\n lookup(options) {\n let found = []\n\n if (typeof navigator !== 'undefined') {\n if (navigator.languages) {\n // chrome only; not an array, so can't use .push.apply instead of iterating\n for (let i = 0; i < navigator.languages.length; i++) {\n found.push(navigator.languages[i])\n }\n }\n\n if (navigator.userLanguage) {\n found.push(navigator.userLanguage)\n }\n\n if (navigator.language) {\n found.push(navigator.language)\n }\n }\n\n found = found.map(loc => {\n let formatted = ''\n const ok = Object.keys(localeMap).some(regex => {\n const r = new RegExp(regex)\n if (r.test(loc)) {\n formatted = localeMap[regex]\n return true\n }\n return false\n })\n\n if (ok) return formatted\n return 'en'\n })\n\n return found.length > 0 ? found : undefined\n }\n}\n","import i18n from 'i18next'\r\nimport LanguageDetector from 'i18next-browser-languagedetector'\r\nimport HttpApi from 'i18next-http-backend'\r\nimport { initReactI18next } from 'react-i18next'\r\nimport CustomDetector from './detector'\r\nimport ua from '../languages/ua.json';\r\nimport en from '../languages/en.json';\r\n\r\nconst detector = new LanguageDetector()\r\ndetector.addDetector(new CustomDetector())\r\n\r\nexport const languages = ['en', 'ua']\r\n\r\ni18n.use(HttpApi)\r\n // @ts-ignore\r\n .use(initReactI18next)\r\n .use(detector)\r\n .init({\r\n resources: {\r\n en: { translation: en },\r\n ua: { translation: ua }\r\n },\r\n fallbackLng: 'en',\r\n supportedLngs: languages,\r\n\r\n nsSeparator: false,\r\n keySeparator: false,\r\n\r\n interpolation: {\r\n escapeValue: false,\r\n },\r\n\r\n detection: {\r\n order: ['cookie', 'custom'],\r\n lookupCookie: 'Lang',\r\n cookieOptions: { sameSite: 'strict' },\r\n caches: ['cookie'],\r\n },\r\n })\r\n\r\nexport default i18n\r\n","import AdminAPI from 'api/adminAPI'\nimport i18n from 'locale'\nimport { makeAutoObservable, toJS } from 'mobx'\n\n// TODO: отрефакторить этот стор\n\nconst defaultCompany = Object.freeze({\n name: {\n value: '',\n warning: false,\n },\n domains: {\n value: [],\n warning: false,\n },\n logoLink: {\n value: '',\n warning: false,\n },\n logoFile: {\n value: null,\n warning: false,\n },\n backgroundFile: {\n value: null,\n warning: false,\n },\n lang: {\n value: '',\n warning: false,\n },\n footerText: {\n value: '',\n warning: false,\n },\n footerLink: {\n value: '',\n warning: false,\n },\n footerFile: {\n value: null,\n warning: false,\n },\n metaTitle: {\n value: '',\n warning: false,\n },\n metaDesc: {\n value: '',\n warning: false,\n },\n metaFile: {\n value: null,\n warning: false,\n },\n phonePrefix: {\n value: '',\n warning: false,\n },\n mailLogoFile: {\n value: null,\n warning: false,\n },\n mail: {\n from: {\n value: '',\n warning: false,\n },\n login: {\n value: '',\n warning: false,\n },\n password: {\n value: '',\n warning: false,\n },\n server: {\n value: '',\n warning: false,\n },\n port: {\n value: 465,\n warning: false,\n }\n },\n blocks: {\n banks: {\n value: true,\n warning: false,\n },\n waiterContacts: {\n value: true,\n warning: false,\n },\n messengers: {\n value: true,\n warning: false,\n },\n socialNetworks: {\n value: true,\n warning: false,\n },\n customization: {\n value: true,\n warning: false,\n },\n customButtons: {\n value: true,\n warning: false,\n },\n payments: {\n value: true,\n warning: false,\n },\n }\n})\n\nconst defaultGroup = Object.freeze({\n name: {\n value: '',\n warning: false,\n },\n count: {\n value: 1,\n warning: false,\n },\n byTable: {\n value: 'false',\n checked: false,\n },\n notify: {\n value: '',\n checked: false,\n },\n file: {\n value: null,\n warning: false,\n },\n logoLink: {\n value: '',\n warning: false,\n },\n logoFile: {\n value: null,\n warning: false,\n },\n authLink: {\n value: '',\n checked: false,\n },\n})\n\nconst defaultPush = Object.freeze({\n createdAt: {\n value: '',\n warning: false,\n },\n title: {\n value: '',\n warning: false,\n },\n body: {\n value: '',\n warning: false,\n },\n actions: {\n value: [{\n title: 'Open and see more',\n action: 'https://sea-pass.uk'\n }],\n warning: false,\n },\n imageFile: {\n value: null,\n warning: false,\n },\n iconFile: {\n value: null,\n warning: false,\n },\n badgeFile: {\n value: null,\n warning: false,\n }\n})\n\nconst defaultOrder = Object.freeze({\n productID: '1',\n count: 1,\n})\nclass AdminStore {\n loading = true\n users = null\n tokens = null\n messages = null\n selected = []\n tokensSelected = []\n messagesSelected = []\n selectedGroup = 'all'\n selectedCompany = 'all'\n createGroupModal = {\n opened: false,\n loading: false,\n group: copy(defaultGroup)\n }\n\n orderModal = {\n opened: false,\n userID: '',\n orders: [copy(defaultOrder)],\n }\n\n pushModal = {\n opened: false,\n loading: false,\n push: copy(defaultPush),\n }\n\n company = window.companyData\n\n companyListModal = {\n opened: false,\n list: []\n }\n\n companyModal = {\n opened: false,\n loading: false,\n company: copy(defaultCompany)\n }\n\n products = []\n\n loaded = false\n groups = []\n allGroups = []\n allUsers = null\n\n payStatuses = [\n {\n value: 10,\n label: '30 бесплатных дней',\n },\n {\n value: 20,\n label: 'Годовая подписка',\n },\n {\n value: 25,\n label: '∞ Подписка',\n },\n {\n value: 30,\n label: 'Истек срок',\n },\n ]\n orderStatuses = [\n {\n value: 10,\n label: 'Нет',\n },\n {\n value: 20,\n label: 'Есть',\n },\n {\n value: 30,\n label: 'Готов',\n },\n ]\n types = null\n\n constructor() {\n makeAutoObservable(this)\n this.types = i18n.t('user-types', { returnObjects: true })\n }\n\n fetchData = () => {\n this.fetchUsers()\n this.fetchPushes()\n }\n\n fetchUsers = () => {\n this.loading = true\n AdminAPI.getAllUsers().then(users => {\n if (users) {\n const groups = []\n users.forEach(user => user.group_name && !groups.includes(user.group_name) && groups.push(user.group_name))\n this.groups = groups\n this.allGroups = groups\n this.users = users.filter(u => !u.deleted_at)\n this.allUsers = users\n } else {\n this.users = []\n this.allUsers = []\n }\n\n this.loading = false\n this.loaded = true\n }).catch(e => window.notify('Ошибка при получении пользователей: ' + e.message, 'error'))\n\n AdminAPI.getDefaultCompany().then(c => (this.company = c)).catch(e => window.notify('Ошибка при получении компании: ' + e.message, 'error'))\n }\n\n fetchPushes = () => {\n AdminAPI.getAllPushTokens().then(tokens => (this.tokens = tokens)).catch(e => window.notify('Ошибка при получении токенов: ' + e.message, 'error'))\n\n AdminAPI.getAllPushMessages().then(messages => (this.messages = messages)).catch(e => window.notify('Ошибка при получении сообщений: ' + e.message, 'error'))\n }\n\n\n handleSelectGroup = group => {\n switch (group) {\n case 'add_new':\n this.createGroupModal.opened = true\n return\n\n case this.selectedGroup:\n return\n\n default:\n this.selectedGroup = group\n this.filterUsers()\n break\n }\n\n\n }\n\n filterUsers = () => {\n let users = toJS(this.allUsers)\n\n switch (this.selectedGroup) {\n case 'all': break\n\n case 'deleted':\n users = users.filter(u => u.deleted_at)\n break\n\n default:\n users = users.filter(u => u.group_name === this.selectedGroup)\n break\n }\n\n this.users = users\n }\n\n filterGroups = () => {\n if (this.selectedCompany === 'all') {\n this.groups = this.allGroups\n return\n }\n\n let groups = []\n this.users.forEach(user => {\n if (!user.group_name || groups.includes(user.group_name)) return\n\n let company = this.selectedCompany === 'passment' ? '' : this.selectedCompany\n if (user.companyID == company) {\n groups.push(user.group_name)\n }\n })\n\n this.groups = groups\n }\n\n createGroup = async () => {\n try {\n this.createGroupModal.loading = true\n\n await AdminAPI.createGroup(convertForm(this.createGroupModal.group, false))\n\n this.loaded = false\n this.fetchUsers()\n\n this.createGroupModal = {\n opened: false,\n loading: false,\n group: copy(defaultGroup)\n }\n\n this.createGroupModal.opened = false\n window.notify('Пул успешно создан', 'success')\n } catch (e) {\n window.notify('Ошибка при создании пула: ' + e.message, 'error')\n } finally {\n this.createGroupModal.loading = false\n }\n }\n\n deleteUsers = async ids => {\n if (!window.confirm(`Вы действительно хотите удалить ${ids.length} пользовател${ids.length > 4 ? 'ей' : 'я'}?\\nЭто действие необратимо`)) {\n return\n }\n\n try {\n await AdminAPI.deleteUsers(ids)\n window.notify('Пользователи успешно удалены', 'success')\n this.selected = []\n this.users = this.users.filter(u => !ids.includes(u.id))\n this.allUsers = this.allUsers.filter(u => !ids.includes(u.id))\n this.groups = []\n this.allUsers.forEach(user => user.group_name && !this.groups.includes(user.group_name) && this.groups.push(user.group_name))\n } catch (e) {\n window.notify('Ошибка при удалении пользователей: ' + e.message, 'error')\n }\n }\n\n deletePushTokens = async tokens => {\n if (!window.confirm(`Вы действительно хотите удалить ${tokens.length} токен${tokens.length > 1 ? (tokens.length > 4 ? 'ов' : 'а') : ''}?\\nЭто действие необратимо`)) {\n return\n }\n\n try {\n await AdminAPI.deletePushTokens(tokens)\n window.notify('Токены успешно удалены', 'success')\n this.tokensSelected = []\n this.tokens = this.tokens.filter(u => !tokens.includes(u.token))\n } catch (e) {\n window.notify('Ошибка при удалении токенов: ' + e.message, 'error')\n }\n }\n\n deletePushMessages = async messages => {\n if (!window.confirm(`Вы действительно хотите удалить ${messages.length} сообщени${messages.length > 1 ? (messages.length > 4 ? 'й' : 'я') : 'е'}?\\nЭто действие необратимо`)) {\n return\n }\n\n try {\n await AdminAPI.deletePushMessages(messages)\n window.notify('Сообщения успешно удалены', 'success')\n this.messagesSelected = []\n this.messages = this.messages.filter(u => !messages.includes(u.id))\n } catch (e) {\n window.notify('Ошибка при удалении сообщений: ' + e.message, 'error')\n }\n }\n\n changeType = async (userID, type) => {\n const user = this.users.find(({ id }) => userID === id)\n if (user.type === type) return\n\n const name = this.types.find(t => t.value === type).label\n const confirmText = this.selected.length\n ? `Вы действительно хотите поменять тип выбранных профилей на \"${name}\"?`\n : `Вы действительно хотите поменять тип профиля \"${user.name}\" на \"${name}\"?`\n if (!window.confirm(confirmText)) {\n return\n }\n\n try {\n await AdminAPI.changeProfile(user.id, { type }, this.selected)\n user.type = type\n this.selected.forEach(id => {\n this.users.find(u => u.id === id).type = type\n })\n } catch (e) {\n window.notify('Ошибка при изменении типа пользователя: ' + e.message, 'error')\n }\n }\n\n changePayStatus = async (userID, pay_status) => {\n const user = this.users.find(({ id }) => userID === id)\n if (user.pay_status === pay_status) return\n\n const name = this.payStatuses.find(t => t.value === pay_status).label\n const confirmText = this.selected.length\n ? `Вы действительно хотите поменять статус оплаты выбранных профилей на \"${name}\"?`\n : `Вы действительно хотите поменять статус оплаты профиля \"${user.name}\" на \"${name}\"?`\n if (!window.confirm(confirmText)) {\n return\n }\n\n try {\n await AdminAPI.changeProfile(user.id, { pay_status }, this.selected)\n user.pay_status = pay_status\n this.selected.forEach(id => {\n this.users.find(u => u.id === id).pay_status = pay_status\n })\n } catch (e) {\n window.notify('Ошибка при изменении статуса оплаты: ' + e.message, 'error')\n }\n }\n\n changeOrderStatus = async (userID, order_status) => {\n const user = this.users.find(({ id }) => userID === id)\n if (user.order_status === order_status) return\n\n const name = this.orderStatuses.find(t => t.value === order_status).label\n const confirmText = this.selected.length\n ? `Вы действительно хотите поменять статус заказа выбранных профилей на \"${name}\"?`\n : `Вы действительно хотите поменять статус заказа профиля \"${user.name}\" на \"${name}\"?`\n if (!window.confirm(confirmText)) {\n return\n }\n\n try {\n await AdminAPI.changeProfile(user.id, { order_status }, this.selected)\n user.order_status = order_status\n this.selected.forEach(id => {\n this.users.find(u => u.id === id).order_status = order_status\n })\n } catch (e) {\n window.notify('Ошибка при изменении статуса заказа: ' + e.message, 'error')\n }\n }\n\n openOrder = user => {\n this.orderModal = {\n opened: true,\n user: user,\n orders: [copy(defaultOrder)],\n }\n }\n\n addOrder = () => {\n this.orderModal.orders.push(copy(defaultOrder))\n }\n\n createOrder = async () => {\n try {\n const items = i18n.t('card-items', { returnObjects: true })\n await AdminAPI.createOrder(\n this.orderModal.user.id,\n this.orderModal.orders.map(o => {\n o.productName = items.find(p => p.id === o.productID).title\n return o\n }),\n )\n this.orderModal.opened = false\n if (this.orderModal.user.orders) this.orderModal.user.orders.push(...this.orderModal.orders)\n else this.orderModal.user.orders = this.orderModal.orders\n window.notify('Заказы успешно добавлены', 'success')\n } catch (e) {\n window.notify('Ошибка при добавлении заказов: ' + e.message, 'error')\n }\n }\n\n toggleCustomization = async (userID, enabled) => {\n const user = this.users.find(({ id }) => userID === id)\n if (user.customization_enabled === enabled) return\n\n const confirmText = this.selected.length\n ? `Вы действительно хотите ${enabled ? 'включить ' : 'выключить '} персонализацию у выбранных профилей?`\n : `Вы действительно хотите ${enabled ? 'включить ' : 'выключить '} персонализацию у профиля \"${user.name}\"?`\n if (!window.confirm(confirmText)) {\n return\n }\n\n try {\n await AdminAPI.changeProfile(user.id, { customization_enabled: enabled }, this.selected)\n user.customization_enabled = enabled\n this.selected.forEach(id => {\n this.users.find(u => u.id === id).customization_enabled = enabled\n })\n } catch (e) {\n window.notify('Ошибка при изменении профиля: ' + e.message, 'error')\n }\n }\n\n toggleCreatedBy = async (userID, disabled) => {\n const user = this.users.find(({ id }) => userID === id)\n if (user.customization.disable_created_by === disabled) return\n\n const confirmText = this.selected.length\n ? `Вы действительно хотите ${!disabled ? 'включить ' : 'выключить '} лого \"created by\" у выбранных профилей?`\n : `Вы действительно хотите ${!disabled ? 'включить ' : 'выключить '} лого \"created by\" у профиля \"${user.name}\"?`\n if (!window.confirm(confirmText)) {\n return\n }\n\n try {\n await AdminAPI.changeProfile(user.id, { \"customization.disable_created_by\": disabled }, this.selected)\n user.customization.disable_created_by = disabled\n this.selected.forEach(id => {\n this.users.find(u => u.id === id).customization.disable_created_by = disabled\n })\n } catch (e) {\n window.notify('Ошибка при изменении профиля: ' + e.message, 'error')\n }\n }\n\n toggleEmailBinding = async (userID, value) => {\n const user = this.users.find(({ id }) => userID === id)\n if (user.email_binding_disabled === value) return\n\n let selectedUsers = this.selected.map(id => this.users.find(u => u.id === id)).filter(u => u.need_registration)\n const selected = selectedUsers.map(u => u.id)\n\n try {\n await AdminAPI.changeProfile(user.id, { email_binding_disabled: value }, selected)\n user.email_binding_disabled = value\n selected.forEach(id => {\n this.users.find(u => u.id === id).email_binding_disabled = value\n })\n } catch (e) {\n window.notify('Ошибка при изменении профиля: ' + e.message, 'error')\n }\n }\n\n copyCustomization = async (donorID) => {\n if (!this.selected.length) return\n\n const donor = this.users.find(({ id }) => donorID === id)\n if (!window.confirm(`Вы действительно хотите скопировать персонализацию профиля \"${donor.name}\" на выбранные профили?`)) {\n return\n }\n\n try {\n await AdminAPI.copyCustomization(donor.id, this.selected.filter(id => id !== donor.id))\n this.selected.forEach(id => {\n this.users.find(u => u.id === id).customization = toJS(donor.customization)\n })\n } catch (e) {\n window.notify('Ошибка при изменении профиля: ' + e.message, 'error')\n }\n }\n\n restoreUser = async (userID) => {\n const user = this.users.find(({ id }) => userID === id)\n if (!user.deleted_at) return\n\n if (!window.confirm(`Вы действительно хотите восстановить аккаунт \"${user.name}\"?`)) {\n return\n }\n\n try {\n await AdminAPI.restoreUser(user.id)\n user.deleted_at = null\n } catch (e) {\n window.notify('Ошибка при восстановлении аккаунта: ' + e.message, 'error')\n }\n }\n\n openCompany = () => {\n this.companyModal = {\n opened: true,\n loading: false,\n company: Object.assign({}, defaultCompany, convertCompany(this.company, true))\n }\n }\n\n togglePush = message => {\n if (message) {\n const push = convertForm(message, true, [], [])\n this.pushModal.push = Object.assign({}, defaultPush, push)\n } else {\n this.pushModal.push = Object.assign({}, defaultPush)\n }\n this.pushModal.opened = !this.pushModal.opened\n }\n\n sendPushAll = async () => {\n try {\n const createdAt = this.pushModal.push.createdAt\n const push = convertForm(this.pushModal.push, false, [], [])\n const newPush = await AdminAPI.sendPushAll(push)\n if (createdAt.value != newPush.createdAt) {\n this.messages.push(newPush)\n }\n this.togglePush()\n window.notify('Сообщение успешно отправлено', 'success')\n } catch (e) {\n window.notify('Ошибка при отправке пуша: ' + e.message, 'error')\n }\n }\n\n saveCompany = async () => {\n try {\n this.companyModal.loading = true\n\n const company = await AdminAPI.saveCompany(convertCompany(this.companyModal.company, false))\n\n this.company = company\n\n this.companyModal.opened = false\n window.notify('Компания успешно сохранена', 'success')\n } catch (e) {\n window.notify('Ошибка при сохранении компании: ' + e.message, 'error')\n }\n\n this.companyModal.loading = false\n }\n\n deleteCompany = async company => {\n if (!window.confirm(`Вы действительно хотите удалить компанию \"${company.name}\"?`)) {\n return\n }\n\n try {\n await AdminAPI.deleteCompany(company.id)\n\n this.company = {}\n\n window.notify('Компания успешно удалена', 'success')\n } catch (e) {\n window.notify('Ошибка при удалении компании: ' + e.message, 'error')\n }\n }\n\n setValue = (obj, value) => {\n obj.value = value\n }\n}\n\nfunction copy(obj) {\n return Object.assign({}, obj)\n}\n\n\nfunction convertCompany(comp, toForm) {\n if (!comp) return {}\n\n const exclude = ['mail']\n if (toForm) {\n exclude.push(...['logoFile', 'backgroundFile', 'footerFile', 'mailLogoFile', 'metaFile'])\n }\n\n const res = convertForm(comp, toForm, [], exclude)\n res.mail = convertForm(comp.mail, toForm)\n res.blocks = convertForm(comp.blocks, toForm)\n return res\n}\n\nfunction convertForm(obj, toForm, onlyValue = [], exclude = []) {\n const res = {}\n\n obj && Object.keys(obj).forEach(key => {\n if (exclude.includes(key)) return\n\n if (onlyValue.includes(key)) {\n res[key] = obj[key].value ? obj[key].value : obj[key]\n return\n }\n\n if (toForm) {\n res[key] = {\n value: obj[key],\n warning: false\n }\n } else {\n res[key] = obj[key].value\n }\n })\n\n return res\n}\n\nexport const adminStore = new AdminStore()","import { makeAutoObservable, toJS } from 'mobx';\n\nclass ModalsStore {\n modals = {\n order: false,\n signin: false,\n signup: false,\n forgot: false,\n cropper: false\n }\n\n data = {}\n\n\n constructor() {\n makeAutoObservable(this)\n }\n\n setOpened = (modal, value, data = {}) => {\n const modals = toJS(this.modals)\n Object.keys(modals).forEach(key => {\n if (key === modal) {\n modals[key] = value\n } else {\n modals[key] = false\n }\n })\n this.modals = modals\n this.data = data\n }\n\n setOpenedOrder = (open) => {\n this.setOpened('order', open)\n }\n\n setOpenedSignin = (open) => {\n this.setOpened('signin', open)\n }\n\n setOpenedCropper = (open, url = '') => {\n this.setOpened('cropper', open, { url })\n }\n\n\n setOpenedSignup = (open) => {\n this.setOpened('signup', open)\n }\n\n setOpenedForgotPassword = (open) => {\n this.setOpened('forgot', open)\n }\n}\n\nexport const modalsStore = new ModalsStore()","import { API, host } from 'api/utils'\n\nconst endpoint = `${host}/order`\n\nexport default class OrderAPI extends API {\n static async create(order) {\n const resp = await fetch(endpoint, {\n method: 'POST',\n credentials: 'include',\n redirect: 'follow',\n body: JSON.stringify(order)\n })\n\n if (await this._checkStatus(resp)) {\n return await resp.json()\n }\n }\n}","import { API, host } from 'api/utils'\n\nconst endpoint = `${host}/products`\n\n// TODO: refactor\nexport default class ProductsAPI extends API {\n static async getProductsBase() {\n const resp = await fetch(`${endpoint}/base`, {\n method: 'GET',\n credentials: 'include',\n redirect: 'follow'\n })\n\n if (await this._checkStatus(resp)) {\n this.products = await resp.json()\n }\n\n return this.products\n }\n\n static async getProducts(accessoryID) {\n const resp = await fetch(`${endpoint}/?accessory_id=${accessoryID}`, {\n method: 'GET',\n credentials: 'include',\n redirect: 'follow'\n })\n\n if (await this._checkStatus(resp)) {\n this.products = await resp.json()\n }\n\n return this.products\n }\n}","import NovaposhtaAPI from \"api/novaposhta\";\nimport OrderAPI from \"api/order\";\nimport ProductsAPI from \"api/products\";\nimport { profileStore } from \"stores/profileStore\";\n\nimport i18n from \"i18next\";\nimport { onCheckout, onPurchase } from \"utils/googleAnalytics\";\nimport { validateEmail, validateName, validatePhone } from \"utils/validations\";\nimport { hasRibbon, isAddressShipping, isLegal, isNovaPoshta } from \"../utils/helpers\";\nimport { modalsStore } from \"./modalsStore\";\n\nconst { makeAutoObservable, toJS, reaction } = require(\"mobx\");\n\nconst initOrder = {\n productID: null,\n phone: '+380',\n email: '',\n count: 1,\n\n accessoryID: 1,\n printTypeID: 1,\n colorID: 1,\n ribbonID: 2,\n\n createPrintDesign: true,\n enablePrintDesignCount: false,\n printDesignCount: 1,\n\n enableCustomPageDesign: false,\n enableCustomPageDesignCount: false,\n customPageDesignCount: 1,\n\n shipping: 'novaposhta',\n shippingType: 'department',\n payment: 'liqpay',\n address: {\n street: {},\n house: '',\n flat: ''\n },\n recipient: 'personal',\n city: {},\n department: {},\n ownership: '',\n edrpou: '',\n organization: '',\n firstname: '',\n lastname: '',\n middleName: '',\n comment: ''\n}\n\nconst initStatus = {\n failed: false,\n ok: false,\n error: '',\n loading: false\n}\n\nconst initWarnings = {\n address: {}\n}\n\nconst initAmount = {\n total: 0,\n count: 0,\n printTypeDesign: 0,\n pageDesign: 0\n}\n\nclass OrderStore {\n isLoading = true\n\n order = Object.assign({}, initOrder)\n status = Object.assign({}, initStatus)\n warnings = Object.assign({}, initWarnings)\n\n base = null\n products = []\n product = null\n accessory = null\n disableLocation = false\n\n ownerships = []\n\n amount = Object.assign({}, initAmount)\n\n reactions = []\n\n constructor() {\n makeAutoObservable(this)\n i18n.on('languageChanged', this.onLanguageChanged)\n this.updateBase()\n }\n\n onLanguageChanged = () => {\n this.changeURL()\n this.updateBase()\n }\n\n updateBase = async () => {\n this.base = await ProductsAPI.getProductsBase()\n this.isLoading = false\n }\n\n openModal = async (orderParams, disableLocation) => {\n if (orderParams) {\n await this.init(orderParams, disableLocation)\n }\n\n onCheckout(this.order, this.product, this.amount)\n\n modalsStore.setOpenedOrder(true)\n }\n\n init = async (orderParams, disableLocation) => {\n this.disableLocation = disableLocation\n let { accessoryID } = orderParams\n if (!accessoryID) accessoryID = 1\n\n if (this.order.productID && accessoryID === this.order.accessoryID) return\n\n const { profile } = profileStore\n\n this.unregisterReactions()\n\n const order = Object.assign({}, toJS(this.order), orderParams)\n\n order.name = profile ? profile.name : initOrder.name\n order.phone = profile && profile.phones.length ? (profile.phones[0].value ? profile.phones[0].value : profile.phones[0]) : initOrder.phone\n order.email = profile && profile.emails.length ? (profile.emails[0].value ? profile.emails[0].value : profile.emails[0]) : initOrder.email\n\n this.order = order\n\n this.registerReactions()\n\n await this.updateProductID()\n }\n\n calcAmount = () => {\n const {\n count, createPrintDesign, enablePrintDesignCount,\n printDesignCount, enableCustomPageDesign,\n enableCustomPageDesignCount, customPageDesignCount,\n printTypeID, payment\n } = this.order\n\n if (!this.base) return 0\n\n const { print_design_price, page_design_price } = this.base\n\n if (!this.product) return 0\n\n let amount = Object.assign({}, initAmount)\n\n amount.count = ((this.product.price * count) / 100)\n\n const isIndividualDesign = printTypeID === 2\n\n if (isIndividualDesign && createPrintDesign) {\n const { first, subsequent } = print_design_price\n\n let designCount = count\n if (enablePrintDesignCount) {\n designCount = printDesignCount\n }\n\n amount.printTypeDesign = Math.ceil(first + (designCount - 1) * subsequent) / 100\n }\n\n if (enableCustomPageDesign) {\n const { first, min, discount } = page_design_price\n const discountFloat = discount / 100\n\n let designCount = count\n if (enableCustomPageDesignCount) {\n designCount = customPageDesignCount\n }\n\n amount.pageDesign = first\n let price = first\n for (let i = 0; i < designCount - 1; i++) {\n price = Math.ceil(price - (price * discountFloat / 100))\n\n if (price < min) price = min\n\n amount.pageDesign += price\n }\n\n if (amount.pageDesign > 100000) {\n amount.pageDesign = Math.ceil(amount.pageDesign / 100 / 100) * 100\n } else {\n amount.pageDesign /= 100\n }\n }\n\n amount.total = amount.count + amount.printTypeDesign + amount.pageDesign\n\n this.amount = amount\n\n if ((printTypeID === 2 || enableCustomPageDesign) && payment === 'upon-receipt') {\n this.order.payment = 'liqpay'\n }\n }\n\n updateProductID = async (force) => {\n const base = this.base\n if (!base) return\n\n const prevAccessoryID = this.accessory && this.accessory.id\n\n const accessory = base.accessories.find(a => a.id === this.order.accessoryID)\n if (!accessory) return\n this.accessory = accessory\n\n if (this.order.colorID && !this.accessory.colors.includes(this.order.colorID)) {\n this.order.colorID = this.accessory.colors[0]\n }\n\n if (this.order.colorID === 0 && this.order.printTypeID === 1) {\n this.order.printTypeID = 2\n }\n\n if (this.order.colorID > 0 && this.order.printTypeID === 2) {\n this.order.printTypeID = 1\n }\n\n let productID = this.order.accessoryID.toString()\n productID += this.order.printTypeID.toString()\n productID += this.order.colorID.toString()\n productID += hasRibbon(this.order.accessoryID) ? this.order.ribbonID.toString() : ''\n productID += base.id_localization.toString()\n\n if (this.order.productID === productID) return\n\n if (this.order.accessoryID !== prevAccessoryID || force) {\n this.products = await ProductsAPI.getProducts(this.order.accessoryID)\n }\n\n const product = this.products.find(p => p.id === productID)\n if (!product) return\n this.product = product\n\n this.order.productID = productID\n if (!this.disableLocation) this.changeURL()\n }\n\n changeURL = () => {\n const { accessoryID, colorID, printTypeID, ribbonID } = this.order\n const lang = i18n.language\n const currentPath = window.location.pathname\n\n const accessoryObj = this.base.accessories.find(acc => acc.id === accessoryID)\n if (!accessoryObj) {\n return\n }\n\n const colorObj = this.base.colors.find(col => col.id === colorID)\n if (!colorObj) {\n return\n }\n\n const printTypeObj = this.base.print_types.find(pt => pt.id === printTypeID)\n if (!printTypeObj) {\n return\n }\n\n const ribbonObj = this.base.ribbons.find(r => r.id === ribbonID)\n if (!ribbonObj) {\n return\n }\n\n let url = `/products/${accessoryObj.path}/${lang}/${colorObj.path}/${printTypeObj.path}`\n if (hasRibbon(accessoryID)) {\n url += `/${ribbonObj.path}`\n }\n\n if (currentPath !== url) {\n window.history.replaceState(null, '', url)\n }\n }\n\n changePrintType = printTypeID => {\n if (this.order.printTypeID === printTypeID) return\n\n const changes = {\n printTypeID,\n colorID: this.accessory.colors[0]\n }\n\n if (printTypeID === 2) {\n changes.colorID = 0\n }\n\n Object.assign(this.order, changes)\n }\n\n changeOrder = (field, value, order = this.order, warnings = this.warnings) => {\n if (field.includes('.')) {\n const split = field.split('.')\n const first = split.splice(0, 1)[0]\n\n order = order[first]\n warnings = warnings[first]\n field = split.join('.')\n\n this.changeOrder(field, value, order, warnings)\n return\n }\n\n if (!field || order[field] === value) return\n\n warnings[field] = false\n order[field] = value\n }\n\n setCount = count => {\n if (isNaN(count) || !count || count > 1000) {\n return\n }\n this.count = count\n }\n\n validation = () => {\n let valid = true\n const warnings = Object.assign({}, initWarnings)\n\n const { firstname, lastname,\n phone, email, city,\n department, ownership, edrpou,\n organization, recipient, shipping,\n address, shippingType } = this.order\n\n let phoneErr = validatePhone(phone)\n if (!phoneErr || typeof (phoneErr) == 'string') {\n valid = false\n warnings.phone = phoneErr\n }\n\n // TODO: refactor\n phoneErr = this.validatePhone(phone)\n if (!phoneErr || typeof (phoneErr) == 'string') {\n valid = false\n warnings.phone = phoneErr\n }\n\n if (!email || !validateEmail(email)) {\n valid = false\n warnings.email = true\n }\n\n if (!firstname || !validateName(firstname)) {\n valid = false\n warnings.firstname = true\n }\n\n if (!lastname || !validateName(lastname)) {\n valid = false\n warnings.lastname = true\n }\n\n if (isNovaPoshta(shipping)) {\n if (isAddressShipping(shippingType)) {\n if (!address.street.id) {\n valid = false\n warnings.address.street = true\n }\n } else {\n if (!city.id) {\n valid = false\n warnings.city = true\n }\n\n if (!department.id) {\n valid = false\n warnings.department = true\n }\n }\n\n\n if (isLegal(recipient)) {\n if (!ownership) {\n valid = false\n warnings.ownership = true\n }\n\n if (!edrpou) {\n valid = false\n warnings.edrpou = true\n }\n\n if (!organization) {\n valid = false\n warnings.organization = true\n }\n }\n }\n\n this.warnings = warnings\n\n return valid\n\n }\n\n clear = () => {\n const productID = this.order.productID\n this.order = Object.assign({}, initOrder)\n this.status = Object.assign({}, initStatus)\n this.warnings = Object.assign({}, initWarnings)\n this.order.productID = productID\n }\n\n submit = async () => {\n if (this.validation()) {\n this.status.loading = true\n\n const order = toJS(this.order)\n order.productName = this.products.find(item => item.id === order.productID).title\n order.middleName = order.middleName.replace('i', 'і').trim()\n order.lastname = order.lastname.replace('i', 'і').trim()\n order.firstname = order.firstname.replace('i', 'і').trim()\n\n\n try {\n const { success, orderID } = await OrderAPI.create(order)\n if (!success) {\n throw new Error('error__unknown')\n }\n\n onPurchase(orderID, this.order, this.product, this.amount)\n\n if (order.payment === 'liqpay') {\n window.location.href = `/order/${orderID}/pay`\n return\n }\n\n this.clear()\n this.status.ok = true\n } catch (e) {\n this.status.error = e.message\n }\n\n this.status.loading = false\n }\n }\n\n loadOwnerships = async () => {\n if (!this.ownerships.length) {\n this.ownerships = await NovaposhtaAPI.getOwnerships()\n }\n }\n\n unregisterReactions() {\n this.reactions.forEach(r => r())\n this.reactions = []\n }\n\n registerReactions() {\n const reactions = [\n {\n fields: [\n 'createPrintDesign', 'enablePrintDesignCount', 'printDesignCount',\n 'enableCustomPageDesign', 'enableCustomPageDesignCount', 'customPageDesignCount',\n 'productID', 'count'\n ],\n reaction: (value, r) => {\n this.calcAmount()\n }\n },\n {\n fields: [\n 'accessoryID', 'printTypeID',\n 'colorID', 'ribbonID'\n ],\n reaction: (value, r) => {\n this.updateProductID()\n }\n },\n ]\n\n reactions.forEach(r => {\n r.fields.forEach(f => {\n const react = reaction(\n () => this.order[f],\n r.reaction,\n )\n this.reactions.push(react)\n })\n })\n this.reactions.push(reaction(\n () => this.base,\n () => this.updateProductID(true)\n ))\n }\n\n // TODO: refactor\n validatePhone(phone) {\n if (phone[0] === '0' && phone.length !== 10) {\n return 'phone-error__ukr_digits_short_count'\n }\n\n if (phone[0] === '8' && phone.length !== 11) {\n return 'phone-error__ukr_digits_short2_count'\n }\n\n return true\n }\n\n openFinish(success) {\n this.status.ok = success\n this.status.failed = !success\n modalsStore.setOpenedOrder(true)\n }\n}\n\nexport const orderStore = new OrderStore()\n","import AuthAPI from 'api/auth'\nimport ProfileAPI from 'api/profile'\nimport equal from 'fast-deep-equal'\nimport i18n from 'i18next'\nimport { makeAutoObservable, reaction, toJS, transaction } from 'mobx'\nimport { sortContacts, updateLayout } from 'utils/layout'\nimport serviceParser from 'utils/serviceParser.ts'\nimport { checkLimit, newValuePlaceholder, validateBank, validateCustomButton, validateCustomization, validateEmail, validateGroupLogo, validateMessenger, validateName, validatePayment, validatePhone, validateService, validateSite } from 'utils/validations'\n\nconst autoSaveDelayMs = 2000\nconst defaultWarnings = {\n phones: {},\n emails: {},\n sites: {},\n banks: {},\n social_networks: {},\n messengers: {},\n waiter_messengers: {},\n custom_buttons: {},\n customization: {},\n payments: {},\n group_logo: {},\n}\n\nclass ProfileStore {\n isLoading = false\n profile = null\n warnings = Object.assign({}, defaultWarnings)\n products = []\n\n changes = {}\n saveTimeoutID = null\n reactions = []\n loaded = false\n\n contacts = []\n prevContacts = []\n prevLayout = []\n dndActive = false\n\n constructor() {\n makeAutoObservable(this)\n AuthAPI.subscribeLogin(login => !login && this.reset())\n }\n\n reset = () => {\n this.unregisterReactions()\n this.loaded = false\n this.profile = null\n }\n\n load = fresh => {\n if ((this.isLoading || this.loaded) && !fresh) return\n\n this.isLoading = true\n\n this.updateProfile()\n }\n\n updateProfile = async () => {\n try {\n console.debug('Loading profile')\n const profile = await ProfileAPI.getProfile()\n this.unregisterReactions()\n console.debug('Profile loaded', profile)\n\n profile.orders =\n profile.orders &&\n profile.orders.map(o => {\n o.price = o.count * this.products.find(p => p.id === o.productID).price\n return o\n })\n\n console.debug('Prepare profile')\n this.prepareProfile(profile)\n\n transaction(() => {\n this.contacts = []\n this.prevContacts = []\n this.prevLayout = []\n this.changes = {}\n this.warnings = Object.assign({}, defaultWarnings)\n this.profile = profile\n this.isLoading = false\n this.loaded = true\n })\n\n console.debug('Registering reactions')\n this.registerReactions()\n\n console.debug('Preparing layout')\n this.prepareLayout(true)\n console.debug('Layout prepared')\n }\n catch (e) {\n console.error(e)\n await AuthAPI.signOut()\n }\n }\n\n prepareProfile(profile) {\n profile.social_networks = profile.social_networks || []\n profile.social_networks.forEach(element => {\n if (element.name) return\n const service = serviceParser(element.value)\n element.name = service\n });\n }\n\n prepareLayout(force = false) {\n const contacts = sortContacts(this.profile, this.warnings)\n\n if (!force && this.contacts.length === contacts.length) {\n return\n }\n\n transaction(() => {\n this.contacts = contacts\n this.profile.layout = updateLayout(toJS(this.contacts), toJS(this.profile.layout), this.prevLayout)\n this.prevLayout = toJS(this.profile.layout)\n })\n }\n\n unregisterReactions() {\n this.reactions.forEach(r => r())\n this.reactions = []\n }\n\n registerReactions() {\n const validateSingle = (field, value, validate) => {\n const validateResult = validate(value)\n if (validateResult === true) {\n this.warnings[field] = false\n return true\n } else {\n this.changes[field] && delete this.changes[field]\n this.warnings[field] = validateResult\n return false\n }\n }\n\n const validateArray = (field, arr, validate) => {\n const warnings = {}\n let isAllValid = true\n arr.forEach((value, i) => {\n const validateResult = validate(value, arr, field)\n if (validateResult === true) {\n warnings[i] = false\n } else {\n this.changes[field] && this.changes[field][i] && this.changes[field].splice(i, 1)\n\n warnings[i] = validateResult === false ? true : validateResult\n\n isAllValid = false\n }\n })\n\n this.warnings = Object.assign({}, this.warnings, { [field]: warnings })\n\n return isAllValid\n }\n\n const prepare = this.prepareLayout.bind(this)\n\n const reactionsData = [\n {\n validate: (field, value) => validateSingle(field, value, validateName),\n fields: ['name'],\n },\n {\n validate: () => true,\n fields: ['info'],\n },\n {\n prepare,\n validate: (field, value) => validateArray(field, value, validatePhone),\n fields: ['phones', 'waiter_phones'],\n },\n {\n prepare,\n validate: (field, value) => validateArray(field, value, validateEmail),\n fields: ['emails'],\n },\n {\n prepare,\n validate: (field, value) => validateArray(field, value, validateService),\n fields: ['social_networks'],\n },\n {\n prepare,\n validate: (field, value) => validateArray(field, value, validateBank),\n fields: ['banks'],\n },\n {\n prepare,\n validate: (field, value) => validateArray(field, value, validateMessenger),\n fields: ['messengers', 'waiter_messengers'],\n },\n {\n prepare,\n validate: (field, value) => validateArray(field, value, validatePayment),\n fields: ['payments'],\n },\n {\n prepare,\n validate: (field, value) => validateArray(field, value, validateSite),\n fields: ['sites'],\n },\n {\n prepare,\n validate: (field, value) => validateArray(field, value, validateCustomButton),\n fields: ['custom_buttons'],\n },\n {\n validate: (field, value) => validateSingle(field, value, validateCustomization),\n fields: ['customization'],\n },\n {\n validate: (field, value) => validateSingle(field, value, validateGroupLogo),\n fields: ['group_logo'],\n },\n {\n validate: () => true,\n fields: ['hide_profile_photo', 'hide_logo', 'dnd_enabled', 'card_items'],\n },\n {\n prepare: () => this.prepareLayout(true),\n validate: () => true,\n fields: ['layout'],\n }\n ]\n\n const reactions = []\n\n reactionsData.forEach(({ prepare, validate, fields }) => {\n fields.forEach(field => {\n reactions.push(\n reaction(\n () => toJS(this.profile[field]),\n (value, prev) => {\n const eq = equal(value, prev)\n if (!eq && validate(field, value) === true) {\n prepare && prepare()\n this.addChanges(field, value)\n }\n },\n ),\n )\n })\n })\n\n this.reactions = reactions\n }\n\n async addChanges(field, value) {\n Object.assign(this.changes, { [field]: value })\n if (!Object.keys(this.changes).length) return\n\n console.debug('changes', this.changes)\n\n const { disable_auto_save } = this.profile\n\n if (disable_auto_save) {\n const cancel = () => {\n this.changes = {}\n this.updateProfile()\n }\n\n const save = () => this.saveChanges()\n\n window.saveNotify(i18n.t('save-notify__text'), save, cancel)\n return\n }\n\n if (this.saveTimeoutID) {\n clearTimeout(this.saveTimeoutID)\n }\n\n this.saveTimeoutID = setTimeout(() => {\n this.saveChanges()\n this.saveTimeoutID = null\n }, autoSaveDelayMs)\n }\n\n async saveChanges() {\n if (!Object.keys(this.changes).length) return\n console.debug('Saving changes', this.changes)\n this.save(this.changes)\n this.changes = {}\n }\n\n async save(changes) {\n return await this.apiSaveCall(async () => {\n return await ProfileAPI.changeProfile(changes)\n }, i18n.t('save-notify__error'))\n }\n\n saveLink = async url => {\n const oldURL = this.profile.custom_url ? this.profile.custom_url : this.profile.url\n\n if (oldURL !== url) {\n const res = await this.apiSaveCall(async () => {\n return await ProfileAPI.changeProfileURL(url)\n }, i18n.t('save-notify__url_error'), true)\n\n if (res) {\n this.profile.custom_url = oldURL\n }\n }\n }\n\n saveMenuLink = async link => {\n return await this.apiSaveCall(async () => {\n const res = await ProfileAPI.setProfileMenuLink(link)\n this.profile.menu = link\n this.profile.is_menu_uploaded = false\n return res\n }, i18n.t('save-notify__menu_error'))\n }\n\n deleteMenuLink = async () => {\n if (await this.save({ menu: '', is_menu_uploaded: false })) {\n this.profile.menu = ''\n this.profile.is_menu_uploaded = false\n }\n }\n\n async uploadPhoto(img) {\n const oldPhoto = this.profile.photo\n try {\n this.profile.photo = img\n await this.apiSaveCall(async () => {\n this.profile.photo = (await ProfileAPI.uploadProfilePhoto(img)) + '?' + new Date().getTime()\n }, i18n.t('save-notify__photo_error'), true)\n } catch (err) {\n this.profile.photo = oldPhoto\n }\n }\n\n async uploadCustomLogo(file) {\n await this.apiSaveCall(async () => {\n this.profile.customization.logo = (await ProfileAPI.uploadProfileCustomLogo(file)) + '?' + new Date().getTime()\n }, i18n.t('save-notify__custom-logo_error'))\n }\n\n async deleteCustomLogo() {\n await this.apiSaveCall(async () => {\n await ProfileAPI.deleteProfileCustomLogo()\n this.profile.customization.logo = ''\n }, i18n.t('save-notify__custom-logo_delete_error'))\n }\n\n async uploadGroupLogo(file) {\n await this.apiSaveCall(async () => {\n this.profile.group_logo.img = (await ProfileAPI.uploadGroupLogo(file)) + '?' + new Date().getTime()\n }, i18n.t('save-notify__custom-logo_error'))\n }\n\n async deleteGroupLogo() {\n await this.apiSaveCall(async () => {\n await ProfileAPI.deleteGroupLogo()\n this.profile.group_logo.img = ''\n }, i18n.t('save-notify__custom-logo_delete_error'))\n }\n\n async uploadCustomBackground(file) {\n await this.apiSaveCall(async () => {\n this.profile.customization.background = (await ProfileAPI.uploadProfileCustomBackground(file)) + '?' + new Date().getTime()\n }, i18n.t('save-notify__custom-background_error'))\n }\n\n async deleteCustomBackground() {\n await this.apiSaveCall(async () => {\n await ProfileAPI.deleteProfileCustomBackground()\n this.profile.customization.background = ''\n }, i18n.t('save-notify__custom-background_delete_error'))\n }\n\n async deletePhoto() {\n await this.apiSaveCall(async () => {\n await ProfileAPI.deleteProfilePhoto()\n this.profile.photo = ''\n }, i18n.t('save-notify__photo_delete_error'))\n }\n\n async uploadMenu(file) {\n await this.apiSaveCall(async () => {\n this.profile.menu = await ProfileAPI.uploadProfileMenu(file)\n this.profile.is_menu_uploaded = true\n }, i18n.t('save-notify__menu_error'))\n }\n\n async deleteMenu() {\n await this.apiSaveCall(async () => {\n await ProfileAPI.deleteProfileMenu()\n this.profile.menu = ''\n this.profile.is_menu_uploaded = false\n }, i18n.t('save-notify__menu_delete_error'))\n }\n\n async restoreProfile() {\n try {\n await ProfileAPI.restoreProfile()\n window.location.reload()\n } catch (err) {\n // @ts-ignore\n window.notify(`${i18n.t('restore-profile__error')}: ${i18n.t(err.message)}`, 'error')\n }\n }\n\n async restoreClearProfile() {\n try {\n await ProfileAPI.restoreClearProfile()\n window.location.reload()\n } catch (err) {\n // @ts-ignore\n window.notify(`${i18n.t('restore-profile__error')}: ${i18n.t(err.message)}`, 'error')\n }\n }\n\n async hardDeleteProfile() {\n try {\n await ProfileAPI.hardDeleteProfile()\n // @ts-ignore\n window.notify(`${i18n.t('delete-profile__notification')}`, 'info')\n } catch (err) {\n // @ts-ignore\n window.notify(`${i18n.t('delete-profile__error')}: ${i18n.t(err.message)}`, 'error')\n }\n }\n\n addNewValue(key, data) {\n if (!this.profile[key]) {\n this.profile[key] = []\n }\n\n if (!checkLimit(key, this.profile[key], data?.name)) return\n\n if (!data) data = {}\n\n this.profile[key].push({\n value: newValuePlaceholder,\n type: key,\n ...data\n });\n }\n\n setSetting(key, value) {\n this.profile[key] = value\n }\n\n // refactor this\n async apiSaveCall(func, errorText, throwOnError = false) {\n try {\n const res = await func()\n // @ts-ignore\n window.notify(i18n.t('save-notify__success'), 'success')\n return res\n } catch (err) {\n // @ts-ignore\n window.notify(`${errorText}: ${i18n.t(err.message)}`, 'error')\n if (throwOnError) {\n throw err\n }\n }\n }\n}\n\nexport const profileStore = new ProfileStore()","import ProfileAPI from 'api/profile'\r\nimport SettingsAPI from 'api/settings'\r\nimport i18n from 'i18next'\r\nimport { makeAutoObservable, reaction } from 'mobx'\r\nimport { profileStore } from './profileStore'\r\n\r\nclass SettingsStore {\r\n isLoading = true\r\n settings = null\r\n reactions = []\r\n\r\n constructor() {\r\n makeAutoObservable(this)\r\n }\r\n\r\n load = () => {\r\n SettingsAPI.getSettings()\r\n .then(settings => {\r\n this.unregisterReactions()\r\n\r\n this.settings = settings\r\n\r\n this.isLoading = false\r\n\r\n this.registerReactions()\r\n })\r\n .catch(console.error)\r\n }\r\n\r\n unregisterReactions() {\r\n this.reactions.forEach(r => r())\r\n this.reactions = []\r\n }\r\n\r\n registerReactions() {\r\n this.reactions.push(\r\n reaction(\r\n () => this.settings.type,\r\n (value, r) => {\r\n this.changeType().then(() => {\r\n console.debug('changeType reaction')\r\n profileStore.load(true)\r\n })\r\n },\r\n ),\r\n )\r\n }\r\n\r\n toggleAutoSave = async () => {\r\n this.settings.disable_auto_save = !this.settings.disable_auto_save\r\n return await this.apiSaveCall(\r\n async () => {\r\n try {\r\n await SettingsAPI.setDisableAutoSave(this.settings.disable_auto_save)\r\n profileStore.setSetting('disable_auto_save', this.settings.disable_auto_save)\r\n } catch (err) {\r\n this.settings.disable_auto_save = !this.settings.disable_auto_save\r\n throw err\r\n }\r\n },\r\n i18n.t('save-notify__success'),\r\n i18n.t('save-notify__error'),\r\n )\r\n }\r\n\r\n changeType = async () => {\r\n return await this.apiSaveCall(\r\n async () => {\r\n return await SettingsAPI.setType(this.settings.type)\r\n },\r\n i18n.t('save-notify__change_type__success'),\r\n i18n.t('save-notify__change_type__error'),\r\n )\r\n }\r\n\r\n changeEmail = async () => {\r\n return await this.apiSaveCall(\r\n async () => {\r\n await SettingsAPI.changeEmail(this.settings.email)\r\n if (this.settings.loginIsNotEmail) delete this.settings.loginIsNotEmail\r\n },\r\n i18n.t('save-notify__change_email__success'),\r\n i18n.t('save-notify__change_email__error'),\r\n )\r\n }\r\n\r\n changePassword = async () => {\r\n return await this.apiSaveCall(\r\n async () => {\r\n return await SettingsAPI.changePassword(this.settings.old_password, this.settings.new_password)\r\n },\r\n i18n.t('save-notify__change_password__success'),\r\n i18n.t('save-notify__change_password__error'),\r\n )\r\n }\r\n\r\n deleteProfile = async () => {\r\n try {\r\n await SettingsAPI.deleteProfile()\r\n profileStore.profile['deleted_at'] = Math.round(Date.now() / 1000)\r\n } catch (err) {\r\n window.notify(`${i18n.t('delete-profile__error')}: ${i18n.t(err.message)}`, 'error')\r\n throw err\r\n }\r\n }\r\n\r\n async cancelRegistrationProfile() {\r\n try {\r\n await ProfileAPI.cancelRegistration()\r\n profileStore.updateProfile()\r\n } catch (err) {\r\n window.notify(`${i18n.t('cancel-register-profile__error')}: ${i18n.t(err.message)}`, 'error')\r\n }\r\n }\r\n\r\n async apiSaveCall(func, successText, errorPrefix) {\r\n try {\r\n const res = await func()\r\n window.notify(successText, 'success')\r\n return res\r\n } catch (err) {\r\n window.notify(`${errorPrefix}: ${i18n.t(err.message)}`, 'error')\r\n }\r\n }\r\n}\r\n\r\nexport const settingsStore = new SettingsStore()","\nimport i18n from 'i18next'\nimport { getCurrency } from './helpers'\n\nexport function onProductClick(accessory) {\n try {\n window.dataLayer.push({ ecommerce: null })\n window.dataLayer.push({\n event: \"select_item\",\n ecommerce: {\n items: [{\n item_name: accessory.name,\n item_id: accessory.id,\n index: 1,\n price: accessory.price / 100\n }]\n }\n })\n } catch (e) {\n console.error(e)\n }\n}\n\nexport function onProductDetailsClick(product) {\n try {\n window.dataLayer.push({ ecommerce: null })\n window.dataLayer.push({\n event: \"view_item\",\n ecommerce: {\n items: [{\n item_name: product.name,\n item_id: product.id,\n price: product.price / 100\n }]\n }\n })\n } catch (e) {\n console.error(e)\n }\n}\n\nexport function onCheckout(order, product, amount) {\n try {\n window.dataLayer.push({ ecommerce: null });\n window.dataLayer.push({\n event: \"begin_checkout\",\n ecommerce: { items: getOrderItems(order, product, amount) }\n });\n } catch (e) {\n console.error(e)\n }\n}\n\nexport function onPurchase(orderID, order, product, amount) {\n try {\n window.dataLayer.push({ ecommerce: null });\n window.dataLayer.push({\n event: \"purchase\",\n ecommerce: {\n transaction_id: orderID,\n value: amount.total + '',\n currency: getCurrency(i18n.language, true),\n items: getOrderItems(order, product, amount)\n }\n });\n } catch (e) {\n console.error(e)\n }\n}\n\n\nfunction getOrderItems(order, product, amount) {\n const items = [{\n item_name: product.name,\n item_id: product.id,\n price: product.price / 100,\n index: 1,\n quantity: order.count\n }]\n\n if (order.createPrintDesign) {\n items.push({\n item_name: \"З індивідуальним друком\",\n item_id: \"print-design\",\n price: amount.printTypeDesign,\n index: 2,\n quantity: 1\n })\n }\n\n if (order.enableCustomPageDesign) {\n items.push({\n item_name: \"Індивідуальний дизайн сторінки\",\n item_id: \"custom-page-design\",\n price: amount.pageDesign,\n index: 3,\n quantity: 1\n })\n }\n\n return items\n}","import { useTranslation } from \"react-i18next\"\n\nexport function isLegal(value) {\n return value === 'legal'\n}\n\nexport function hasRibbon(accessoryID) {\n return accessoryID === 3\n}\n\nexport function isNovaPoshta(value) {\n return value === \"novaposhta\"\n}\n\nexport function uaLangValidation(value) {\n return /^([\\d'А-яЕеЇїІіЄєҐґ№-][^ЫыЪъЭэЁё]*)*$/.test(value)\n}\n\nexport function numberValidation(value) {\n return /^\\d*$/.test(value)\n}\n\nexport function isAddressShipping(value) {\n return value === 'address'\n}\n\nexport function useCurrency(letters = false) {\n const { i18n } = useTranslation()\n\n return getCurrency(i18n.language, letters)\n}\n\nexport function getCurrency(lang, letters = false) {\n switch (lang) {\n case 'en':\n return letters ? 'USD' : '$'\n case 'ua':\n return letters ? 'UAH' : '₴'\n default:\n return letters ? 'UAH' : '₴'\n }\n}\n\nexport function round(value) {\n return Math.round(value * 100) / 100\n}","export default function isDebug() {\n return process.env.REACT_APP_DEBUG === \"true\"\n}","import { round } from \"./helpers\"\n\nexport const rowHeight = 60\nexport const gridWidht = 3\n\nexport function sortContacts(profile, warnings) {\n const result = []\n\n function filterWarnings(list, w) {\n if (!list.length) return []\n return list.filter((_, i) => !(w && w[i]))\n }\n\n function filterTitled(list, returnTitled) {\n if (!list.length) return []\n return list.filter(el => {\n if (returnTitled) {\n return el.title || (el.type === 'custom_button' && el.value)\n } else {\n return !el.title && !(el.type === 'custom_button' && el.value)\n }\n })\n }\n\n function addItems(arr, titled, type) {\n const list = filterWarnings(profile[type], warnings[type])\n .map(el => Object.assign(el, { type }))\n\n arr.push(...filterTitled(list, titled).map(el => {\n if (!el.id) {\n el.id = crypto.randomUUID()\n }\n return el\n }))\n }\n\n const order = [\n 'phones', 'emails', 'sites',\n 'messengers', 'banks', 'payments',\n 'social_networks', 'custom_buttons'\n ]\n\n if (profile.type === 30) {\n order.push('waiter_phones', 'waiter_messengers')\n }\n\n const titled = []\n\n order.forEach(el => {\n addItems(titled, true, el)\n addItems(result, false, el)\n })\n result.push(...titled)\n\n if (!profile.default_card_items || !profile.default_card_items.length) {\n profile.default_card_items = [\n { id: 'add-to-contacts', type: 'add-to-contacts' }\n ]\n }\n if (profile.type === 30 && !profile.default_card_items.find(el => el.type === 'menu')) {\n profile.default_card_items.push({\n id: 'menu', type: 'menu', href: profile.menu\n })\n }\n result.push(...profile.default_card_items)\n\n return result\n}\n\nexport function updateLayout(contacts, layout, prevLayout) {\n if (!contacts || !contacts.length) return []\n\n const getSize = (el) => {\n const h = el.type === 'add-to-contacts' || el.type === 'menu' ? round(42 / rowHeight) : round(60 / rowHeight)\n let w = el.is_with_title || el.title || el.type === 'add-to-contacts' || el.type === 'menu' ? gridWidht : 1\n if (el.type === 'custom_buttons' && el.value) w = gridWidht\n return { h, w }\n }\n\n let col = 0\n let row = 0\n\n layout = layout ?? []\n const contMap = new Map(contacts.map(el => [el.id, el]))\n layout = layout.filter(el => contMap.has(el.i))\n const layMap = new Map(layout && layout.map(el => [el.i, el]))\n const prevLayMap = new Map(prevLayout && prevLayout.map(el => [el.i, el]))\n\n\n //console.debug('===============================================')\n const changedWidth = []\n const changedHeight = []\n\n contacts.forEach(contact => {\n let dataGrid = layMap.get(contact.id)\n let prevDataGrid = prevLayMap.get(contact.id)\n const size = getSize(contact)\n\n if (!dataGrid) {\n if (col + size.w > gridWidht) {\n col = 0;\n row += size.h;\n }\n\n const next = size => {\n col += size.w;\n if (col > 2) {\n col = 0;\n row += size.h;\n }\n }\n\n for (\n let collisions = getCollisions(layout, { x: col, y: row, ...size });\n collisions.length;\n collisions = getCollisions(layout, { x: col, y: row, ...size })\n ) {\n collisions.forEach(collision => {\n next({\n w: size.w,\n h: collision.h\n })\n })\n\n }\n\n layout.push({ x: col, y: row, i: contact.id, ...size })\n\n next(size)\n } else {\n const { w, h } = dataGrid\n\n if (prevLayMap.size) {\n if (w !== prevDataGrid?.w ?? w) {\n changedWidth.push(dataGrid)\n }\n\n if (h !== prevDataGrid?.h ?? h) {\n changedHeight.push({\n el: dataGrid,\n diff: h - (prevDataGrid?.h ?? h)\n })\n }\n }\n }\n });\n\n changedHeight.forEach(({ el, diff }) => {\n const { y, i } = el\n\n const sorted = layout.filter(el => el.y >= y).sort((a, b) => a.y - b.y)\n const changedIndex = sorted.findIndex(el => el.i === i)\n\n for (let i = changedIndex + 1; i < sorted.length; i++) {\n const item = sorted[i]\n const index = layout.findIndex(el => el.i === item.i)\n layout[index].y += diff\n }\n })\n\n changedWidth.forEach(changedEl => {\n const { w, h } = changedEl\n\n let changes = {}\n if (w > 1) {\n let maxRow = 0\n let maxGridEl = null\n layout.forEach(item => {\n if (item.y > maxRow) {\n maxRow = item.y\n maxGridEl = item\n }\n })\n\n changes = { y: maxRow + maxGridEl?.h ?? 0, x: 0 }\n } else {\n let row = 0, col = 0\n const size = { w, h }\n\n const next = size => {\n col += size.w;\n if (col > 2) {\n col = 0;\n row += size.h;\n }\n }\n\n for (\n let collisions = getCollisions(layout, { x: col, y: row, ...size });\n collisions.length;\n collisions = getCollisions(layout, { x: col, y: row, ...size })\n ) {\n collisions.forEach(collision => {\n next({\n w: size.w,\n h: collision.h\n })\n })\n\n }\n\n changes = { x: col, y: row }\n }\n\n\n Object.assign(changedEl, changes)\n })\n\n clearGaps(layout)\n return layout\n}\n\nexport function getCollisions(layout, item) {\n console.debug('getCollisions', layout, item)\n return layout.filter(el => checkCollission(item, el))\n}\n\nexport function clearGaps(layout) {\n let currentY = 0;\n const sorted = layout.sort((a, b) => a.y - b.y)\n sorted.forEach((dataGrid, index) => {\n dataGrid.y = round(dataGrid.y)\n dataGrid.h = round(dataGrid.h)\n\n layout[index] = dataGrid;\n });\n\n const rows = {}\n sorted.forEach(el => {\n if (!rows[el.y]) {\n rows[el.y] = []\n }\n rows[el.y].push(el)\n })\n\n let isGapFound = false\n\n Object.keys(rows).forEach(row => {\n const y = rows[row][0].y\n const h = rows[row][0].h\n\n if (y > currentY) {\n console.log('currentY-y', currentY, y)\n rows[row].forEach(el => {\n const index = layout.findIndex(l => l.i === el.i)\n layout[index].y = currentY\n })\n isGapFound = true\n }\n\n currentY = round(y + h);\n })\n\n if (isGapFound) clearGaps(layout)\n\n console.debug('layout', layout, Math.round(currentY * 100) / 100)\n}\n\nexport function moveDown(layout, item, h) {\n const i = layout.findIndex(l => l.i === item.i)\n layout[i].y = layout[i].y + h\n layout = layout.filter(l => l.i !== item.i)\n const colissions = getCollisions(layout, item);\n console.debug('moveDown', item, h, colissions, layout)\n if (colissions.length) {\n colissions.forEach(c => moveDown(layout, c, h))\n }\n}\n\nexport function moveUp(layout, item, h) {\n const newY = item.y - h\n if (newY < 0) return false\n const colissions = getCollisions(layout.filter(l => l.i !== item.i), { ...item, y: newY });\n console.debug('moveUp', item, h, newY, colissions, layout)\n if (colissions.length) return false\n\n const i = layout.findIndex(l => l.i === item.i)\n layout[i].y = newY\n\n return true\n}\n\nexport function moveIcon(layout, item, filterFn) {\n const index = layout.findIndex(l => l.i === item.i)\n\n console.debug('moveIcon', item, layout)\n\n const hasPlaceLeft = item.x !== 0 && !layout.find(el => el.x === item.x - 1 && el.y === item.y && (!filterFn || filterFn(el)))\n if (hasPlaceLeft) {\n layout[index].x--\n console.debug('moveIcon left', layout[index], hasPlaceLeft)\n return\n }\n\n moveRight(layout, item)\n\n console.debug('movedIcon', item, layout)\n}\n\nfunction moveRight(layout, item) {\n const index = layout.findIndex(l => l.i === item.i)\n\n console.debug('moveRight0', item)\n\n if (layout[index].x + 1 >= gridWidht) {\n layout[index].x = 0;\n layout[index].y += 1;\n\n const collisions = getCollisions(layout, item)\n if (collisions.length) {\n collisions.forEach(c => moveRight(layout, c))\n }\n return\n }\n\n if (item.w === gridWidht) {\n moveDown(layout, item, 1)\n return\n }\n\n layout[index].x++\n\n const sortedElements = layout.sort((a, b) => Math.hypot(a.x, a.y) - Math.hypot(b.x, b.y))\n\n console.debug('moveRight1', item, sortedElements)\n\n const targetIndex = sortedElements.findIndex(\n el => el.i === item.i\n );\n\n const filtered = sortedElements[targetIndex - 1] ? sortedElements.slice(targetIndex - 1) : []\n\n console.debug('moveRight', item, filtered)\n\n let hasCollision;\n do {\n hasCollision = false;\n for (let i = 0; i < filtered.length; i++) {\n const elem = filtered[i]\n if (elem.i !== item.i && checkCollission(item, elem)) {\n hasCollision = true\n moveRight(layout, elem)\n }\n console.debug('moveRight3', hasCollision, elem, item)\n }\n } while (hasCollision)\n}\n\nfunction checkCollission(a, b) {\n if (a.i === b.i) return\n if (a.x + a.w <= b.x) return\n if (a.x >= b.x + b.w) return\n if (a.y + (a.h / 1.1) <= b.y) return\n if (a.y >= b.y + (b.h / 1.1)) return\n return true\n}","import { getCheckURLRegexp, validatePhone } from \"./validations\";\r\n\r\nexport const messengersList = [\r\n {\r\n name: \"Telegram\",\r\n placeholder: \"profile-messengers__telegram_placeholder\",\r\n validate: value => new RegExp('^(https\\:\\/\\/t\\.me\\/)?[0-9a-z_]{2,64}$', 'i').test(value)\r\n },\r\n {\r\n name: \"WhatsApp\",\r\n placeholder: \"profile-messengers__whatsapp_placeholder\",\r\n validate: value => {\r\n\r\n if (value.includes('whatsapp.com/channel/')) {\r\n return value.replace(/http(|s)(:\\/\\/|)(www\\.|)whatsapp\\.com\\/channel\\//i, '').length !== 0;\r\n }\r\n\r\n if (value.includes('wa.me')) {\r\n return new RegExp('^(https:\\\\/\\\\/)wa\\\\.me\\\\/([0-9]){2,50}$', 'i').test(value)\r\n }\r\n\r\n const result = validatePhone(value)\r\n return typeof (result) === 'string' ? false : result\r\n }\r\n },\r\n {\r\n name: \"Viber\",\r\n placeholder: \"profile-messengers__viber_placeholder\",\r\n validate: value => {\r\n if (value.includes('invite.viber.com')) {\r\n return getCheckURLRegexp(\"invite\\\\.viber\\\\.com\").test(value)\r\n }\r\n\r\n const result = validatePhone(value)\r\n return typeof (result) === 'string' ? false : result\r\n }\r\n },\r\n {\r\n name: \"Discord\",\r\n placeholder: 'profile-messengers__link_placeholder',\r\n validate: value => new RegExp('^(https:\\\\/\\\\/)discord\\\\.(gg|com)\\\\/(invite\\\\/)?([0-9A-Za-z]){2,64}', 'i').test(value)\r\n },\r\n {\r\n name: \"Messenger\",\r\n placeholder: \"profile-messengers__messenger_placeholder\",\r\n validate: value => {\r\n if (value.includes(\"messenger.com\")) {\r\n return new RegExp('^https:\\\\/\\\\/(www\\\\.)?messenger\\\\.com\\\\/t\\\\/[0-9a-zA-Z\\\\.]{5,50}$', 'i').test(value)\r\n }\r\n\r\n if (value.includes('m.me')) {\r\n return new RegExp('^https?:\\\\/\\\\/(www\\\\.)?m\\\\.me\\\\/[0-9a-zA-Z\\\\.]{5,50}(\\\\?ref\\\\=.*)*$', 'i').test(value)\r\n }\r\n\r\n return new RegExp('^[0-9a-zA-Z\\\\.]{5,50}$', 'i').test(value)\r\n }\r\n },\r\n {\r\n name: \"Skype\",\r\n placeholder: \"profile-messengers__skype_placeholder\",\r\n validate: value => {\r\n if (value.includes('join.skype.com')) {\r\n return new RegExp('^https?:\\\\/\\\\/join\\\\.skype\\\\.com\\\\/(invite\\\\/)*[0-9a-zA-Z]{5,50}$', 'i').test(value)\r\n }\r\n\r\n return new RegExp('^(live\\\\:)?[a-z][a-z0-9\\\\.,\\\\-_]{5,31}$', 'i').test(value)\r\n }\r\n },\r\n {\r\n name: \"Snapchat\",\r\n placeholder: \"profile-messengers__snapchat_placeholder\",\r\n validate: value => new RegExp('^(https:\\\\/\\\\/www\\\\.snapchat\\\\.com\\\\/add\\\\/)?[a-z][a-z0-9\\\\.\\\\-_]{3,15}$', 'i').test(value)\r\n },\r\n {\r\n name: \"Zoom\",\r\n placeholder: \"profile-messengers__zoom_placeholder\",\r\n validate: value => new RegExp('^(https:\\\\/\\\\/)([a-z0-9]+\\\\.)?zoom\\\\.[a-z]{2,}\\\\/[a-z0-9]+\\\\/[a-z0-9]+\\\\?pwd\\\\=[0-9A-Za-z]+', 'i').test(value)\r\n }\r\n]","export const paymentsOrder = {\r\n \"en\": [\r\n \"PayPal\", \"Cash App\", \"Stripe\", \"Venmo\", \"Zelle\", \"Solid Gate\", \"MonoPay\", \"LiqPay\", \"Fondy\", \"Wayforpay\", \"Square\", \"Liberapay\", \"Flattr\", \"Buy Me a Coffee\", \"Patreon\", \"Ko-fi\", 'Swish', 'Vipps', 'MobilePay', 'Bluecode', \"Payconiq by Bancontact\"\r\n ],\r\n \"ua\": [\r\n \"MonoPay\", \"LiqPay\", \"Fondy\", \"Wayforpay\", \"PayPal\", \"Cash App\", \"Stripe\", \"Venmo\", \"Zelle\", \"Solid Gate\", \"Square\", \"Liberapay\", \"Flattr\", \"Buy Me a Coffee\", \"Patreon\", \"Ko-fi\", 'Swish', 'Vipps', 'MobilePay', 'Bluecode', \"Payconiq by Bancontact\"\r\n ]\r\n}\r\n\r\nexport const paymentsList = [\r\n {\r\n name: \"MonoPay\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^https\\:\\/\\/(pay\\.)?mbnk\\.(app|biz)\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"A-Bank\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^https\\:\\/\\/(pay\\.)?a-bank\\.com\\.ua\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"PayPal\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^https\\:\\/\\/(www\\.)?paypal\\.(com|me)\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"Cash App\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^https\\:\\/\\/cash\\.app\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"Stripe\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^https\\:\\/\\/(checkout\\.|buy\\.)?stripe\\.com\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"Venmo\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^https\\:\\/\\/(account\\.)?venmo\\.com\\/u\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"Zelle\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^https\\:\\/\\/(www\\.|enroll\\.)?zellepay\\.com\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"Solid Gate\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^https\\:\\/\\/(payment-page\\.)?solidgate\\.com\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"Fondy\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^https\\:\\/\\/(pay\\.|api\\.)?fondy\\.(eu|ua)\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"LiqPay\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^https\\:\\/\\/(www\\.)?liqpay\\.ua\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"Wayforpay\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^https\\:\\/\\/(secure|i)?(\\.)?(wayforpay|wtickets)\\.(com|online)\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"Square\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^https\\:\\/\\/(checkout\\.)?(square|squareup)\\.(site|com)\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"Liberapay\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^https\\:\\/\\/(\\.en|ru\\.)?liberapay\\.com\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"Flattr\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^https\\:\\/\\/(www\\.)?flattr\\.com\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"Buy Me a Coffee\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^https\\:\\/\\/(www\\.)?buymeacoffee\\.com\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"Patreon\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^https\\:\\/\\/(www\\.)?patreon\\.com\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"Ko-fi\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^https\\:\\/\\/ko-fi\\.com\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"Swish\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^http(s|)\\:\\/\\/(www\\.|app\\.|mpc\\.)swish\\.nu\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"Vipps\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^http(s|)\\:\\/\\/(qr\\.|)vipps\\.no\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"Bluecode\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => {\r\n return new RegExp('^http(|s):\\/\\/(go\\.|sdk-selector\\.)bluecode.com\\/.+$').test(value)\r\n }\r\n },\r\n {\r\n name: \"MobilePay\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^http(s|)\\:\\/\\/(www\\.|)mobilepay\\.dk\\/.+$', 'i').test(value)\r\n },\r\n {\r\n name: \"Payconiq by Bancontact\",\r\n placeholder: \"profile-payments__link_placeholder\",\r\n validate: value => new RegExp('^http(s|)\\:\\/\\/(www\\.|)payconiq\\.(com|be)\\/.+$', 'i').test(value)\r\n }\r\n]","export default function serviceParser(link) {\n if (!link) return 'site'\n\n link = link.value ?? link\n\n if (link.includes('instagram.com')) {\n return 'Instagram'\n }\n\n if (link.includes('play.google.com') && link.includes('store')) {\n return 'GooglePlay'\n }\n\n if (link.includes('microsoft.com')) {\n return 'MicrosoftStore'\n }\n\n if (link.includes('besplatka.ua')) {\n return 'Besplatka'\n }\n\n if (link.includes('olx.ua')) {\n return 'OLX'\n }\n\n if (link.includes('crafta.ua')) {\n return 'Crafta'\n }\n\n if (link.includes('prom.ua') || link.includes('deal.by') || link.includes('satu.kz') || link.includes('tiu.ru')) {\n return 'Prom'\n }\n\n if (link.includes('bigl.ua')) {\n return 'Bigl'\n }\n\n if (link.includes('izi.ua')) {\n return 'IZI'\n }\n\n if (link.includes('kabanchik.ua')) {\n return 'Kabanchik'\n }\n\n if (link.includes('shafa.ua')) {\n return 'Shafa'\n }\n\n if (link.includes('rozetka.com.ua')) {\n return 'Rozetka'\n }\n\n if (link.includes('etsy.com')) {\n return 'Etsy'\n }\n\n if (link.includes('amazon.com')) {\n return 'Amazon'\n }\n\n if (link.includes('joom.com')) {\n return 'Joom'\n }\n\n if (link.includes('ebay.com')) {\n return 'eBay'\n }\n\n if (link.includes('avito.ru')) {\n return 'Avito'\n }\n\n if (link.includes('airbnb.ru')) {\n return 'Airbnb'\n }\n\n if (link.includes('booking.com')) {\n return 'Booking'\n }\n\n if ((link.includes('google') || link.includes('goo.gl')) && link.includes('maps')) {\n return 'GoogleMaps'\n }\n\n if (link.includes('mega.nz')) {\n return 'MEGA'\n }\n\n if (link.includes('onedrive.com') || link.includes('onedrive.live.com') || link.includes('1drv.ms')) {\n return 'OneDrive'\n }\n\n if (link.includes('dropbox.com')) {\n return 'Dropbox'\n }\n\n if (link.includes('drive.google.com')) {\n return 'GoogleDrive'\n }\n\n if (link.includes('fex.net')) {\n return 'FEX'\n }\n\n if (link.includes('disk.yandex.ua') || link.includes('yadi.sk')) {\n return 'YandexDisk'\n }\n\n if (link.includes('twitch.tv')) {\n return 'Twitch'\n }\n\n if (link.includes('pscp.tv')) {\n return 'Periscope'\n }\n\n if (link.includes('tiktok.com')) {\n return 'TikTok'\n }\n\n if (link.includes('likee.com')) {\n return 'Likee'\n }\n\n if ((link.includes('youtube.com') || link.includes('youtu.be')) && !link.includes('music') && !link.includes('shorts')) {\n return 'YouTube'\n }\n\n if (link.includes('vimeo.com')) {\n return 'Vimeo'\n }\n\n if (link.includes('apps.apple.com')) {\n return 'AppStore'\n }\n\n if (link.includes('itunes.apple.com')) {\n return 'iTunes'\n }\n\n if (link.includes('music.apple.com')) {\n return 'AppleMusic'\n }\n\n if (link.includes('books.apple.com')) {\n return 'AppleBooks'\n }\n\n if (link.includes('tv.apple.com')) {\n return 'AppleTV'\n }\n\n if (link.includes('icloud.com')) {\n return 'iCloud'\n }\n\n if (link.includes('google.com') && link.includes('music')) {\n return 'GooglePlayMusic'\n }\n\n if (link.includes('music.yandex.ru')) {\n return 'YandexMusic'\n }\n\n if (link.includes('music.youtube.com')) {\n return 'YouTubeMusic'\n }\n\n if (link.includes('soundcloud.com')) {\n return 'SoundCloud'\n }\n\n if (link.includes('spotify.com')) {\n return 'Spotify'\n }\n\n if (link.includes('boom.ru')) {\n return 'BOOM'\n }\n\n if (link.includes('tidal.com')) {\n return 'Tidal'\n }\n\n if (link.includes('deezer.com')) {\n return 'Deezer'\n }\n\n if (link.includes('vk.com')) {\n return 'VK'\n }\n\n if (link.includes('ok.ru')) {\n return 'OK'\n }\n\n if (link.includes('reddit.com')) {\n return 'Reddit'\n }\n\n if (link.includes('ask.fm')) {\n return 'ASKfm'\n }\n\n if (link.includes('tumblr.com')) {\n return 'Tumblr'\n }\n\n if (link.includes('facebook.com')) {\n return 'Facebook'\n }\n\n if (link.includes('twitter.com') || link.includes('x.com')) {\n return 'X (Twitter)'\n }\n\n if (link.includes('.huawei.com')) {\n return 'AppGallery'\n }\n\n if (link.includes('of.com') || link.includes('of.tv') || link.includes('onlyfans.com')) {\n return 'OnlyFans'\n }\n\n if (link.includes('youtube.com/shorts')) {\n return 'YouTube Shorts'\n }\n\n if (link.includes('wikimapia.org')) {\n return 'Wikimapia'\n }\n\n if (link.includes('bing.com/maps')) {\n return 'Bing Maps'\n }\n\n if (link.includes('.waze.com')) {\n return 'Waze'\n }\n\n if (link.includes('tripadvisor.com')) {\n return 'Tripadvisor'\n }\n\n if (link.includes('yelp.com')) {\n return 'Yelp'\n }\n\n if (link.includes('linkedin.com')) {\n return 'LinkedIn'\n }\n\n if (link.includes('livejournal.com')) {\n return 'Livejournal'\n }\n\n if (link.includes('pinterest.com') || link.includes('pin.it')) {\n return 'Pinterest'\n }\n\n if (link.includes('behance.net')) {\n return 'Behance'\n }\n\n if (link.includes('dribbble.com')) {\n return 'Dribbble'\n }\n\n if (link.includes('deviantart.com') || link.includes('fav.me')) {\n return 'DeviantArt'\n }\n\n if (link.includes('500px.com')) {\n return '500px'\n }\n\n if (link.includes('flickr.com') || link.includes('flic.kr')) {\n return 'Flickr'\n }\n\n if (link.includes('artstation.com')) {\n return 'ArtStation'\n }\n\n if (link.includes('github.com') || link.includes('github.io')) {\n return 'GitHub'\n }\n\n if (link.includes('stackoverflow.com')) {\n return 'StackOverflow'\n }\n\n return 'site'\n}\n","import { messengersList } from \"./messengersList\";\nimport { paymentsList } from \"./paymentsList\";\nimport serviceParser from \"./serviceParser.ts\";\n\nexport const limits = {\n emails: 6,\n phones: 6,\n waiter_phones: 6,\n sites: 3\n};\n\nexport const limitsByName = {\n payments: 3,\n messengers: 3,\n waiter_messengers: 3,\n banks: 3,\n social_networks: 3,\n}\n\nexport function checkLimit(type, values, name, onErr) {\n if (!values) return true\n if (!values.length) return true\n if (!type) return true\n\n if (limits[type]) {\n return values.length < limits[type]\n }\n\n if (limitsByName[type]) {\n if (!name) return true\n\n const limit = limitsByName[type]\n\n const services = {}\n values.forEach(value => {\n const service = value.name\n if (!services[service]) services[service] = 0\n !isNew(value) && services[service]++\n })\n\n const overLimit = Object.entries(services).find(([service, count]) => count >= limit && service !== 'site' && (name === '*' || service === name))\n if (overLimit) {\n onErr && onErr(...overLimit)\n return false\n } else {\n return true\n }\n }\n}\n\nexport function validateService(value, arr, field) {\n if (isNew(value)) return false\n if (!validateURL(value)) return false\n\n const services = {}\n arr.forEach(value => {\n if (!value.name) value.name = serviceParser(value.value)\n if (value.name === 'site') return\n let service = value.name\n if (!services[service]) services[service] = 0\n services[service]++\n })\n\n const names = Object.keys(services)\n for (let i = 0; i < names.length; i++) {\n const name = names[i]\n const limit = limitsByName[field]\n if (!limit) continue\n\n if (services[name] > limit) {\n const i = arr.findIndex(v => v.id === value.id)\n if (i === arr.length - 1) return 'service-error__limit'\n }\n }\n\n return true\n}\n\nexport function validateEmail(email) {\n if (isNew(email)) return false\n\n email = email.value ? email.value : email\n\n return /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/.test(email)\n}\n\nexport function validateName(name) {\n if (isNew(name)) return false\n\n return /\\w{0,64}/gm.test(name)\n}\n\nexport function validateInfo(info) {\n if (isNew(info)) return false\n\n return /\\w*/.test(info)\n}\n\nexport function validatePhone(phone) {\n if (isNew(phone)) return false\n\n phone = phone.value ? phone.value : phone\n\n if (!phone || phone === '+') return false\n\n if (!/^\\+?\\d+$/.test(phone)) return 'phone-error__only_digits'\n\n if (/^\\+?380.*/.test(phone) && !/^\\+?380\\d{9}$/.test(phone)) return 'phone-error__ukr_digits_count'\n\n if (phone.length > 50) return 'phone-error__digits_count'\n\n return true\n}\n\nexport function validatePassword(password) {\n if (isNew(password)) return false\n\n return password.length > 0\n}\n\nexport function validateDomain(domain) {\n return new RegExp(`^${getCheckDomainRegexp().source}$`).test(domain)\n}\n\nexport function validateURL(url) {\n if (isNew(url)) return false\n\n try {\n new URL(url.value ? url.value : url);\n } catch {\n return false;\n }\n\n return true;\n\n}\n\nconst banksChecks = {\n \"Privat24\": '(next\\\\.|www\\\\.)?privat24\\\\.ua',\n \"Monobank\": '(api\\\\.|send\\\\.|www\\\\.)?monobank(\\\\.com)?\\\\.ua',\n \"A-Bank\": '(pay\\\\.a-bank|a-bank|inst\\\\d+\\\\.paylink)\\\\.com\\\\.ua'\n}\n\nexport function validateBank(bank) {\n if (isNew(bank.value)) return false\n\n const domainCheck = banksChecks[bank.name]\n if (!domainCheck) return false\n\n return getCheckURLRegexp(domainCheck).test(bank.value)\n}\n\nexport function validateMessenger(messenger) {\n if (isNew(messenger.value)) return false\n\n const messInfo = messengersList.find(m => m.name === messenger.name)\n if (!messInfo) return false\n return messInfo.validate(messenger.value)\n}\n\nexport function validatePayment(data) {\n if (isNew(data.value)) return false\n\n const info = paymentsList.find(m => m.name === data.name)\n if (!info) return false\n return info.validate(data.value)\n}\n\nexport function validateSite(site) {\n if (isNew(site.value)) return false\n\n return validateURL(site.value)\n}\n\nexport function validateProfileURL(url) {\n if (isNew(url)) return false\n\n return new RegExp('^[a-z0-9\\\\-_]+$').test(url)\n}\n\nexport function validateCustomButton(custom_button) {\n const { title, value, icon, link } = custom_button\n const warnings = {\n title: false,\n value: false,\n emoji: false,\n link: false\n }\n\n let valid = true\n\n const isEmpty = value => !value\n\n if (isEmpty(title) && isEmpty(value) && isEmpty(link) && isEmpty(icon)) return false\n\n if (isNew(title) && isNew(value) && isNew(link) && isNew(icon)) return false\n\n if (title.length > 400) {\n warnings.title = 'custom-button-title-error__too_long'\n valid = false\n }\n\n if (value.length > 400) {\n warnings.value = 'custom-button-title-error__too_long'\n valid = false\n }\n\n if (link && !isNew(link) && !validateURL(link)) {\n warnings.link = true\n valid = false\n }\n\n if (valid) return true\n\n return warnings\n}\n\nexport function validateCustomization(customization) {\n const { logo_link, logo, background, disable_created_by, ...colors } = customization\n const warnings = {\n logo_link: false,\n }\n\n let valid = true\n\n const isEmpty = value => !value\n\n Object.keys(colors).forEach(key => {\n const value = colors[key]\n if (!isEmpty(value) && !isNew(value) && !validateHex(value)) {\n warnings[key] = true\n valid = false\n } else {\n warnings[key] = false\n }\n })\n\n if (!isEmpty(logo_link) && !isNew(logo_link) && !validateURL(logo_link)) {\n warnings.logo_link = true\n valid = false\n }\n\n if (valid) return true\n\n return warnings\n}\n\nexport function validateGroupLogo(groupLogo) {\n const { link } = groupLogo\n const warnings = {\n link: false,\n }\n\n let valid = true\n\n const isEmpty = value => !value\n\n if (!isEmpty(link) && !isNew(link) && !validateURL(link)) {\n warnings.link = true\n valid = false\n }\n\n if (valid) return true\n\n return warnings\n}\n\nexport function getCheckDomainRegexp() {\n return new RegExp('(([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}(\\\\:[0-9]{1,5})*', 'i')\n}\n\nexport function getCheckURLRegexp(domain) {\n const pattern = '^(https?:\\\\/\\\\/)' + // protocol\n domain +\n '(\\\\/[-A-z\\\\d%_.,~+\\\\:@]*)*' + // path\n '(\\\\?[/\\\\:;&A-z\\\\d%_,.~+=-]*)?' + // query string \n '(\\\\#[-A-z\\\\d_\\\\:]*)?$'\n\n return new RegExp(pattern, 'i')\n}\n\nexport function validateHex(hex) {\n return new RegExp('^#(\\\\p{Hex_Digit}{3}|\\\\p{Hex_Digit}{6}|\\\\p{Hex_Digit}{8})$', 'ug').test(hex)\n}\n\nexport const newValuePlaceholder = '__new__'\n\nexport function isNew(value) {\n if (value && value.value) value = value.value\n return value === newValuePlaceholder\n}","import { $mobx } from 'mobx';\n\nexport type Stores = {\n [storeName: string]: Object;\n};\n\nexport type StoresHook = {\n stores: Stores;\n $mobx: Symbol;\n};\n\ndeclare var window: {\n __MOBX_DEVTOOLS_GLOBAL_STORES_HOOK__: StoresHook;\n};\n\nexport const injectStores = (rootStore: Stores) => {\n // eslint-disable-next-line no-underscore-dangle\n window.__MOBX_DEVTOOLS_GLOBAL_STORES_HOOK__ = { stores: rootStore, $mobx };\n return rootStore;\n};\n","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\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 // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\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\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface HandlerResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData\n status?: number;\n}\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\ntype DataFunctionReturnValue = Promise | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (\n args: LoaderFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (\n args: ActionFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n unstable_actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => Promise\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise;\n}\n\nexport interface AgnosticPatchRoutesOnMissFunction<\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> {\n (opts: {\n path: string;\n matches: M[];\n patch: (routeId: string | null, children: AgnosticRouteObject[]) => void;\n }): void | Promise;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: string[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\n\nexport function matchRoutesImpl<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename: string,\n allowPartial: boolean\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 // 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 let decoded = decodePath(pathname);\n matches = matchRouteBranch(\n branches[i],\n decoded,\n allowPartial\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string,\n allowPartial = false\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 let route = meta.route;\n\n if (\n !match &&\n end &&\n allowPartial &&\n !routesMeta[routesMeta.length - 1].route.index\n ) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false,\n },\n remainingPathname\n );\n }\n\n if (!match) {\n return null;\n }\n\n Object.assign(matchedParams, match.params);\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nfunction decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\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\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n HandlerResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n AgnosticPatchRoutesOnMissFunction,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n matchRoutesImpl,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE DO NOT USE\n *\n * Patch additional children routes into an existing parent route\n * @param routeId The parent route id or a callback function accepting `patch`\n * to perform batch patching\n * @param children The additional children routes\n */\n patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n unstable_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n unstable_patchRoutesOnMiss?: AgnosticPatchRoutesOnMissFunction;\n unstable_dataStrategy?: DataStrategyFunction;\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?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.unstable_dataStrategy || defaultDataStrategy;\n let patchRoutesOnMissImpl = init.unstable_patchRoutesOnMiss;\n\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n unstable_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null && !patchRoutesOnMissImpl) {\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 // If the user provided a patchRoutesOnMiss implementation and our initial\n // match is a splat route, clear them out so we run through lazy discovery\n // on hydration in case there's a more accurate lazy route match\n if (initialMatches && patchRoutesOnMissImpl) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n\n let initialized: boolean;\n if (!initialMatches) {\n // We need to run patchRoutesOnMiss in initialize()\n initialized = false;\n initialMatches = [];\n } else if (initialMatches.some((m) => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some((m) => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = (m: AgnosticDataRouteMatch) => {\n // No loader, nothing to initialize\n if (!m.route.loader) {\n return true;\n }\n // Explicitly opting-in to running on hydration\n if (\n typeof m.route.loader === \"function\" &&\n m.route.loader.hydrate === true\n ) {\n return false;\n }\n // Otherwise, initialized if hydrated with data or an error\n return (\n (loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined)\n );\n };\n\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Map of pending patchRoutesOnMiss() promises (keyed by path/matches) so\n // that we only kick them off once for a given combo\n let pendingPatchRoutes = new Map<\n string,\n ReturnType\n >();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | 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 pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: 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 actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n fogOfWar.active,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (\n isErrorResult(result) &&\n isRouteErrorResponse(result.error) &&\n result.error.status === 404\n ) {\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error,\n },\n });\n return;\n }\n }\n\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors,\n } = await handleLoaders(\n request,\n location,\n matches,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\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: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\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 isFogOfWar: boolean,\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let { error, notFoundMatches, route } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else {\n matches = discoverResult.matches;\n }\n }\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 let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches\n );\n result = results[0];\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 let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\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 to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result],\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 isFogOfWar: boolean,\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n let shouldUpdateNavigationState =\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration);\n\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let { error, notFoundMatches, route } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.unstable_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n if (shouldUpdateNavigationState) {\n let updates: Partial = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(request, redirect.result, {\n replace,\n });\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 pendingActionResult,\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 // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors)\n .filter(([id]) => !matchesToLoad.some((m) => m.route.id === id))\n .forEach(([routeId, error]) => {\n errors = Object.assign(errors || {}, { [routeId]: error });\n });\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n matches,\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getUpdatedActionData(\n pendingActionResult: PendingActionResult | undefined\n ): Record | null | undefined {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n\n function getUpdatedRevalidatingFetchers(\n revalidatingFetchers: RevalidatingFetcher[]\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n function detectAndHandle405Error(m: AgnosticDataRouteMatch) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return true;\n }\n return false;\n }\n\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n fetchRequest,\n [match],\n requestMatches\n );\n let actionResult = actionResults[0];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.unstable_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(revalidationRequest, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n fetchRequest,\n [match],\n matches\n );\n let result = results[0];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[]\n ): Promise {\n try {\n let results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n return {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n }\n\n return convertHandlerResultToDataResult(result);\n })\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n return matchesToLoad.map(() => ({\n type: ResultType.error,\n error: e,\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 let [loaderResults, ...fetcherResults] = await Promise.all([\n matchesToLoad.length\n ? callDataStrategy(\"loader\", request, matchesToLoad, matches)\n : [],\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n let fetcherRequest = createClientSideRequest(\n init.history,\n f.path,\n f.controller.signal\n );\n return callDataStrategy(\n \"loader\",\n fetcherRequest,\n [f.match],\n f.matches\n ).then((r) => r[0]);\n } else {\n return Promise.resolve({\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n });\n }\n }),\n ]);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function handleNavigational404(pathname: string) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n\n return { notFoundMatches: matches, route, error };\n }\n\n function handleDiscoverRouteError(\n pathname: string,\n discoverResult: DiscoverRoutesErrorResult\n ) {\n let matches = discoverResult.partialMatches;\n let route = matches[matches.length - 1].route;\n let error = getInternalRouterError(400, {\n type: \"route-discovery\",\n routeId: route.id,\n pathname,\n message:\n discoverResult.error != null && \"message\" in discoverResult.error\n ? discoverResult.error\n : String(discoverResult.error),\n });\n return { notFoundMatches: matches, route, error };\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function checkFogOfWar(\n matches: AgnosticDataRouteMatch[] | null,\n routesToUse: AgnosticDataRouteObject[],\n pathname: string\n ): { active: boolean; matches: AgnosticDataRouteMatch[] | null } {\n if (patchRoutesOnMissImpl) {\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n return { active: true, matches: fogMatches || [] };\n } else {\n let leafRoute = matches[matches.length - 1].route;\n if (\n leafRoute.path &&\n (leafRoute.path === \"*\" || leafRoute.path.endsWith(\"/*\"))\n ) {\n // If we matched a splat, it might only be because we haven't yet fetched\n // the children that would match with a higher score, so let's fetch\n // around and find out\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n\n return { active: false, matches: null };\n }\n\n type DiscoverRoutesSuccessResult = {\n type: \"success\";\n matches: AgnosticDataRouteMatch[] | null;\n };\n type DiscoverRoutesErrorResult = {\n type: \"error\";\n error: any;\n partialMatches: AgnosticDataRouteMatch[];\n };\n type DiscoverRoutesAbortedResult = { type: \"aborted\" };\n type DiscoverRoutesResult =\n | DiscoverRoutesSuccessResult\n | DiscoverRoutesErrorResult\n | DiscoverRoutesAbortedResult;\n\n async function discoverRoutes(\n matches: AgnosticDataRouteMatch[],\n pathname: string,\n signal: AbortSignal\n ): Promise {\n let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n let route =\n partialMatches.length > 0\n ? partialMatches[partialMatches.length - 1].route\n : null;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n try {\n await loadLazyRouteChildren(\n patchRoutesOnMissImpl!,\n pathname,\n partialMatches,\n routesToUse,\n manifest,\n mapRouteProperties,\n pendingPatchRoutes,\n signal\n );\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n }\n }\n\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n let matchedSplat = false;\n if (newMatches) {\n let leafRoute = newMatches[newMatches.length - 1].route;\n\n if (leafRoute.index) {\n // If we found an index route, we can stop\n return { type: \"success\", matches: newMatches };\n }\n\n if (leafRoute.path && leafRoute.path.length > 0) {\n if (leafRoute.path === \"*\") {\n // If we found a splat route, we can't be sure there's not a\n // higher-scoring route down some partial matches trail so we need\n // to check that out\n matchedSplat = true;\n } else {\n // If we found a non-splat route, we can stop\n return { type: \"success\", matches: newMatches };\n }\n }\n }\n\n let newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n // If we are no longer partially matching anything, this was either a\n // legit splat match above, or it's a 404. Also avoid loops if the\n // second pass results in the same partial matches\n if (\n !newPartialMatches ||\n partialMatches.map((m) => m.route.id).join(\"-\") ===\n newPartialMatches.map((m) => m.route.id).join(\"-\")\n ) {\n return { type: \"success\", matches: matchedSplat ? newMatches : null };\n }\n\n partialMatches = newPartialMatches;\n route = partialMatches[partialMatches.length - 1].route;\n if (route.path === \"*\") {\n // The splat is still our most accurate partial, so run with it\n return { type: \"success\", matches: partialMatches };\n }\n }\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n function patchRoutes(\n routeId: string | null,\n children: AgnosticRouteObject[]\n ): void {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties\n );\n\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\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(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\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 * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\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 unstable_dataStrategy || null,\n false,\n match\n );\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 unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\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 unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\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 for a\n // `queryRoute` call, we throw the `HandlerResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isHandlerResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\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 unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\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 let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n result = results[0];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\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.response.status,\n headers: {\n Location: result.response.headers.get(\"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 // 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\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 = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\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 : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\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 : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\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:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\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 pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\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 // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null\n ): Promise {\n let results = await callDataStrategyImpl(\n unstable_dataStrategy || defaultDataStrategy,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n return convertHandlerResultToDataResult(result);\n })\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: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[0]\n : undefined;\n let boundaryMatches = boundaryId\n ? getLoaderMatchesUntilBoundary(matches, boundaryId)\n : matches;\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (isInitialLoad) {\n if (typeof route.loader !== \"function\" || route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n unstable_actionStatus: actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n isInitialLoad ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n unstable_actionStatus: actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Idempotent utility to execute patchRoutesOnMiss() to lazily load route\n * definitions and update the routes/routeManifest\n */\nasync function loadLazyRouteChildren(\n patchRoutesOnMissImpl: AgnosticPatchRoutesOnMissFunction,\n path: string,\n matches: AgnosticDataRouteMatch[],\n routes: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n pendingRouteChildren: Map>,\n signal: AbortSignal\n) {\n let key = [path, ...matches.map((m) => m.route.id)].join(\"-\");\n try {\n let pending = pendingRouteChildren.get(key);\n if (!pending) {\n pending = patchRoutesOnMissImpl({\n path,\n matches,\n patch: (routeId, children) => {\n if (!signal.aborted) {\n patchRoutesImpl(\n routeId,\n children,\n routes,\n manifest,\n mapRouteProperties\n );\n }\n },\n });\n pendingRouteChildren.set(key, pending);\n }\n\n if (pending && isPromise(pending)) {\n await pending;\n }\n } finally {\n pendingRouteChildren.delete(key);\n }\n}\n\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [routeId, \"patch\", String(route.children?.length || \"0\")],\n manifest\n );\n if (route.children) {\n route.children.push(...dataChildren);\n } else {\n route.children = dataChildren;\n }\n } else {\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [\"patch\", String(routesToUse.length || \"0\")],\n manifest\n );\n routesToUse.push(...dataChildren);\n }\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nfunction defaultDataStrategy(\n opts: DataStrategyFunctionArgs\n): ReturnType {\n return Promise.all(opts.matches.map((m) => m.resolve()));\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise {\n let routeIdsToLoad = matchesToLoad.reduce(\n (acc, m) => acc.add(m.route.id),\n new Set()\n );\n let loadedMatches = new Set();\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: matches.map((match) => {\n let shouldLoad = routeIdsToLoad.has(match.route.id);\n // `resolve` encapsulates the route.lazy, executing the\n // loader/action, and mapping return values/thrown errors to a\n // HandlerResult. Users can pass a callback to take fine-grained control\n // over the execution of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = (handlerOverride) => {\n loadedMatches.add(match.route.id);\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n manifest,\n mapRouteProperties,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n }),\n request,\n params: matches[0].params,\n context: requestContext,\n });\n\n // Throw if any loadRoute implementations not called since they are what\n // ensures a route is fully loaded\n matches.forEach((m) =>\n invariant(\n loadedMatches.has(m.route.id),\n `\\`match.resolve()\\` was not called for route id \"${m.route.id}\". ` +\n \"You must call `match.resolve()` on every match passed to \" +\n \"`dataStrategy` to ensure all routes are properly loaded.\"\n )\n );\n\n // Filter out any middleware-only matches for which we didn't need to run handlers\n return results.filter((_, i) => routeIdsToLoad.has(matches[i].route.id));\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: HandlerResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise;\n if (handlerOverride) {\n handlerPromise = handlerOverride((ctx: unknown) => actualHandler(ctx));\n } else {\n handlerPromise = (async () => {\n try {\n let val = await actualHandler();\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n }\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.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 // We should already be catching and converting normal handler executions to\n // HandlerResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertHandlerResultToDataResult(\n handlerResult: HandlerResult\n): Promise {\n let { result, type, status } = handlerResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\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 (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : status,\n };\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, statusCode: status };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map,\n skipLoaderErrorBubbling: boolean\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 let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\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 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 !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\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 // 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 } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\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 !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[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 pendingActionResult: PendingActionResult | 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 pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n message,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\" | \"route-discovery\";\n message?: string;\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 (type === \"route-discovery\") {\n errorMessage =\n `Unable to match URL \"${pathname}\" - the \\`children()\\` function for ` +\n `route \\`${routeId}\\` threw the following error:\\n${message}`;\n } else if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isPromise(val: unknown): val is Promise {\n return typeof val === \"object\" && val != null && \"then\" in val;\n}\n\nfunction isHandlerResult(result: unknown): result is HandlerResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectHandlerResult(result: HandlerResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\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 isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n//#endregion\n","export const DEFAULT_ENVIRONMENT = 'production';\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import type { Event, EventHint, EventProcessor } from '@sentry/types';\nimport { SyncPromise, getGlobalSingleton, isThenable, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\n\n/**\n * Returns the global event processors.\n * @deprecated Global event processors will be removed in v8.\n */\nexport function getGlobalEventProcessors(): EventProcessor[] {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @deprecated Use `addEventProcessor` instead. Global event processors will be removed in v8.\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n // eslint-disable-next-line deprecation/deprecation\n getGlobalEventProcessors().push(callback);\n}\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nexport function notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint: EventHint,\n index: number = 0,\n): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n\n DEBUG_BUILD && processor.id && result === null && logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n}\n","import type {\n Breadcrumb,\n BreadcrumbHint,\n CaptureContext,\n CheckIn,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n FinishedCheckIn,\n MonitorConfig,\n Primitive,\n Scope as ScopeInterface,\n Session,\n SessionContext,\n Severity,\n SeverityLevel,\n Span,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport { GLOBAL_OBJ, isThenable, logger, timestampInSeconds, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Hub } from './hub';\nimport { runWithAsyncContext } from './hub';\nimport { getCurrentHub, getIsolationScope } from './hub';\nimport type { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport type { ExclusiveEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent';\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\nexport function captureException(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n exception: any,\n hint?: ExclusiveEventHintOrCaptureContext,\n): string {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().captureException(exception, parseEventHintOrCaptureContext(hint));\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param captureContext Define the level of the message or pass in additional data to attach to the message.\n * @returns the id of the captured message.\n */\nexport function captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n captureContext?: CaptureContext | Severity | SeverityLevel,\n): string {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param exception The event to send to Sentry.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\nexport function captureEvent(event: Event, hint?: EventHint): string {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n *\n * @deprecated Use getCurrentScope() directly.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function configureScope(callback: (scope: Scope) => void): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().addBreadcrumb(breadcrumb, hint);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, deprecation/deprecation\nexport function setContext(name: string, context: { [key: string]: any } | null): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setExtras(extras: Extras): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setExtra(key: string, extra: Extra): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setTags(tags: { [key: string]: Primitive }): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setTag(key: string, value: Primitive): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setUser(user: User | null): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n */\nexport function withScope(callback: (scope: Scope) => T): T;\n/**\n * Set the given scope as the active scope in the callback.\n */\nexport function withScope(scope: ScopeInterface | undefined, callback: (scope: Scope) => T): T;\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nexport function withScope(\n ...rest: [callback: (scope: Scope) => T] | [scope: ScopeInterface | undefined, callback: (scope: Scope) => T]\n): T {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n\n // If a scope is defined, we want to make this the active scope instead of the default one\n if (rest.length === 2) {\n const [scope, callback] = rest;\n if (!scope) {\n // eslint-disable-next-line deprecation/deprecation\n return hub.withScope(callback);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return hub.withScope(() => {\n // eslint-disable-next-line deprecation/deprecation\n hub.getStackTop().scope = scope as Scope;\n return callback(scope as Scope);\n });\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return hub.withScope(rest[0]);\n}\n\n/**\n * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n *\n * @param callback The callback in which the passed isolation scope is active. (Note: In environments without async\n * context strategy, the currently active isolation scope may change within execution of the callback.)\n * @returns The same value that `callback` returns.\n */\nexport function withIsolationScope(callback: (isolationScope: Scope) => T): T {\n return runWithAsyncContext(() => {\n return callback(getIsolationScope());\n });\n}\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback.\n *\n * @param span Spans started in the context of the provided callback will be children of this span.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nexport function withActiveSpan(span: Span, callback: (scope: Scope) => T): T {\n return withScope(scope => {\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(span);\n return callback(scope);\n });\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\nexport function startTransaction(\n context: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n // eslint-disable-next-line deprecation/deprecation\n): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function captureCheckIn(checkIn: CheckIn, upsertMonitorConfig?: MonitorConfig): string {\n const scope = getCurrentScope();\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && logger.warn('Cannot capture check-in. No client defined.');\n } else if (!client.captureCheckIn) {\n DEBUG_BUILD && logger.warn('Cannot capture check-in. Client does not support sending check-ins.');\n } else {\n return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n }\n\n return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function withMonitor(\n monitorSlug: CheckIn['monitorSlug'],\n callback: () => T,\n upsertMonitorConfig?: MonitorConfig,\n): T {\n const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n const now = timestampInSeconds();\n\n function finishCheckIn(status: FinishedCheckIn['status']): void {\n captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n }\n\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback();\n } catch (e) {\n finishCheckIn('error');\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n Promise.resolve(maybePromiseResult).then(\n () => {\n finishCheckIn('ok');\n },\n () => {\n finishCheckIn('error');\n },\n );\n } else {\n finishCheckIn('ok');\n }\n\n return maybePromiseResult;\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function flush(timeout?: number): Promise {\n const client = getClient();\n if (client) {\n return client.flush(timeout);\n }\n DEBUG_BUILD && logger.warn('Cannot flush events. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function close(timeout?: number): Promise {\n const client = getClient();\n if (client) {\n return client.close(timeout);\n }\n DEBUG_BUILD && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().lastEventId();\n}\n\n/**\n * Get the currently active client.\n */\nexport function getClient(): C | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().getClient();\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nexport function isInitialized(): boolean {\n return !!getClient();\n}\n\n/**\n * Get the currently active scope.\n */\nexport function getCurrentScope(): Scope {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().getScope();\n}\n\n/**\n * Start a session on the current isolation scope.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns the new active session\n */\nexport function startSession(context?: SessionContext): Session {\n const client = getClient();\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n user: currentScope.getUser() || isolationScope.getUser(),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = isolationScope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n\n endSession();\n\n // Afterwards we set the new session on the scope\n isolationScope.setSession(session);\n\n // TODO (v8): Remove this and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n currentScope.setSession(session);\n\n return session;\n}\n\n/**\n * End the session on the current isolation scope.\n */\nexport function endSession(): void {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session) {\n closeSession(session);\n }\n _sendSessionUpdate();\n\n // the session is over; take it off of the scope\n isolationScope.setSession();\n\n // TODO (v8): Remove this and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n currentScope.setSession();\n}\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate(): void {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n const client = getClient();\n // TODO (v8): Remove currentScope and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session && client && client.captureSession) {\n client.captureSession(session);\n }\n}\n\n/**\n * Sends the current session on the scope to Sentry\n *\n * @param end If set the session will be marked as exited and removed from the scope.\n * Defaults to `false`.\n */\nexport function captureSession(end: boolean = false): void {\n // both send the update and pull the session from the scope\n if (end) {\n endSession();\n return;\n }\n\n // only send the update\n _sendSessionUpdate();\n}\n","/* eslint-disable max-lines */\nimport type {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n Session,\n SessionContext,\n Severity,\n SeverityLevel,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport {\n GLOBAL_OBJ,\n consoleSandbox,\n dateTimestampInSeconds,\n getGlobalSingleton,\n isThenable,\n logger,\n uuid4,\n} from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport { SDK_VERSION } from './version';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = parseFloat(SDK_VERSION);\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\nexport interface RunWithAsyncContextOptions {\n /** Whether to reuse an existing async context if one exists. Defaults to false. */\n reuseExisting?: boolean;\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Strategy used to track async context.\n */\nexport interface AsyncContextStrategy {\n /**\n * Gets the current async context. Returns undefined if there is no current async context.\n */\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub: () => Hub | undefined;\n /**\n * Runs the supplied callback in its own async context.\n */\n runWithAsyncContext(callback: () => T, options: RunWithAsyncContextOptions): T;\n}\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n client?: Client;\n scope: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: {\n // eslint-disable-next-line deprecation/deprecation\n hub?: Hub;\n acs?: AsyncContextStrategy;\n /**\n * Extra Hub properties injected by various SDKs\n */\n integrations?: Integration[];\n extensions?: {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n/**\n * @deprecated The `Hub` class will be removed in version 8 of the SDK in favour of `Scope` and `Client` objects.\n *\n * If you previously used the `Hub` class directly, replace it with `Scope` and `Client` objects. More information:\n * - [Multiple Sentry Instances](https://docs.sentry.io/platforms/javascript/best-practices/multiple-sentry-instances/)\n * - [Browser Extensions](https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/)\n *\n * Some of our APIs are typed with the Hub class instead of the interface (e.g. `getCurrentHub`). Most of them are deprecated\n * themselves and will also be removed in version 8. More information:\n * - [Migration Guide](https://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md#deprecate-hub)\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n private _isolationScope: Scope;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n *\n * @deprecated Instantiation of Hub objects is deprecated and the constructor will be removed in version 8 of the SDK.\n *\n * If you are currently using the Hub for multi-client use like so:\n *\n * ```\n * // OLD\n * const hub = new Hub();\n * hub.bindClient(client);\n * makeMain(hub)\n * ```\n *\n * instead initialize the client as follows:\n *\n * ```\n * // NEW\n * Sentry.withIsolationScope(() => {\n * Sentry.setCurrentClient(client);\n * client.init();\n * });\n * ```\n *\n * If you are using the Hub to capture events like so:\n *\n * ```\n * // OLD\n * const client = new Client();\n * const hub = new Hub(client);\n * hub.captureException()\n * ```\n *\n * instead capture isolated events as follows:\n *\n * ```\n * // NEW\n * const client = new Client();\n * const scope = new Scope();\n * scope.setClient(client);\n * scope.captureException();\n * ```\n */\n public constructor(\n client?: Client,\n scope?: Scope,\n isolationScope?: Scope,\n private readonly _version: number = API_VERSION,\n ) {\n let assignedScope;\n if (!scope) {\n assignedScope = new Scope();\n assignedScope.setClient(client);\n } else {\n assignedScope = scope;\n }\n\n let assignedIsolationScope;\n if (!isolationScope) {\n assignedIsolationScope = new Scope();\n assignedIsolationScope.setClient(client);\n } else {\n assignedIsolationScope = isolationScope;\n }\n\n this._stack = [{ scope: assignedScope }];\n\n if (client) {\n // eslint-disable-next-line deprecation/deprecation\n this.bindClient(client);\n }\n\n this._isolationScope = assignedIsolationScope;\n }\n\n /**\n * Checks if this hub's version is older than the given version.\n *\n * @param version A version number to compare to.\n * @return True if the given version is newer; otherwise false.\n *\n * @deprecated This will be removed in v8.\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * This binds the given client to the current scope.\n * @param client An SDK client (client) instance.\n *\n * @deprecated Use `initAndBind()` directly, or `setCurrentClient()` and/or `client.init()` instead.\n */\n public bindClient(client?: Client): void {\n // eslint-disable-next-line deprecation/deprecation\n const top = this.getStackTop();\n top.client = client;\n top.scope.setClient(client);\n // eslint-disable-next-line deprecation/deprecation\n if (client && client.setupIntegrations) {\n // eslint-disable-next-line deprecation/deprecation\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `withScope` instead.\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n // eslint-disable-next-line deprecation/deprecation\n const scope = this.getScope().clone();\n // eslint-disable-next-line deprecation/deprecation\n this.getStack().push({\n // eslint-disable-next-line deprecation/deprecation\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `withScope` instead.\n */\n public popScope(): boolean {\n // eslint-disable-next-line deprecation/deprecation\n if (this.getStack().length <= 1) return false;\n // eslint-disable-next-line deprecation/deprecation\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.withScope()` instead.\n */\n public withScope(callback: (scope: Scope) => T): T {\n // eslint-disable-next-line deprecation/deprecation\n const scope = this.pushScope();\n\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback(scope);\n } catch (e) {\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n // @ts-expect-error - isThenable returns the wrong type\n return maybePromiseResult.then(\n res => {\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n return res;\n },\n e => {\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n throw e;\n },\n );\n }\n\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n return maybePromiseResult;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.getClient()` instead.\n */\n public getClient(): C | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return this.getStackTop().client as C;\n }\n\n /**\n * Returns the scope of the top stack.\n *\n * @deprecated Use `Sentry.getCurrentScope()` instead.\n */\n public getScope(): Scope {\n // eslint-disable-next-line deprecation/deprecation\n return this.getStackTop().scope;\n }\n\n /**\n * @deprecated Use `Sentry.getIsolationScope()` instead.\n */\n public getIsolationScope(): Scope {\n return this._isolationScope;\n }\n\n /**\n * Returns the scope stack for domains or the process.\n * @deprecated This will be removed in v8.\n */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /**\n * Returns the topmost scope layer in the order domain > local > process.\n * @deprecated This will be removed in v8.\n */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.captureException()` instead.\n */\n public captureException(exception: unknown, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error('Sentry syntheticException');\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().captureException(exception, {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.captureMessage()` instead.\n */\n public captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n ): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error(message);\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().captureMessage(message, level, {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.captureEvent()` instead.\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (!event.type) {\n this._lastEventId = eventId;\n }\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().captureEvent(event, { ...hint, event_id: eventId });\n return eventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated This will be removed in v8.\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.addBreadcrumb()` instead.\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n\n if (!client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n if (client.emit) {\n client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n }\n\n // TODO(v8): I know this comment doesn't make much sense because the hub will be deprecated but I still wanted to\n // write it down. In theory, we would have to add the breadcrumbs to the isolation scope here, however, that would\n // duplicate all of the breadcrumbs. There was the possibility of adding breadcrumbs to both, the isolation scope\n // and the normal scope, and deduplicating it down the line in the event processing pipeline. However, that would\n // have been very fragile, because the breadcrumb objects would have needed to keep their identity all throughout\n // the event processing pipeline.\n // In the new implementation, the top level `Sentry.addBreadcrumb()` should ONLY write to the isolation scope.\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setUser()` instead.\n */\n public setUser(user: User | null): void {\n // TODO(v8): The top level `Sentry.setUser()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setUser(user);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setUser(user);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setTags()` instead.\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n // TODO(v8): The top level `Sentry.setTags()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setTags(tags);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setTags(tags);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setExtras()` instead.\n */\n public setExtras(extras: Extras): void {\n // TODO(v8): The top level `Sentry.setExtras()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setExtras(extras);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setExtras(extras);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setTag()` instead.\n */\n public setTag(key: string, value: Primitive): void {\n // TODO(v8): The top level `Sentry.setTag()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setTag(key, value);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setTag(key, value);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setExtra()` instead.\n */\n public setExtra(key: string, extra: Extra): void {\n // TODO(v8): The top level `Sentry.setExtra()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setExtra(key, extra);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setContext()` instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n // TODO(v8): The top level `Sentry.setContext()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setContext(name, context);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setContext(name, context);\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `getScope()` directly.\n */\n public configureScope(callback: (scope: Scope) => void): void {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line deprecation/deprecation\n public run(callback: (hub: Hub) => void): void {\n // eslint-disable-next-line deprecation/deprecation\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n // eslint-disable-next-line deprecation/deprecation\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.getClient().getIntegrationByName()` instead.\n */\n public getIntegration(integration: IntegrationClass): T | null {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n if (!client) return null;\n try {\n // eslint-disable-next-line deprecation/deprecation\n return client.getIntegration(integration);\n } catch (_oO) {\n DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n const result = this._callExtensionMethod('startTransaction', context, customSamplingContext);\n\n if (DEBUG_BUILD && !result) {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n if (!client) {\n logger.warn(\n \"Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'\",\n );\n } else {\n logger.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':\nSentry.addTracingExtensions();\nSentry.init({...});\n`);\n }\n }\n\n return result;\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `spanToTraceHeader()` instead.\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use top level `captureSession` instead.\n */\n public captureSession(endSession: boolean = false): void {\n // both send the update and pull the session from the scope\n if (endSession) {\n // eslint-disable-next-line deprecation/deprecation\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n * @deprecated Use top level `endSession` instead.\n */\n public endSession(): void {\n // eslint-disable-next-line deprecation/deprecation\n const layer = this.getStackTop();\n const scope = layer.scope;\n const session = scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n scope.setSession();\n }\n\n /**\n * @inheritDoc\n * @deprecated Use top level `startSession` instead.\n */\n public startSession(context?: SessionContext): Session {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n user: scope.getUser(),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n // eslint-disable-next-line deprecation/deprecation\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n\n return session;\n }\n\n /**\n * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n * when Tracing is used.\n *\n * @deprecated Use top-level `getClient().getOptions().sendDefaultPii` instead. This function\n * only unnecessarily increased API surface but only wrapped accessing the option.\n */\n public shouldSendDefaultPii(): boolean {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n const options = client && client.getOptions();\n return Boolean(options && options.sendDefaultPii);\n }\n\n /**\n * Sends the current Session on the scope\n */\n private _sendSessionUpdate(): void {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n\n const session = scope.getSession();\n if (session && client && client.captureSession) {\n client.captureSession(session);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-expect-error Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _callExtensionMethod(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n DEBUG_BUILD && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return GLOBAL_OBJ;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n *\n * @deprecated Use `setCurrentClient()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n *\n * @deprecated Use the respective replacement method directly instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n const hub = registry.__SENTRY__.acs.getCurrentHub();\n\n if (hub) {\n return hub;\n }\n }\n\n // Return hub that lives on a global object\n return getGlobalHub(registry);\n}\n\n/**\n * Get the currently active isolation scope.\n * The isolation scope is active for the current exection context,\n * meaning that it will remain stable for the same Hub.\n */\nexport function getIsolationScope(): Scope {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().getIsolationScope();\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction getGlobalHub(registry: Carrier = getMainCarrier()): Hub {\n // If there's no hub, or its an old API, assign a new one\n\n if (\n !hasHubOnCarrier(registry) ||\n // eslint-disable-next-line deprecation/deprecation\n getHubFromCarrier(registry).isOlderThan(API_VERSION)\n ) {\n // eslint-disable-next-line deprecation/deprecation\n setHubOnCarrier(registry, new Hub());\n }\n\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * If the carrier does not contain a hub, a new hub is created with the global hub client and scope.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function ensureHubOnCarrier(carrier: Carrier, parent: Hub = getGlobalHub()): void {\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (\n !hasHubOnCarrier(carrier) ||\n // eslint-disable-next-line deprecation/deprecation\n getHubFromCarrier(carrier).isOlderThan(API_VERSION)\n ) {\n // eslint-disable-next-line deprecation/deprecation\n const client = parent.getClient();\n // eslint-disable-next-line deprecation/deprecation\n const scope = parent.getScope();\n // eslint-disable-next-line deprecation/deprecation\n const isolationScope = parent.getIsolationScope();\n // eslint-disable-next-line deprecation/deprecation\n setHubOnCarrier(carrier, new Hub(client, scope.clone(), isolationScope.clone()));\n }\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nexport function setAsyncContextStrategy(strategy: AsyncContextStrategy | undefined): void {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n registry.__SENTRY__ = registry.__SENTRY__ || {};\n registry.__SENTRY__.acs = strategy;\n}\n\n/**\n * Runs the supplied callback in its own async context. Async Context strategies are defined per SDK.\n *\n * @param callback The callback to run in its own async context\n * @param options Options to pass to the async context strategy\n * @returns The result of the callback\n */\nexport function runWithAsyncContext(callback: () => T, options: RunWithAsyncContextOptions = {}): T {\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n return registry.__SENTRY__.acs.runWithAsyncContext(callback, options);\n }\n\n // if there was no strategy, fallback to just calling the callback\n return callback();\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n // eslint-disable-next-line deprecation/deprecation\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n","/* eslint-disable max-lines */\nimport type {\n Attachment,\n Breadcrumb,\n CaptureContext,\n Client,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n PropagationContext,\n RequestSession,\n Scope as ScopeInterface,\n ScopeContext,\n ScopeData,\n Session,\n Severity,\n SeverityLevel,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, isPlainObject, logger, uuid4 } from '@sentry/utils';\n\nimport { getGlobalEventProcessors, notifyEventProcessors } from './eventProcessors';\nimport { updateSession } from './session';\nimport { applyScopeDataToEvent } from './utils/applyScopeDataToEvent';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * The global scope is kept in this module.\n * When accessing this via `getGlobalScope()` we'll make sure to set one if none is currently present.\n */\nlet globalScope: ScopeInterface | undefined;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void>;\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[];\n\n /** User */\n protected _user: User;\n\n /** Tags */\n protected _tags: { [key: string]: Primitive };\n\n /** Extra */\n protected _extra: Extras;\n\n /** Contexts */\n protected _contexts: Contexts;\n\n /** Attachments */\n protected _attachments: Attachment[];\n\n /** Propagation Context for distributed tracing */\n protected _propagationContext: PropagationContext;\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n protected _sdkProcessingMetadata: { [key: string]: unknown };\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n // eslint-disable-next-line deprecation/deprecation\n protected _level?: Severity | SeverityLevel;\n\n /**\n * Transaction Name\n */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /** Request Mode Session Status */\n protected _requestSession?: RequestSession;\n\n /** The client on this scope */\n protected _client?: Client;\n\n // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n public constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n this._propagationContext = generatePropagationContext();\n }\n\n /**\n * Inherit values from the parent scope.\n * @deprecated Use `scope.clone()` and `new Scope()` instead.\n */\n public static clone(scope?: Scope): Scope {\n return scope ? scope.clone() : new Scope();\n }\n\n /**\n * Clone this scope instance.\n */\n public clone(): Scope {\n const newScope = new Scope();\n newScope._breadcrumbs = [...this._breadcrumbs];\n newScope._tags = { ...this._tags };\n newScope._extra = { ...this._extra };\n newScope._contexts = { ...this._contexts };\n newScope._user = this._user;\n newScope._level = this._level;\n newScope._span = this._span;\n newScope._session = this._session;\n newScope._transactionName = this._transactionName;\n newScope._fingerprint = this._fingerprint;\n newScope._eventProcessors = [...this._eventProcessors];\n newScope._requestSession = this._requestSession;\n newScope._attachments = [...this._attachments];\n newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n newScope._propagationContext = { ...this._propagationContext };\n newScope._client = this._client;\n\n return newScope;\n }\n\n /** Update the client on the scope. */\n public setClient(client: Client | undefined): void {\n this._client = client;\n }\n\n /**\n * Get the client assigned to this scope.\n *\n * It is generally recommended to use the global function `Sentry.getClient()` instead, unless you know what you are doing.\n */\n public getClient(): Client | undefined {\n return this._client;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n // If null is passed we want to unset everything, but still define keys,\n // so that later down in the pipeline any existing values are cleared.\n this._user = user || {\n email: undefined,\n id: undefined,\n ip_address: undefined,\n segment: undefined,\n username: undefined,\n };\n\n if (this._session) {\n updateSession(this._session, { user });\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public getRequestSession(): RequestSession | undefined {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n public setRequestSession(requestSession?: RequestSession): this {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel,\n ): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the transaction name on the scope for future events.\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the Span on the scope.\n * @param span Span\n * @deprecated Instead of setting a span on a scope, use `startSpan()`/`startSpanManual()` instead.\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Returns the `Span` if there is one.\n * @deprecated Use `getActiveSpan()` instead.\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * Returns the `Transaction` attached to the scope (if there is one).\n * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead.\n */\n public getTransaction(): Transaction | undefined {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this._span;\n // Cannot replace with getRootSpan because getRootSpan returns a span, not a transaction\n // Also, this method will be removed anyway.\n // eslint-disable-next-line deprecation/deprecation\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext;\n\n if (scopeToMerge instanceof Scope) {\n const scopeData = scopeToMerge.getScopeData();\n\n this._tags = { ...this._tags, ...scopeData.tags };\n this._extra = { ...this._extra, ...scopeData.extra };\n this._contexts = { ...this._contexts, ...scopeData.contexts };\n if (scopeData.user && Object.keys(scopeData.user).length) {\n this._user = scopeData.user;\n }\n if (scopeData.level) {\n this._level = scopeData.level;\n }\n if (scopeData.fingerprint.length) {\n this._fingerprint = scopeData.fingerprint;\n }\n if (scopeToMerge.getRequestSession()) {\n this._requestSession = scopeToMerge.getRequestSession();\n }\n if (scopeData.propagationContext) {\n this._propagationContext = scopeData.propagationContext;\n }\n } else if (isPlainObject(scopeToMerge)) {\n const scopeContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...scopeContext.tags };\n this._extra = { ...this._extra, ...scopeContext.extra };\n this._contexts = { ...this._contexts, ...scopeContext.contexts };\n if (scopeContext.user) {\n this._user = scopeContext.user;\n }\n if (scopeContext.level) {\n this._level = scopeContext.level;\n }\n if (scopeContext.fingerprint) {\n this._fingerprint = scopeContext.fingerprint;\n }\n if (scopeContext.requestSession) {\n this._requestSession = scopeContext.requestSession;\n }\n if (scopeContext.propagationContext) {\n this._propagationContext = scopeContext.propagationContext;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n this._propagationContext = generatePropagationContext();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n\n const breadcrumbs = this._breadcrumbs;\n breadcrumbs.push(mergedBreadcrumb);\n this._breadcrumbs = breadcrumbs.length > maxCrumbs ? breadcrumbs.slice(-maxCrumbs) : breadcrumbs;\n\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getLastBreadcrumb(): Breadcrumb | undefined {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addAttachment(attachment: Attachment): this {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `getScopeData()` instead.\n */\n public getAttachments(): Attachment[] {\n const data = this.getScopeData();\n\n return data.attachments;\n }\n\n /**\n * @inheritDoc\n */\n public clearAttachments(): this {\n this._attachments = [];\n return this;\n }\n\n /** @inheritDoc */\n public getScopeData(): ScopeData {\n const {\n _breadcrumbs,\n _attachments,\n _contexts,\n _tags,\n _extra,\n _user,\n _level,\n _fingerprint,\n _eventProcessors,\n _propagationContext,\n _sdkProcessingMetadata,\n _transactionName,\n _span,\n } = this;\n\n return {\n breadcrumbs: _breadcrumbs,\n attachments: _attachments,\n contexts: _contexts,\n tags: _tags,\n extra: _extra,\n user: _user,\n level: _level,\n fingerprint: _fingerprint || [],\n eventProcessors: _eventProcessors,\n propagationContext: _propagationContext,\n sdkProcessingMetadata: _sdkProcessingMetadata,\n transactionName: _transactionName,\n span: _span,\n };\n }\n\n /**\n * Applies data from the scope to the event and runs all event processors on it.\n *\n * @param event Event\n * @param hint Object containing additional information about the original exception, for use by the event processors.\n * @hidden\n * @deprecated Use `applyScopeDataToEvent()` directly\n */\n public applyToEvent(\n event: Event,\n hint: EventHint = {},\n additionalEventProcessors: EventProcessor[] = [],\n ): PromiseLike {\n applyScopeDataToEvent(event, this.getScopeData());\n\n // TODO (v8): Update this order to be: Global > Client > Scope\n const eventProcessors: EventProcessor[] = [\n ...additionalEventProcessors,\n // eslint-disable-next-line deprecation/deprecation\n ...getGlobalEventProcessors(),\n ...this._eventProcessors,\n ];\n\n return notifyEventProcessors(eventProcessors, event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setPropagationContext(context: PropagationContext): this {\n this._propagationContext = context;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getPropagationContext(): PropagationContext {\n return this._propagationContext;\n }\n\n /**\n * Capture an exception for this scope.\n *\n * @param exception The exception to capture.\n * @param hint Optinal additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\n public captureException(exception: unknown, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture exception!');\n return eventId;\n }\n\n const syntheticException = new Error('Sentry syntheticException');\n\n this._client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Capture a message for this scope.\n *\n * @param message The message to capture.\n * @param level An optional severity level to report the message with.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured message.\n */\n public captureMessage(message: string, level?: SeverityLevel, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture message!');\n return eventId;\n }\n\n const syntheticException = new Error(message);\n\n this._client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Captures a manually created event for this scope and sends it to Sentry.\n *\n * @param exception The event to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture event!');\n return eventId;\n }\n\n this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n\n return eventId;\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n}\n\n/**\n * Get the global scope.\n * This scope is applied to _all_ events.\n */\nexport function getGlobalScope(): ScopeInterface {\n if (!globalScope) {\n globalScope = new Scope();\n }\n\n return globalScope;\n}\n\n/**\n * This is mainly needed for tests.\n * DO NOT USE this, as this is an internal API and subject to change.\n * @hidden\n */\nexport function setGlobalScope(scope: ScopeInterface | undefined): void {\n globalScope = scope;\n}\n\nfunction generatePropagationContext(): PropagationContext {\n return {\n traceId: uuid4(),\n spanId: uuid4().substring(16),\n };\n}\n","import type { SerializedSession, Session, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nexport function makeSession(context?: Omit): Session {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session: Session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nexport function updateSession(session: Session, context: SessionContext = {}): void {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.abnormal_mechanism) {\n session.abnormal_mechanism = context.abnormal_mechanism;\n }\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nexport function closeSession(session: Session, status?: Exclude): void {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session: Session): SerializedSession {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n abnormal_mechanism: session.abnormal_mechanism,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n","import type { Client, DynamicSamplingContext, Scope, Span, Transaction } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getClient, getCurrentScope } from '../exports';\nimport { getRootSpan } from '../utils/getRootSpan';\nimport { spanIsSampled, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nexport function getDynamicSamplingContextFromClient(\n trace_id: string,\n client: Client,\n scope?: Scope,\n): DynamicSamplingContext {\n const options = client.getOptions();\n\n const { publicKey: public_key } = client.getDsn() || {};\n // TODO(v8): Remove segment from User\n // eslint-disable-next-line deprecation/deprecation\n const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n const dsc = dropUndefinedKeys({\n environment: options.environment || DEFAULT_ENVIRONMENT,\n release: options.release,\n user_segment,\n public_key,\n trace_id,\n }) as DynamicSamplingContext;\n\n client.emit && client.emit('createDsc', dsc);\n\n return dsc;\n}\n\n/**\n * A Span with a frozen dynamic sampling context.\n */\ntype TransactionWithV7FrozenDsc = Transaction & { _frozenDynamicSamplingContext?: DynamicSamplingContext };\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nexport function getDynamicSamplingContextFromSpan(span: Span): Readonly> {\n const client = getClient();\n if (!client) {\n return {};\n }\n\n // passing emit=false here to only emit later once the DSC is actually populated\n const dsc = getDynamicSamplingContextFromClient(spanToJSON(span).trace_id || '', client, getCurrentScope());\n\n // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n const txn = getRootSpan(span) as TransactionWithV7FrozenDsc | undefined;\n if (!txn) {\n return dsc;\n }\n\n // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n // For now we need to avoid breaking users who directly created a txn with a DSC, where this field is still set.\n // @see Transaction class constructor\n const v7FrozenDsc = txn && txn._frozenDynamicSamplingContext;\n if (v7FrozenDsc) {\n return v7FrozenDsc;\n }\n\n // TODO (v8): Replace txn.metadata with txn.attributes[]\n // We can't do this yet because attributes aren't always set yet.\n // eslint-disable-next-line deprecation/deprecation\n const { sampleRate: maybeSampleRate, source } = txn.metadata;\n if (maybeSampleRate != null) {\n dsc.sample_rate = `${maybeSampleRate}`;\n }\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const jsonSpan = spanToJSON(txn);\n\n // after JSON conversion, txn.name becomes jsonSpan.description\n if (source && source !== 'url') {\n dsc.transaction = jsonSpan.description;\n }\n\n dsc.sampled = String(spanIsSampled(txn));\n\n client.emit && client.emit('createDsc', dsc);\n\n return dsc;\n}\n","import type { Breadcrumb, Event, ScopeData, Span } from '@sentry/types';\nimport { arrayify, dropUndefinedKeys } from '@sentry/utils';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext';\nimport { getRootSpan } from './getRootSpan';\nimport { spanToJSON, spanToTraceContext } from './spanUtils';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nexport function applyScopeDataToEvent(event: Event, data: ScopeData): void {\n const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n // Apply general data\n applyDataToEvent(event, data);\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (span) {\n applySpanToEvent(event, span);\n }\n\n applyFingerprintToEvent(event, fingerprint);\n applyBreadcrumbsToEvent(event, breadcrumbs);\n applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nexport function mergeScopeData(data: ScopeData, mergeData: ScopeData): void {\n const {\n extra,\n tags,\n user,\n contexts,\n level,\n sdkProcessingMetadata,\n breadcrumbs,\n fingerprint,\n eventProcessors,\n attachments,\n propagationContext,\n // eslint-disable-next-line deprecation/deprecation\n transactionName,\n span,\n } = mergeData;\n\n mergeAndOverwriteScopeData(data, 'extra', extra);\n mergeAndOverwriteScopeData(data, 'tags', tags);\n mergeAndOverwriteScopeData(data, 'user', user);\n mergeAndOverwriteScopeData(data, 'contexts', contexts);\n mergeAndOverwriteScopeData(data, 'sdkProcessingMetadata', sdkProcessingMetadata);\n\n if (level) {\n data.level = level;\n }\n\n if (transactionName) {\n // eslint-disable-next-line deprecation/deprecation\n data.transactionName = transactionName;\n }\n\n if (span) {\n data.span = span;\n }\n\n if (breadcrumbs.length) {\n data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n }\n\n if (fingerprint.length) {\n data.fingerprint = [...data.fingerprint, ...fingerprint];\n }\n\n if (eventProcessors.length) {\n data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n }\n\n if (attachments.length) {\n data.attachments = [...data.attachments, ...attachments];\n }\n\n data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nexport function mergeAndOverwriteScopeData<\n Prop extends 'extra' | 'tags' | 'user' | 'contexts' | 'sdkProcessingMetadata',\n Data extends ScopeData,\n>(data: Data, prop: Prop, mergeVal: Data[Prop]): void {\n if (mergeVal && Object.keys(mergeVal).length) {\n // Clone object\n data[prop] = { ...data[prop] };\n for (const key in mergeVal) {\n if (Object.prototype.hasOwnProperty.call(mergeVal, key)) {\n data[prop][key] = mergeVal[key];\n }\n }\n }\n}\n\n/** Exported only for tests */\nexport function mergeArray(\n event: Event,\n prop: Prop,\n mergeVal: ScopeData[Prop],\n): void {\n const prevVal = event[prop];\n // If we are not merging any new values,\n // we only need to proceed if there was an empty array before (as we want to replace it with undefined)\n if (!mergeVal.length && (!prevVal || prevVal.length)) {\n return;\n }\n\n const merged = [...(prevVal || []), ...mergeVal] as ScopeData[Prop];\n event[prop] = merged.length ? merged : undefined;\n}\n\nfunction applyDataToEvent(event: Event, data: ScopeData): void {\n const {\n extra,\n tags,\n user,\n contexts,\n level,\n // eslint-disable-next-line deprecation/deprecation\n transactionName,\n } = data;\n\n const cleanedExtra = dropUndefinedKeys(extra);\n if (cleanedExtra && Object.keys(cleanedExtra).length) {\n event.extra = { ...cleanedExtra, ...event.extra };\n }\n\n const cleanedTags = dropUndefinedKeys(tags);\n if (cleanedTags && Object.keys(cleanedTags).length) {\n event.tags = { ...cleanedTags, ...event.tags };\n }\n\n const cleanedUser = dropUndefinedKeys(user);\n if (cleanedUser && Object.keys(cleanedUser).length) {\n event.user = { ...cleanedUser, ...event.user };\n }\n\n const cleanedContexts = dropUndefinedKeys(contexts);\n if (cleanedContexts && Object.keys(cleanedContexts).length) {\n event.contexts = { ...cleanedContexts, ...event.contexts };\n }\n\n if (level) {\n event.level = level;\n }\n\n if (transactionName) {\n event.transaction = transactionName;\n }\n}\n\nfunction applyBreadcrumbsToEvent(event: Event, breadcrumbs: Breadcrumb[]): void {\n const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event: Event, sdkProcessingMetadata: ScopeData['sdkProcessingMetadata']): void {\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...sdkProcessingMetadata,\n };\n}\n\nfunction applySpanToEvent(event: Event, span: Span): void {\n event.contexts = { trace: spanToTraceContext(span), ...event.contexts };\n const rootSpan = getRootSpan(span);\n if (rootSpan) {\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n ...event.sdkProcessingMetadata,\n };\n const transactionName = spanToJSON(rootSpan).description;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n}\n\n/**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\nfunction applyFingerprintToEvent(event: Event, fingerprint: ScopeData['fingerprint'] | undefined): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n // If we have something on the scope, then merge it with event\n if (fingerprint) {\n event.fingerprint = event.fingerprint.concat(fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n}\n","import type { Span } from '@sentry/types';\n\n/**\n * Returns the root span of a given span.\n *\n * As long as we use `Transaction`s internally, the returned root span\n * will be a `Transaction` but be aware that this might change in the future.\n *\n * If the given span has no root span or transaction, `undefined` is returned.\n */\nexport function getRootSpan(span: Span): Span | undefined {\n // TODO (v8): Remove this check and just return span\n // eslint-disable-next-line deprecation/deprecation\n return span.transaction;\n}\n","import type {\n CaptureContext,\n Client,\n ClientOptions,\n Event,\n EventHint,\n Scope as ScopeInterface,\n ScopeContext,\n StackFrame,\n StackParser,\n} from '@sentry/types';\nimport { GLOBAL_OBJ, addExceptionMechanism, dateTimestampInSeconds, normalize, truncate, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getGlobalEventProcessors, notifyEventProcessors } from '../eventProcessors';\nimport { Scope, getGlobalScope } from '../scope';\nimport { applyScopeDataToEvent, mergeScopeData } from './applyScopeDataToEvent';\nimport { spanToJSON } from './spanUtils';\n\n/**\n * This type makes sure that we get either a CaptureContext, OR an EventHint.\n * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed:\n * { user: { id: '123' }, mechanism: { handled: false } }\n */\nexport type ExclusiveEventHintOrCaptureContext =\n | (CaptureContext & Partial<{ [key in keyof EventHint]: never }>)\n | (EventHint & Partial<{ [key in keyof ScopeContext]: never }>);\n\n/**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * Note: This also triggers callbacks for `addGlobalEventProcessor`, but not `beforeSend`.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n * @hidden\n */\nexport function prepareEvent(\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n scope?: Scope,\n client?: Client,\n isolationScope?: Scope,\n): PromiseLike {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = options;\n const prepared: Event = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n applyClientOptions(prepared, options);\n applyIntegrationsMetadata(prepared, integrations);\n\n // Only put debug IDs onto frames for error events.\n if (event.type === undefined) {\n applyDebugIds(prepared, options.stackParser);\n }\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n const finalScope = getFinalScope(scope, hint.captureContext);\n\n if (hint.mechanism) {\n addExceptionMechanism(prepared, hint.mechanism);\n }\n\n const clientEventProcessors = client && client.getEventProcessors ? client.getEventProcessors() : [];\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n // Merge scope data together\n const data = getGlobalScope().getScopeData();\n\n if (isolationScope) {\n const isolationData = isolationScope.getScopeData();\n mergeScopeData(data, isolationData);\n }\n\n if (finalScope) {\n const finalScopeData = finalScope.getScopeData();\n mergeScopeData(data, finalScopeData);\n }\n\n const attachments = [...(hint.attachments || []), ...data.attachments];\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n applyScopeDataToEvent(prepared, data);\n\n // TODO (v8): Update this order to be: Global > Client > Scope\n const eventProcessors = [\n ...clientEventProcessors,\n // eslint-disable-next-line deprecation/deprecation\n ...getGlobalEventProcessors(),\n // Run scope event processors _after_ all other processors\n ...data.eventProcessors,\n ];\n\n const result = notifyEventProcessors(eventProcessors, prepared, hint);\n\n return result.then(evt => {\n if (evt) {\n // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n // any new data\n applyDebugMeta(evt);\n }\n\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n}\n\n/**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event: Event, options: ClientOptions): void {\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : DEFAULT_ENVIRONMENT;\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n}\n\nconst debugIdStackParserCache = new WeakMap>();\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nexport function applyDebugIds(event: Event, stackParser: StackParser): void {\n const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n\n if (!debugIdMap) {\n return;\n }\n\n let debugIdStackFramesCache: Map;\n const cachedDebugIdStackFrameCache = debugIdStackParserCache.get(stackParser);\n if (cachedDebugIdStackFrameCache) {\n debugIdStackFramesCache = cachedDebugIdStackFrameCache;\n } else {\n debugIdStackFramesCache = new Map();\n debugIdStackParserCache.set(stackParser, debugIdStackFramesCache);\n }\n\n // Build a map of filename -> debug_id\n const filenameDebugIdMap = Object.keys(debugIdMap).reduce>((acc, debugIdStackTrace) => {\n let parsedStack: StackFrame[];\n const cachedParsedStack = debugIdStackFramesCache.get(debugIdStackTrace);\n if (cachedParsedStack) {\n parsedStack = cachedParsedStack;\n } else {\n parsedStack = stackParser(debugIdStackTrace);\n debugIdStackFramesCache.set(debugIdStackTrace, parsedStack);\n }\n\n for (let i = parsedStack.length - 1; i >= 0; i--) {\n const stackFrame = parsedStack[i];\n if (stackFrame.filename) {\n acc[stackFrame.filename] = debugIdMap[debugIdStackTrace];\n break;\n }\n }\n return acc;\n }, {});\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event!.exception!.values!.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace!.frames!.forEach(frame => {\n if (frame.filename) {\n frame.debug_id = filenameDebugIdMap[frame.filename];\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nexport function applyDebugMeta(event: Event): void {\n // Extract debug IDs and filenames from the stack frames on the event.\n const filenameDebugIdMap: Record = {};\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception!.values!.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace!.frames!.forEach(frame => {\n if (frame.debug_id) {\n if (frame.abs_path) {\n filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n } else if (frame.filename) {\n filenameDebugIdMap[frame.filename] = frame.debug_id;\n }\n delete frame.debug_id;\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n\n if (Object.keys(filenameDebugIdMap).length === 0) {\n return;\n }\n\n // Fill debug_meta information\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = event.debug_meta.images || [];\n const images = event.debug_meta.images;\n Object.keys(filenameDebugIdMap).forEach(filename => {\n images.push({\n type: 'sourcemap',\n code_file: filename,\n debug_id: filenameDebugIdMap[filename],\n });\n });\n}\n\n/**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\nfunction applyIntegrationsMetadata(event: Event, integrationNames: string[]): void {\n if (integrationNames.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\n }\n}\n\n/**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\nfunction normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n if (!event) {\n return null;\n }\n\n const normalized: Event = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n const data = spanToJSON(span).data;\n\n if (data) {\n // This is a bit weird, as we generally have `Span` instances here, but to be safe we do not assume so\n // eslint-disable-next-line deprecation/deprecation\n span.data = normalize(data, depth, maxBreadth);\n }\n\n return span;\n });\n }\n\n return normalized;\n}\n\nfunction getFinalScope(scope: Scope | undefined, captureContext: CaptureContext | undefined): Scope | undefined {\n if (!captureContext) {\n return scope;\n }\n\n const finalScope = scope ? scope.clone() : new Scope();\n finalScope.update(captureContext);\n return finalScope;\n}\n\n/**\n * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`.\n * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`.\n */\nexport function parseEventHintOrCaptureContext(\n hint: ExclusiveEventHintOrCaptureContext | undefined,\n): EventHint | undefined {\n if (!hint) {\n return undefined;\n }\n\n // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext\n if (hintIsScopeOrFunction(hint)) {\n return { captureContext: hint };\n }\n\n if (hintIsScopeContext(hint)) {\n return {\n captureContext: hint,\n };\n }\n\n return hint;\n}\n\nfunction hintIsScopeOrFunction(\n hint: CaptureContext | EventHint,\n): hint is ScopeInterface | ((scope: ScopeInterface) => ScopeInterface) {\n return hint instanceof Scope || typeof hint === 'function';\n}\n\ntype ScopeContextProperty = keyof ScopeContext;\nconst captureContextKeys: readonly ScopeContextProperty[] = [\n 'user',\n 'level',\n 'extra',\n 'contexts',\n 'tags',\n 'fingerprint',\n 'requestSession',\n 'propagationContext',\n] as const;\n\nfunction hintIsScopeContext(hint: Partial | EventHint): hint is Partial {\n return Object.keys(hint).some(key => captureContextKeys.includes(key as ScopeContextProperty));\n}\n","import type { Span, SpanJSON, SpanTimeInput, TraceContext } from '@sentry/types';\nimport { dropUndefinedKeys, generateSentryTraceHeader, timestampInSeconds } from '@sentry/utils';\nimport type { Span as SpanClass } from '../tracing/span';\n\n// These are aligned with OpenTelemetry trace flags\nexport const TRACE_FLAG_NONE = 0x0;\nexport const TRACE_FLAG_SAMPLED = 0x1;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n */\nexport function spanToTraceContext(span: Span): TraceContext {\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n const { data, op, parent_span_id, status, tags, origin } = spanToJSON(span);\n\n return dropUndefinedKeys({\n data,\n op,\n parent_span_id,\n span_id,\n status,\n tags,\n trace_id,\n origin,\n });\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nexport function spanToTraceHeader(span: Span): string {\n const { traceId, spanId } = span.spanContext();\n const sampled = spanIsSampled(span);\n return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n * Convert a span time input intp a timestamp in seconds.\n */\nexport function spanTimeInputToSeconds(input: SpanTimeInput | undefined): number {\n if (typeof input === 'number') {\n return ensureTimestampInSeconds(input);\n }\n\n if (Array.isArray(input)) {\n // See {@link HrTime} for the array-based time format\n return input[0] + input[1] / 1e9;\n }\n\n if (input instanceof Date) {\n return ensureTimestampInSeconds(input.getTime());\n }\n\n return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp: number): number {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n * Note that all fields returned here are optional and need to be guarded against.\n *\n * Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n * This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n * And `spanToJSON` needs the Span class from `span.ts` to check here.\n * TODO v8: When we remove the deprecated stuff from `span.ts`, we can remove the circular dependency again.\n */\nexport function spanToJSON(span: Span): Partial {\n if (spanIsSpanClass(span)) {\n return span.getSpanJSON();\n }\n\n // Fallback: We also check for `.toJSON()` here...\n // eslint-disable-next-line deprecation/deprecation\n if (typeof span.toJSON === 'function') {\n // eslint-disable-next-line deprecation/deprecation\n return span.toJSON();\n }\n\n return {};\n}\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSpanClass(span: Span): span is SpanClass {\n return typeof (span as SpanClass).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nexport function spanIsSampled(span: Span): boolean {\n // We align our trace flags with the ones OpenTelemetry use\n // So we also check for sampled the same way they do.\n const { traceFlags } = span.spanContext();\n // eslint-disable-next-line no-bitwise\n return Boolean(traceFlags & TRACE_FLAG_SAMPLED);\n}\n","export const SDK_VERSION = '7.118.0';\n","import { addTracingExtensions, getMainCarrier } from '@sentry/core';\nimport type { Integration, IntegrationClass } from '@sentry/types';\nimport { dynamicRequire, isNodeEnv, loadModule } from '@sentry/utils';\n\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n\n const packageToIntegrationMapping: Record Integration> = {\n mongodb() {\n const integration = dynamicRequire(module, './node/integrations/mongo') as {\n Mongo: IntegrationClass;\n };\n return new integration.Mongo();\n },\n mongoose() {\n const integration = dynamicRequire(module, './node/integrations/mongo') as {\n Mongo: IntegrationClass;\n };\n return new integration.Mongo();\n },\n mysql() {\n const integration = dynamicRequire(module, './node/integrations/mysql') as {\n Mysql: IntegrationClass;\n };\n return new integration.Mysql();\n },\n pg() {\n const integration = dynamicRequire(module, './node/integrations/postgres') as {\n Postgres: IntegrationClass;\n };\n return new integration.Postgres();\n },\n };\n\n const mappedPackages = Object.keys(packageToIntegrationMapping)\n .filter(moduleName => !!loadModule(moduleName))\n .map(pkg => {\n try {\n return packageToIntegrationMapping[pkg]();\n } catch (e) {\n return undefined;\n }\n })\n .filter(p => p) as Integration[];\n\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = [...(carrier.__SENTRY__.integrations || []), ...mappedPackages];\n }\n}\n\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nexport function addExtensionMethods(): void {\n addTracingExtensions();\n\n // Detect and automatically load specified integrations.\n if (isNodeEnv()) {\n _autoloadDatabaseIntegrations();\n }\n}\n","export const DEFAULT_ENVIRONMENT = 'production';\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import type {\n Breadcrumb,\n BreadcrumbHint,\n CaptureContext,\n CheckIn,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n FinishedCheckIn,\n MonitorConfig,\n Primitive,\n Scope as ScopeInterface,\n Session,\n SessionContext,\n Severity,\n SeverityLevel,\n Span,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport { GLOBAL_OBJ, isThenable, logger, timestampInSeconds, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Hub } from './hub';\nimport { runWithAsyncContext } from './hub';\nimport { getCurrentHub, getIsolationScope } from './hub';\nimport type { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport type { ExclusiveEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent';\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\nexport function captureException(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n exception: any,\n hint?: ExclusiveEventHintOrCaptureContext,\n): string {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().captureException(exception, parseEventHintOrCaptureContext(hint));\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param captureContext Define the level of the message or pass in additional data to attach to the message.\n * @returns the id of the captured message.\n */\nexport function captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n captureContext?: CaptureContext | Severity | SeverityLevel,\n): string {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param exception The event to send to Sentry.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\nexport function captureEvent(event: Event, hint?: EventHint): string {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n *\n * @deprecated Use getCurrentScope() directly.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function configureScope(callback: (scope: Scope) => void): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().addBreadcrumb(breadcrumb, hint);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, deprecation/deprecation\nexport function setContext(name: string, context: { [key: string]: any } | null): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setExtras(extras: Extras): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setExtra(key: string, extra: Extra): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setTags(tags: { [key: string]: Primitive }): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setTag(key: string, value: Primitive): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setUser(user: User | null): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n */\nexport function withScope(callback: (scope: Scope) => T): T;\n/**\n * Set the given scope as the active scope in the callback.\n */\nexport function withScope(scope: ScopeInterface | undefined, callback: (scope: Scope) => T): T;\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nexport function withScope(\n ...rest: [callback: (scope: Scope) => T] | [scope: ScopeInterface | undefined, callback: (scope: Scope) => T]\n): T {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n\n // If a scope is defined, we want to make this the active scope instead of the default one\n if (rest.length === 2) {\n const [scope, callback] = rest;\n if (!scope) {\n // eslint-disable-next-line deprecation/deprecation\n return hub.withScope(callback);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return hub.withScope(() => {\n // eslint-disable-next-line deprecation/deprecation\n hub.getStackTop().scope = scope as Scope;\n return callback(scope as Scope);\n });\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return hub.withScope(rest[0]);\n}\n\n/**\n * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n *\n * @param callback The callback in which the passed isolation scope is active. (Note: In environments without async\n * context strategy, the currently active isolation scope may change within execution of the callback.)\n * @returns The same value that `callback` returns.\n */\nexport function withIsolationScope(callback: (isolationScope: Scope) => T): T {\n return runWithAsyncContext(() => {\n return callback(getIsolationScope());\n });\n}\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback.\n *\n * @param span Spans started in the context of the provided callback will be children of this span.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nexport function withActiveSpan(span: Span, callback: (scope: Scope) => T): T {\n return withScope(scope => {\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(span);\n return callback(scope);\n });\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\nexport function startTransaction(\n context: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n // eslint-disable-next-line deprecation/deprecation\n): ReturnType {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function captureCheckIn(checkIn: CheckIn, upsertMonitorConfig?: MonitorConfig): string {\n const scope = getCurrentScope();\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && logger.warn('Cannot capture check-in. No client defined.');\n } else if (!client.captureCheckIn) {\n DEBUG_BUILD && logger.warn('Cannot capture check-in. Client does not support sending check-ins.');\n } else {\n return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n }\n\n return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function withMonitor(\n monitorSlug: CheckIn['monitorSlug'],\n callback: () => T,\n upsertMonitorConfig?: MonitorConfig,\n): T {\n const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n const now = timestampInSeconds();\n\n function finishCheckIn(status: FinishedCheckIn['status']): void {\n captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n }\n\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback();\n } catch (e) {\n finishCheckIn('error');\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n Promise.resolve(maybePromiseResult).then(\n () => {\n finishCheckIn('ok');\n },\n () => {\n finishCheckIn('error');\n },\n );\n } else {\n finishCheckIn('ok');\n }\n\n return maybePromiseResult;\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function flush(timeout?: number): Promise {\n const client = getClient();\n if (client) {\n return client.flush(timeout);\n }\n DEBUG_BUILD && logger.warn('Cannot flush events. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function close(timeout?: number): Promise {\n const client = getClient();\n if (client) {\n return client.close(timeout);\n }\n DEBUG_BUILD && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n * @deprecated This function will be removed in the next major version of the Sentry SDK.\n */\nexport function lastEventId(): string | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().lastEventId();\n}\n\n/**\n * Get the currently active client.\n */\nexport function getClient(): C | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().getClient();\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nexport function isInitialized(): boolean {\n return !!getClient();\n}\n\n/**\n * Get the currently active scope.\n */\nexport function getCurrentScope(): Scope {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().getScope();\n}\n\n/**\n * Start a session on the current isolation scope.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns the new active session\n */\nexport function startSession(context?: SessionContext): Session {\n const client = getClient();\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n user: currentScope.getUser() || isolationScope.getUser(),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = isolationScope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n\n endSession();\n\n // Afterwards we set the new session on the scope\n isolationScope.setSession(session);\n\n // TODO (v8): Remove this and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n currentScope.setSession(session);\n\n return session;\n}\n\n/**\n * End the session on the current isolation scope.\n */\nexport function endSession(): void {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session) {\n closeSession(session);\n }\n _sendSessionUpdate();\n\n // the session is over; take it off of the scope\n isolationScope.setSession();\n\n // TODO (v8): Remove this and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n currentScope.setSession();\n}\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate(): void {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n const client = getClient();\n // TODO (v8): Remove currentScope and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session && client && client.captureSession) {\n client.captureSession(session);\n }\n}\n\n/**\n * Sends the current session on the scope to Sentry\n *\n * @param end If set the session will be marked as exited and removed from the scope.\n * Defaults to `false`.\n */\nexport function captureSession(end: boolean = false): void {\n // both send the update and pull the session from the scope\n if (end) {\n endSession();\n return;\n }\n\n // only send the update\n _sendSessionUpdate();\n}\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n /** Pending */\n PENDING = 0,\n /** Resolved / OK */\n RESOLVED = 1,\n /** Rejected / Error */\n REJECTED = 2,\n}\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike;\nexport function resolvedSyncPromise(value: T | PromiseLike): PromiseLike;\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise(value?: T | PromiseLike): PromiseLike {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise implements PromiseLike {\n private _state: States;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]>;\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void,\n ) {\n this._state = States.PENDING;\n this._handlers = [];\n\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val as unknown as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };\n}\n\nexport { SyncPromise };\n","import type { Event, EventHint, EventProcessor } from '@sentry/types';\nimport { SyncPromise, getGlobalSingleton, isThenable, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\n\n/**\n * Returns the global event processors.\n * @deprecated Global event processors will be removed in v8.\n */\nexport function getGlobalEventProcessors(): EventProcessor[] {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @deprecated Use `addEventProcessor` instead. Global event processors will be removed in v8.\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n // eslint-disable-next-line deprecation/deprecation\n getGlobalEventProcessors().push(callback);\n}\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nexport function notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint: EventHint,\n index: number = 0,\n): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n\n DEBUG_BUILD && processor.id && result === null && logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n}\n","import type { SerializedSession, Session, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nexport function makeSession(context?: Omit): Session {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session: Session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nexport function updateSession(session: Session, context: SessionContext = {}): void {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.abnormal_mechanism) {\n session.abnormal_mechanism = context.abnormal_mechanism;\n }\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nexport function closeSession(session: Session, status?: Exclude): void {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session: Session): SerializedSession {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n abnormal_mechanism: session.abnormal_mechanism,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n","import type { Breadcrumb, Event, ScopeData, Span } from '@sentry/types';\nimport { arrayify, dropUndefinedKeys } from '@sentry/utils';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext';\nimport { getRootSpan } from './getRootSpan';\nimport { spanToJSON, spanToTraceContext } from './spanUtils';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nexport function applyScopeDataToEvent(event: Event, data: ScopeData): void {\n const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n // Apply general data\n applyDataToEvent(event, data);\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (span) {\n applySpanToEvent(event, span);\n }\n\n applyFingerprintToEvent(event, fingerprint);\n applyBreadcrumbsToEvent(event, breadcrumbs);\n applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nexport function mergeScopeData(data: ScopeData, mergeData: ScopeData): void {\n const {\n extra,\n tags,\n user,\n contexts,\n level,\n sdkProcessingMetadata,\n breadcrumbs,\n fingerprint,\n eventProcessors,\n attachments,\n propagationContext,\n // eslint-disable-next-line deprecation/deprecation\n transactionName,\n span,\n } = mergeData;\n\n mergeAndOverwriteScopeData(data, 'extra', extra);\n mergeAndOverwriteScopeData(data, 'tags', tags);\n mergeAndOverwriteScopeData(data, 'user', user);\n mergeAndOverwriteScopeData(data, 'contexts', contexts);\n mergeAndOverwriteScopeData(data, 'sdkProcessingMetadata', sdkProcessingMetadata);\n\n if (level) {\n data.level = level;\n }\n\n if (transactionName) {\n // eslint-disable-next-line deprecation/deprecation\n data.transactionName = transactionName;\n }\n\n if (span) {\n data.span = span;\n }\n\n if (breadcrumbs.length) {\n data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n }\n\n if (fingerprint.length) {\n data.fingerprint = [...data.fingerprint, ...fingerprint];\n }\n\n if (eventProcessors.length) {\n data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n }\n\n if (attachments.length) {\n data.attachments = [...data.attachments, ...attachments];\n }\n\n data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nexport function mergeAndOverwriteScopeData<\n Prop extends 'extra' | 'tags' | 'user' | 'contexts' | 'sdkProcessingMetadata',\n Data extends ScopeData,\n>(data: Data, prop: Prop, mergeVal: Data[Prop]): void {\n if (mergeVal && Object.keys(mergeVal).length) {\n // Clone object\n data[prop] = { ...data[prop] };\n for (const key in mergeVal) {\n if (Object.prototype.hasOwnProperty.call(mergeVal, key)) {\n data[prop][key] = mergeVal[key];\n }\n }\n }\n}\n\n/** Exported only for tests */\nexport function mergeArray(\n event: Event,\n prop: Prop,\n mergeVal: ScopeData[Prop],\n): void {\n const prevVal = event[prop];\n // If we are not merging any new values,\n // we only need to proceed if there was an empty array before (as we want to replace it with undefined)\n if (!mergeVal.length && (!prevVal || prevVal.length)) {\n return;\n }\n\n const merged = [...(prevVal || []), ...mergeVal] as ScopeData[Prop];\n event[prop] = merged.length ? merged : undefined;\n}\n\nfunction applyDataToEvent(event: Event, data: ScopeData): void {\n const {\n extra,\n tags,\n user,\n contexts,\n level,\n // eslint-disable-next-line deprecation/deprecation\n transactionName,\n } = data;\n\n const cleanedExtra = dropUndefinedKeys(extra);\n if (cleanedExtra && Object.keys(cleanedExtra).length) {\n event.extra = { ...cleanedExtra, ...event.extra };\n }\n\n const cleanedTags = dropUndefinedKeys(tags);\n if (cleanedTags && Object.keys(cleanedTags).length) {\n event.tags = { ...cleanedTags, ...event.tags };\n }\n\n const cleanedUser = dropUndefinedKeys(user);\n if (cleanedUser && Object.keys(cleanedUser).length) {\n event.user = { ...cleanedUser, ...event.user };\n }\n\n const cleanedContexts = dropUndefinedKeys(contexts);\n if (cleanedContexts && Object.keys(cleanedContexts).length) {\n event.contexts = { ...cleanedContexts, ...event.contexts };\n }\n\n if (level) {\n event.level = level;\n }\n\n if (transactionName) {\n event.transaction = transactionName;\n }\n}\n\nfunction applyBreadcrumbsToEvent(event: Event, breadcrumbs: Breadcrumb[]): void {\n const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event: Event, sdkProcessingMetadata: ScopeData['sdkProcessingMetadata']): void {\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...sdkProcessingMetadata,\n };\n}\n\nfunction applySpanToEvent(event: Event, span: Span): void {\n event.contexts = { trace: spanToTraceContext(span), ...event.contexts };\n const rootSpan = getRootSpan(span);\n if (rootSpan) {\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n ...event.sdkProcessingMetadata,\n };\n const transactionName = spanToJSON(rootSpan).description;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n}\n\n/**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\nfunction applyFingerprintToEvent(event: Event, fingerprint: ScopeData['fingerprint'] | undefined): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n // If we have something on the scope, then merge it with event\n if (fingerprint) {\n event.fingerprint = event.fingerprint.concat(fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n}\n","/* eslint-disable max-lines */\nimport type {\n Attachment,\n Breadcrumb,\n CaptureContext,\n Client,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n PropagationContext,\n RequestSession,\n Scope as ScopeInterface,\n ScopeContext,\n ScopeData,\n Session,\n Severity,\n SeverityLevel,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, isPlainObject, logger, uuid4 } from '@sentry/utils';\n\nimport { getGlobalEventProcessors, notifyEventProcessors } from './eventProcessors';\nimport { updateSession } from './session';\nimport { applyScopeDataToEvent } from './utils/applyScopeDataToEvent';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * The global scope is kept in this module.\n * When accessing this via `getGlobalScope()` we'll make sure to set one if none is currently present.\n */\nlet globalScope: ScopeInterface | undefined;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void>;\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[];\n\n /** User */\n protected _user: User;\n\n /** Tags */\n protected _tags: { [key: string]: Primitive };\n\n /** Extra */\n protected _extra: Extras;\n\n /** Contexts */\n protected _contexts: Contexts;\n\n /** Attachments */\n protected _attachments: Attachment[];\n\n /** Propagation Context for distributed tracing */\n protected _propagationContext: PropagationContext;\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n protected _sdkProcessingMetadata: { [key: string]: unknown };\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n // eslint-disable-next-line deprecation/deprecation\n protected _level?: Severity | SeverityLevel;\n\n /**\n * Transaction Name\n */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /** Request Mode Session Status */\n protected _requestSession?: RequestSession;\n\n /** The client on this scope */\n protected _client?: Client;\n\n // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n public constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n this._propagationContext = generatePropagationContext();\n }\n\n /**\n * Inherit values from the parent scope.\n * @deprecated Use `scope.clone()` and `new Scope()` instead.\n */\n public static clone(scope?: Scope): Scope {\n return scope ? scope.clone() : new Scope();\n }\n\n /**\n * Clone this scope instance.\n */\n public clone(): Scope {\n const newScope = new Scope();\n newScope._breadcrumbs = [...this._breadcrumbs];\n newScope._tags = { ...this._tags };\n newScope._extra = { ...this._extra };\n newScope._contexts = { ...this._contexts };\n newScope._user = this._user;\n newScope._level = this._level;\n newScope._span = this._span;\n newScope._session = this._session;\n newScope._transactionName = this._transactionName;\n newScope._fingerprint = this._fingerprint;\n newScope._eventProcessors = [...this._eventProcessors];\n newScope._requestSession = this._requestSession;\n newScope._attachments = [...this._attachments];\n newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n newScope._propagationContext = { ...this._propagationContext };\n newScope._client = this._client;\n\n return newScope;\n }\n\n /** Update the client on the scope. */\n public setClient(client: Client | undefined): void {\n this._client = client;\n }\n\n /**\n * Get the client assigned to this scope.\n *\n * It is generally recommended to use the global function `Sentry.getClient()` instead, unless you know what you are doing.\n */\n public getClient(): Client | undefined {\n return this._client;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n // If null is passed we want to unset everything, but still define keys,\n // so that later down in the pipeline any existing values are cleared.\n this._user = user || {\n email: undefined,\n id: undefined,\n ip_address: undefined,\n segment: undefined,\n username: undefined,\n };\n\n if (this._session) {\n updateSession(this._session, { user });\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public getRequestSession(): RequestSession | undefined {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n public setRequestSession(requestSession?: RequestSession): this {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel,\n ): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the transaction name on the scope for future events.\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the Span on the scope.\n * @param span Span\n * @deprecated Instead of setting a span on a scope, use `startSpan()`/`startSpanManual()` instead.\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Returns the `Span` if there is one.\n * @deprecated Use `getActiveSpan()` instead.\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * Returns the `Transaction` attached to the scope (if there is one).\n * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead.\n */\n public getTransaction(): Transaction | undefined {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this._span;\n // Cannot replace with getRootSpan because getRootSpan returns a span, not a transaction\n // Also, this method will be removed anyway.\n // eslint-disable-next-line deprecation/deprecation\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext;\n\n if (scopeToMerge instanceof Scope) {\n const scopeData = scopeToMerge.getScopeData();\n\n this._tags = { ...this._tags, ...scopeData.tags };\n this._extra = { ...this._extra, ...scopeData.extra };\n this._contexts = { ...this._contexts, ...scopeData.contexts };\n if (scopeData.user && Object.keys(scopeData.user).length) {\n this._user = scopeData.user;\n }\n if (scopeData.level) {\n this._level = scopeData.level;\n }\n if (scopeData.fingerprint.length) {\n this._fingerprint = scopeData.fingerprint;\n }\n if (scopeToMerge.getRequestSession()) {\n this._requestSession = scopeToMerge.getRequestSession();\n }\n if (scopeData.propagationContext) {\n this._propagationContext = scopeData.propagationContext;\n }\n } else if (isPlainObject(scopeToMerge)) {\n const scopeContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...scopeContext.tags };\n this._extra = { ...this._extra, ...scopeContext.extra };\n this._contexts = { ...this._contexts, ...scopeContext.contexts };\n if (scopeContext.user) {\n this._user = scopeContext.user;\n }\n if (scopeContext.level) {\n this._level = scopeContext.level;\n }\n if (scopeContext.fingerprint) {\n this._fingerprint = scopeContext.fingerprint;\n }\n if (scopeContext.requestSession) {\n this._requestSession = scopeContext.requestSession;\n }\n if (scopeContext.propagationContext) {\n this._propagationContext = scopeContext.propagationContext;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n this._propagationContext = generatePropagationContext();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n\n const breadcrumbs = this._breadcrumbs;\n breadcrumbs.push(mergedBreadcrumb);\n this._breadcrumbs = breadcrumbs.length > maxCrumbs ? breadcrumbs.slice(-maxCrumbs) : breadcrumbs;\n\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getLastBreadcrumb(): Breadcrumb | undefined {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addAttachment(attachment: Attachment): this {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `getScopeData()` instead.\n */\n public getAttachments(): Attachment[] {\n const data = this.getScopeData();\n\n return data.attachments;\n }\n\n /**\n * @inheritDoc\n */\n public clearAttachments(): this {\n this._attachments = [];\n return this;\n }\n\n /** @inheritDoc */\n public getScopeData(): ScopeData {\n const {\n _breadcrumbs,\n _attachments,\n _contexts,\n _tags,\n _extra,\n _user,\n _level,\n _fingerprint,\n _eventProcessors,\n _propagationContext,\n _sdkProcessingMetadata,\n _transactionName,\n _span,\n } = this;\n\n return {\n breadcrumbs: _breadcrumbs,\n attachments: _attachments,\n contexts: _contexts,\n tags: _tags,\n extra: _extra,\n user: _user,\n level: _level,\n fingerprint: _fingerprint || [],\n eventProcessors: _eventProcessors,\n propagationContext: _propagationContext,\n sdkProcessingMetadata: _sdkProcessingMetadata,\n transactionName: _transactionName,\n span: _span,\n };\n }\n\n /**\n * Applies data from the scope to the event and runs all event processors on it.\n *\n * @param event Event\n * @param hint Object containing additional information about the original exception, for use by the event processors.\n * @hidden\n * @deprecated Use `applyScopeDataToEvent()` directly\n */\n public applyToEvent(\n event: Event,\n hint: EventHint = {},\n additionalEventProcessors: EventProcessor[] = [],\n ): PromiseLike {\n applyScopeDataToEvent(event, this.getScopeData());\n\n // TODO (v8): Update this order to be: Global > Client > Scope\n const eventProcessors: EventProcessor[] = [\n ...additionalEventProcessors,\n // eslint-disable-next-line deprecation/deprecation\n ...getGlobalEventProcessors(),\n ...this._eventProcessors,\n ];\n\n return notifyEventProcessors(eventProcessors, event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setPropagationContext(context: PropagationContext): this {\n this._propagationContext = context;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getPropagationContext(): PropagationContext {\n return this._propagationContext;\n }\n\n /**\n * Capture an exception for this scope.\n *\n * @param exception The exception to capture.\n * @param hint Optinal additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\n public captureException(exception: unknown, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture exception!');\n return eventId;\n }\n\n const syntheticException = new Error('Sentry syntheticException');\n\n this._client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Capture a message for this scope.\n *\n * @param message The message to capture.\n * @param level An optional severity level to report the message with.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured message.\n */\n public captureMessage(message: string, level?: SeverityLevel, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture message!');\n return eventId;\n }\n\n const syntheticException = new Error(message);\n\n this._client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Captures a manually created event for this scope and sends it to Sentry.\n *\n * @param exception The event to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture event!');\n return eventId;\n }\n\n this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n\n return eventId;\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n}\n\n/**\n * Get the global scope.\n * This scope is applied to _all_ events.\n */\nexport function getGlobalScope(): ScopeInterface {\n if (!globalScope) {\n globalScope = new Scope();\n }\n\n return globalScope;\n}\n\n/**\n * This is mainly needed for tests.\n * DO NOT USE this, as this is an internal API and subject to change.\n * @hidden\n */\nexport function setGlobalScope(scope: ScopeInterface | undefined): void {\n globalScope = scope;\n}\n\nfunction generatePropagationContext(): PropagationContext {\n return {\n traceId: uuid4(),\n spanId: uuid4().substring(16),\n };\n}\n","export const SDK_VERSION = '7.114.0';\n","/* eslint-disable max-lines */\nimport type {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n Session,\n SessionContext,\n Severity,\n SeverityLevel,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport {\n GLOBAL_OBJ,\n consoleSandbox,\n dateTimestampInSeconds,\n getGlobalSingleton,\n isThenable,\n logger,\n uuid4,\n} from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport { SDK_VERSION } from './version';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = parseFloat(SDK_VERSION);\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\nexport interface RunWithAsyncContextOptions {\n /** Whether to reuse an existing async context if one exists. Defaults to false. */\n reuseExisting?: boolean;\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Strategy used to track async context.\n */\nexport interface AsyncContextStrategy {\n /**\n * Gets the current async context. Returns undefined if there is no current async context.\n */\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub: () => Hub | undefined;\n /**\n * Runs the supplied callback in its own async context.\n */\n runWithAsyncContext(callback: () => T, options: RunWithAsyncContextOptions): T;\n}\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n client?: Client;\n scope: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: {\n // eslint-disable-next-line deprecation/deprecation\n hub?: Hub;\n acs?: AsyncContextStrategy;\n /**\n * Extra Hub properties injected by various SDKs\n */\n integrations?: Integration[];\n extensions?: {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n/**\n * @deprecated The `Hub` class will be removed in version 8 of the SDK in favour of `Scope` and `Client` objects.\n *\n * If you previously used the `Hub` class directly, replace it with `Scope` and `Client` objects. More information:\n * - [Multiple Sentry Instances](https://docs.sentry.io/platforms/javascript/best-practices/multiple-sentry-instances/)\n * - [Browser Extensions](https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/)\n *\n * Some of our APIs are typed with the Hub class instead of the interface (e.g. `getCurrentHub`). Most of them are deprecated\n * themselves and will also be removed in version 8. More information:\n * - [Migration Guide](https://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md#deprecate-hub)\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n private _isolationScope: Scope;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n *\n * @deprecated Instantiation of Hub objects is deprecated and the constructor will be removed in version 8 of the SDK.\n *\n * If you are currently using the Hub for multi-client use like so:\n *\n * ```\n * // OLD\n * const hub = new Hub();\n * hub.bindClient(client);\n * makeMain(hub)\n * ```\n *\n * instead initialize the client as follows:\n *\n * ```\n * // NEW\n * Sentry.withIsolationScope(() => {\n * Sentry.setCurrentClient(client);\n * client.init();\n * });\n * ```\n *\n * If you are using the Hub to capture events like so:\n *\n * ```\n * // OLD\n * const client = new Client();\n * const hub = new Hub(client);\n * hub.captureException()\n * ```\n *\n * instead capture isolated events as follows:\n *\n * ```\n * // NEW\n * const client = new Client();\n * const scope = new Scope();\n * scope.setClient(client);\n * scope.captureException();\n * ```\n */\n public constructor(\n client?: Client,\n scope?: Scope,\n isolationScope?: Scope,\n private readonly _version: number = API_VERSION,\n ) {\n let assignedScope;\n if (!scope) {\n assignedScope = new Scope();\n assignedScope.setClient(client);\n } else {\n assignedScope = scope;\n }\n\n let assignedIsolationScope;\n if (!isolationScope) {\n assignedIsolationScope = new Scope();\n assignedIsolationScope.setClient(client);\n } else {\n assignedIsolationScope = isolationScope;\n }\n\n this._stack = [{ scope: assignedScope }];\n\n if (client) {\n // eslint-disable-next-line deprecation/deprecation\n this.bindClient(client);\n }\n\n this._isolationScope = assignedIsolationScope;\n }\n\n /**\n * Checks if this hub's version is older than the given version.\n *\n * @param version A version number to compare to.\n * @return True if the given version is newer; otherwise false.\n *\n * @deprecated This will be removed in v8.\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * This binds the given client to the current scope.\n * @param client An SDK client (client) instance.\n *\n * @deprecated Use `initAndBind()` directly, or `setCurrentClient()` and/or `client.init()` instead.\n */\n public bindClient(client?: Client): void {\n // eslint-disable-next-line deprecation/deprecation\n const top = this.getStackTop();\n top.client = client;\n top.scope.setClient(client);\n // eslint-disable-next-line deprecation/deprecation\n if (client && client.setupIntegrations) {\n // eslint-disable-next-line deprecation/deprecation\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `withScope` instead.\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n // eslint-disable-next-line deprecation/deprecation\n const scope = this.getScope().clone();\n // eslint-disable-next-line deprecation/deprecation\n this.getStack().push({\n // eslint-disable-next-line deprecation/deprecation\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `withScope` instead.\n */\n public popScope(): boolean {\n // eslint-disable-next-line deprecation/deprecation\n if (this.getStack().length <= 1) return false;\n // eslint-disable-next-line deprecation/deprecation\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.withScope()` instead.\n */\n public withScope(callback: (scope: Scope) => T): T {\n // eslint-disable-next-line deprecation/deprecation\n const scope = this.pushScope();\n\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback(scope);\n } catch (e) {\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n // @ts-expect-error - isThenable returns the wrong type\n return maybePromiseResult.then(\n res => {\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n return res;\n },\n e => {\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n throw e;\n },\n );\n }\n\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n return maybePromiseResult;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.getClient()` instead.\n */\n public getClient(): C | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return this.getStackTop().client as C;\n }\n\n /**\n * Returns the scope of the top stack.\n *\n * @deprecated Use `Sentry.getCurrentScope()` instead.\n */\n public getScope(): Scope {\n // eslint-disable-next-line deprecation/deprecation\n return this.getStackTop().scope;\n }\n\n /**\n * @deprecated Use `Sentry.getIsolationScope()` instead.\n */\n public getIsolationScope(): Scope {\n return this._isolationScope;\n }\n\n /**\n * Returns the scope stack for domains or the process.\n * @deprecated This will be removed in v8.\n */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /**\n * Returns the topmost scope layer in the order domain > local > process.\n * @deprecated This will be removed in v8.\n */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.captureException()` instead.\n */\n public captureException(exception: unknown, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error('Sentry syntheticException');\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().captureException(exception, {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.captureMessage()` instead.\n */\n public captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n ): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error(message);\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().captureMessage(message, level, {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.captureEvent()` instead.\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (!event.type) {\n this._lastEventId = eventId;\n }\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().captureEvent(event, { ...hint, event_id: eventId });\n return eventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated This will be removed in v8.\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.addBreadcrumb()` instead.\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n\n if (!client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n if (client.emit) {\n client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n }\n\n // TODO(v8): I know this comment doesn't make much sense because the hub will be deprecated but I still wanted to\n // write it down. In theory, we would have to add the breadcrumbs to the isolation scope here, however, that would\n // duplicate all of the breadcrumbs. There was the possibility of adding breadcrumbs to both, the isolation scope\n // and the normal scope, and deduplicating it down the line in the event processing pipeline. However, that would\n // have been very fragile, because the breadcrumb objects would have needed to keep their identity all throughout\n // the event processing pipeline.\n // In the new implementation, the top level `Sentry.addBreadcrumb()` should ONLY write to the isolation scope.\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setUser()` instead.\n */\n public setUser(user: User | null): void {\n // TODO(v8): The top level `Sentry.setUser()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setUser(user);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setUser(user);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setTags()` instead.\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n // TODO(v8): The top level `Sentry.setTags()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setTags(tags);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setTags(tags);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setExtras()` instead.\n */\n public setExtras(extras: Extras): void {\n // TODO(v8): The top level `Sentry.setExtras()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setExtras(extras);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setExtras(extras);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setTag()` instead.\n */\n public setTag(key: string, value: Primitive): void {\n // TODO(v8): The top level `Sentry.setTag()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setTag(key, value);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setTag(key, value);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setExtra()` instead.\n */\n public setExtra(key: string, extra: Extra): void {\n // TODO(v8): The top level `Sentry.setExtra()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setExtra(key, extra);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setContext()` instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n // TODO(v8): The top level `Sentry.setContext()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setContext(name, context);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setContext(name, context);\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `getScope()` directly.\n */\n public configureScope(callback: (scope: Scope) => void): void {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line deprecation/deprecation\n public run(callback: (hub: Hub) => void): void {\n // eslint-disable-next-line deprecation/deprecation\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n // eslint-disable-next-line deprecation/deprecation\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.getClient().getIntegrationByName()` instead.\n */\n public getIntegration(integration: IntegrationClass): T | null {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n if (!client) return null;\n try {\n // eslint-disable-next-line deprecation/deprecation\n return client.getIntegration(integration);\n } catch (_oO) {\n DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n const result = this._callExtensionMethod('startTransaction', context, customSamplingContext);\n\n if (DEBUG_BUILD && !result) {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n if (!client) {\n logger.warn(\n \"Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'\",\n );\n } else {\n logger.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':\nSentry.addTracingExtensions();\nSentry.init({...});\n`);\n }\n }\n\n return result;\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `spanToTraceHeader()` instead.\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use top level `captureSession` instead.\n */\n public captureSession(endSession: boolean = false): void {\n // both send the update and pull the session from the scope\n if (endSession) {\n // eslint-disable-next-line deprecation/deprecation\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n * @deprecated Use top level `endSession` instead.\n */\n public endSession(): void {\n // eslint-disable-next-line deprecation/deprecation\n const layer = this.getStackTop();\n const scope = layer.scope;\n const session = scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n scope.setSession();\n }\n\n /**\n * @inheritDoc\n * @deprecated Use top level `startSession` instead.\n */\n public startSession(context?: SessionContext): Session {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n user: scope.getUser(),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n // eslint-disable-next-line deprecation/deprecation\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n\n return session;\n }\n\n /**\n * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n * when Tracing is used.\n *\n * @deprecated Use top-level `getClient().getOptions().sendDefaultPii` instead. This function\n * only unnecessarily increased API surface but only wrapped accessing the option.\n */\n public shouldSendDefaultPii(): boolean {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n const options = client && client.getOptions();\n return Boolean(options && options.sendDefaultPii);\n }\n\n /**\n * Sends the current Session on the scope\n */\n private _sendSessionUpdate(): void {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n\n const session = scope.getSession();\n if (session && client && client.captureSession) {\n client.captureSession(session);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-expect-error Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _callExtensionMethod(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n DEBUG_BUILD && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return GLOBAL_OBJ;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n *\n * @deprecated Use `setCurrentClient()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n *\n * @deprecated Use the respective replacement method directly instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n const hub = registry.__SENTRY__.acs.getCurrentHub();\n\n if (hub) {\n return hub;\n }\n }\n\n // Return hub that lives on a global object\n return getGlobalHub(registry);\n}\n\n/**\n * Get the currently active isolation scope.\n * The isolation scope is active for the current exection context,\n * meaning that it will remain stable for the same Hub.\n */\nexport function getIsolationScope(): Scope {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().getIsolationScope();\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction getGlobalHub(registry: Carrier = getMainCarrier()): Hub {\n // If there's no hub, or its an old API, assign a new one\n\n if (\n !hasHubOnCarrier(registry) ||\n // eslint-disable-next-line deprecation/deprecation\n getHubFromCarrier(registry).isOlderThan(API_VERSION)\n ) {\n // eslint-disable-next-line deprecation/deprecation\n setHubOnCarrier(registry, new Hub());\n }\n\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * If the carrier does not contain a hub, a new hub is created with the global hub client and scope.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function ensureHubOnCarrier(carrier: Carrier, parent: Hub = getGlobalHub()): void {\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (\n !hasHubOnCarrier(carrier) ||\n // eslint-disable-next-line deprecation/deprecation\n getHubFromCarrier(carrier).isOlderThan(API_VERSION)\n ) {\n // eslint-disable-next-line deprecation/deprecation\n const client = parent.getClient();\n // eslint-disable-next-line deprecation/deprecation\n const scope = parent.getScope();\n // eslint-disable-next-line deprecation/deprecation\n const isolationScope = parent.getIsolationScope();\n // eslint-disable-next-line deprecation/deprecation\n setHubOnCarrier(carrier, new Hub(client, scope.clone(), isolationScope.clone()));\n }\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nexport function setAsyncContextStrategy(strategy: AsyncContextStrategy | undefined): void {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n registry.__SENTRY__ = registry.__SENTRY__ || {};\n registry.__SENTRY__.acs = strategy;\n}\n\n/**\n * Runs the supplied callback in its own async context. Async Context strategies are defined per SDK.\n *\n * @param callback The callback to run in its own async context\n * @param options Options to pass to the async context strategy\n * @returns The result of the callback\n */\nexport function runWithAsyncContext(callback: () => T, options: RunWithAsyncContextOptions = {}): T {\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n return registry.__SENTRY__.acs.runWithAsyncContext(callback, options);\n }\n\n // if there was no strategy, fallback to just calling the callback\n return callback();\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n // eslint-disable-next-line deprecation/deprecation\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n","import type { MeasurementUnit, Span } from '@sentry/types';\nimport type { MetricSummary } from '@sentry/types';\nimport type { Primitive } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\nimport { getActiveSpan } from '../tracing';\nimport type { MetricType } from './types';\n\n/**\n * key: bucketKey\n * value: [exportKey, MetricSummary]\n */\ntype MetricSummaryStorage = Map;\n\nlet SPAN_METRIC_SUMMARY: WeakMap | undefined;\n\nfunction getMetricStorageForSpan(span: Span): MetricSummaryStorage | undefined {\n return SPAN_METRIC_SUMMARY ? SPAN_METRIC_SUMMARY.get(span) : undefined;\n}\n\n/**\n * Fetches the metric summary if it exists for the passed span\n */\nexport function getMetricSummaryJsonForSpan(span: Span): Record> | undefined {\n const storage = getMetricStorageForSpan(span);\n\n if (!storage) {\n return undefined;\n }\n const output: Record> = {};\n\n for (const [, [exportKey, summary]] of storage) {\n if (!output[exportKey]) {\n output[exportKey] = [];\n }\n\n output[exportKey].push(dropUndefinedKeys(summary));\n }\n\n return output;\n}\n\n/**\n * Updates the metric summary on the currently active span\n */\nexport function updateMetricSummaryOnActiveSpan(\n metricType: MetricType,\n sanitizedName: string,\n value: number,\n unit: MeasurementUnit,\n tags: Record,\n bucketKey: string,\n): void {\n const span = getActiveSpan();\n if (span) {\n const storage = getMetricStorageForSpan(span) || new Map();\n\n const exportKey = `${metricType}:${sanitizedName}@${unit}`;\n const bucketItem = storage.get(bucketKey);\n\n if (bucketItem) {\n const [, summary] = bucketItem;\n storage.set(bucketKey, [\n exportKey,\n {\n min: Math.min(summary.min, value),\n max: Math.max(summary.max, value),\n count: (summary.count += 1),\n sum: (summary.sum += value),\n tags: summary.tags,\n },\n ]);\n } else {\n storage.set(bucketKey, [\n exportKey,\n {\n min: value,\n max: value,\n count: 1,\n sum: value,\n tags,\n },\n ]);\n }\n\n if (!SPAN_METRIC_SUMMARY) {\n SPAN_METRIC_SUMMARY = new WeakMap();\n }\n\n SPAN_METRIC_SUMMARY.set(span, storage);\n }\n}\n","/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Use this attribute to represent the sample rate used for a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/**\n * The id of the profile that this span occured in.\n */\nexport const SEMANTIC_ATTRIBUTE_PROFILE_ID = 'profile_id';\n","import type { Client, DynamicSamplingContext, Scope, Span, Transaction } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getClient, getCurrentScope } from '../exports';\nimport { getRootSpan } from '../utils/getRootSpan';\nimport { spanIsSampled, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nexport function getDynamicSamplingContextFromClient(\n trace_id: string,\n client: Client,\n scope?: Scope,\n): DynamicSamplingContext {\n const options = client.getOptions();\n\n const { publicKey: public_key } = client.getDsn() || {};\n // TODO(v8): Remove segment from User\n // eslint-disable-next-line deprecation/deprecation\n const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n const dsc = dropUndefinedKeys({\n environment: options.environment || DEFAULT_ENVIRONMENT,\n release: options.release,\n user_segment,\n public_key,\n trace_id,\n }) as DynamicSamplingContext;\n\n client.emit && client.emit('createDsc', dsc);\n\n return dsc;\n}\n\n/**\n * A Span with a frozen dynamic sampling context.\n */\ntype TransactionWithV7FrozenDsc = Transaction & { _frozenDynamicSamplingContext?: DynamicSamplingContext };\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nexport function getDynamicSamplingContextFromSpan(span: Span): Readonly> {\n const client = getClient();\n if (!client) {\n return {};\n }\n\n // passing emit=false here to only emit later once the DSC is actually populated\n const dsc = getDynamicSamplingContextFromClient(spanToJSON(span).trace_id || '', client, getCurrentScope());\n\n // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n const txn = getRootSpan(span) as TransactionWithV7FrozenDsc | undefined;\n if (!txn) {\n return dsc;\n }\n\n // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n // For now we need to avoid breaking users who directly created a txn with a DSC, where this field is still set.\n // @see Transaction class constructor\n const v7FrozenDsc = txn && txn._frozenDynamicSamplingContext;\n if (v7FrozenDsc) {\n return v7FrozenDsc;\n }\n\n // TODO (v8): Replace txn.metadata with txn.attributes[]\n // We can't do this yet because attributes aren't always set yet.\n // eslint-disable-next-line deprecation/deprecation\n const { sampleRate: maybeSampleRate, source } = txn.metadata;\n if (maybeSampleRate != null) {\n dsc.sample_rate = `${maybeSampleRate}`;\n }\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const jsonSpan = spanToJSON(txn);\n\n // after JSON conversion, txn.name becomes jsonSpan.description\n if (source && source !== 'url') {\n dsc.transaction = jsonSpan.description;\n }\n\n dsc.sampled = String(spanIsSampled(txn));\n\n client.emit && client.emit('createDsc', dsc);\n\n return dsc;\n}\n","import type { HandlerDataError } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nlet _oldOnErrorHandler: (typeof GLOBAL_OBJ)['onerror'] | null = null;\n\n/**\n * Add an instrumentation handler for when an error is captured by the global error handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalErrorInstrumentationHandler(handler: (data: HandlerDataError) => void): void {\n const type = 'error';\n addHandler(type, handler);\n maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError(): void {\n _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n\n GLOBAL_OBJ.onerror = function (\n msg: string | object,\n url?: string,\n line?: number,\n column?: number,\n error?: Error,\n ): boolean {\n const handlerData: HandlerDataError = {\n column,\n error,\n line,\n msg,\n url,\n };\n triggerHandlers('error', handlerData);\n\n if (_oldOnErrorHandler && !_oldOnErrorHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n\n GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { HandlerDataUnhandledRejection } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nlet _oldOnUnhandledRejectionHandler: (typeof GLOBAL_OBJ)['onunhandledrejection'] | null = null;\n\n/**\n * Add an instrumentation handler for when an unhandled promise rejection is captured.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalUnhandledRejectionInstrumentationHandler(\n handler: (data: HandlerDataUnhandledRejection) => void,\n): void {\n const type = 'unhandledrejection';\n addHandler(type, handler);\n maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n\n GLOBAL_OBJ.onunhandledrejection = function (e: any): boolean {\n const handlerData: HandlerDataUnhandledRejection = e;\n triggerHandlers('unhandledrejection', handlerData);\n\n if (_oldOnUnhandledRejectionHandler && !_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n\n GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n","import {\n addGlobalErrorInstrumentationHandler,\n addGlobalUnhandledRejectionInstrumentationHandler,\n logger,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { SpanStatusType } from './spanstatus';\nimport { getActiveTransaction } from './utils';\n\nlet errorsInstrumented = false;\n\n/**\n * Configures global error listeners\n */\nexport function registerErrorInstrumentation(): void {\n if (errorsInstrumented) {\n return;\n }\n\n errorsInstrumented = true;\n addGlobalErrorInstrumentationHandler(errorCallback);\n addGlobalUnhandledRejectionInstrumentationHandler(errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback(): void {\n // eslint-disable-next-line deprecation/deprecation\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const status: SpanStatusType = 'internal_error';\n DEBUG_BUILD && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n\n// The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n// node.js default exit behaviour\nerrorCallback.tag = 'sentry_tracingErrorCallback';\n","import type { ClientOptions, CustomSamplingContext, TransactionContext } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Hub } from '../hub';\nimport { getMainCarrier } from '../hub';\nimport { spanToTraceHeader } from '../utils/spanUtils';\nimport { registerErrorInstrumentation } from './errors';\nimport { IdleTransaction } from './idletransaction';\nimport { sampleTransaction } from './sampling';\nimport { Transaction } from './transaction';\n\n/** Returns all trace headers that are currently on the top scope. */\n// eslint-disable-next-line deprecation/deprecation\nfunction traceHeaders(this: Hub): { [key: string]: string } {\n // eslint-disable-next-line deprecation/deprecation\n const scope = this.getScope();\n // eslint-disable-next-line deprecation/deprecation\n const span = scope.getSpan();\n\n return span\n ? {\n 'sentry-trace': spanToTraceHeader(span),\n }\n : {};\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n // eslint-disable-next-line deprecation/deprecation\n this: Hub,\n transactionContext: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): Transaction {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n const options: Partial = (client && client.getOptions()) || {};\n\n const configInstrumenter = options.instrumenter || 'sentry';\n const transactionInstrumenter = transactionContext.instrumenter || 'sentry';\n\n if (configInstrumenter !== transactionInstrumenter) {\n DEBUG_BUILD &&\n logger.error(\n `A transaction was started with instrumenter=\\`${transactionInstrumenter}\\`, but the SDK is configured with the \\`${configInstrumenter}\\` instrumenter.\nThe transaction will not be sampled. Please use the ${configInstrumenter} instrumentation to start transactions.`,\n );\n\n // eslint-disable-next-line deprecation/deprecation\n transactionContext.sampled = false;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n let transaction = new Transaction(transactionContext, this);\n transaction = sampleTransaction(transaction, options, {\n name: transactionContext.name,\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n attributes: {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.data,\n ...transactionContext.attributes,\n },\n ...customSamplingContext,\n });\n if (transaction.isRecording()) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nexport function startIdleTransaction(\n // eslint-disable-next-line deprecation/deprecation\n hub: Hub,\n transactionContext: TransactionContext,\n idleTimeout: number,\n finalTimeout: number,\n onScope?: boolean,\n customSamplingContext?: CustomSamplingContext,\n heartbeatInterval?: number,\n delayAutoFinishUntilSignal: boolean = false,\n): IdleTransaction {\n // eslint-disable-next-line deprecation/deprecation\n const client = hub.getClient();\n const options: Partial = (client && client.getOptions()) || {};\n\n // eslint-disable-next-line deprecation/deprecation\n let transaction = new IdleTransaction(\n transactionContext,\n hub,\n idleTimeout,\n finalTimeout,\n heartbeatInterval,\n onScope,\n delayAutoFinishUntilSignal,\n );\n transaction = sampleTransaction(transaction, options, {\n name: transactionContext.name,\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n attributes: {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.data,\n ...transactionContext.attributes,\n },\n ...customSamplingContext,\n });\n if (transaction.isRecording()) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Adds tracing extensions to the global hub.\n */\nexport function addTracingExtensions(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n\n registerErrorInstrumentation();\n}\n","/* eslint-disable max-lines */\nimport type { SpanTimeInput, TransactionContext } from '@sentry/types';\nimport { logger, timestampInSeconds } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Hub } from '../hub';\nimport { spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils';\nimport type { Span } from './span';\nimport { SpanRecorder } from './span';\nimport { Transaction } from './transaction';\n\nexport const TRACING_DEFAULTS = {\n idleTimeout: 1000,\n finalTimeout: 30000,\n heartbeatInterval: 5000,\n};\n\nconst FINISH_REASON_TAG = 'finishReason';\n\nconst IDLE_TRANSACTION_FINISH_REASONS = [\n 'heartbeatFailed',\n 'idleTimeout',\n 'documentHidden',\n 'finalTimeout',\n 'externalFinish',\n 'cancelled',\n];\n\n/**\n * @inheritDoc\n */\nexport class IdleTransactionSpanRecorder extends SpanRecorder {\n public constructor(\n private readonly _pushActivity: (id: string) => void,\n private readonly _popActivity: (id: string) => void,\n public transactionSpanId: string,\n maxlen?: number,\n ) {\n super(maxlen);\n }\n\n /**\n * @inheritDoc\n */\n public add(span: Span): void {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanContext().spanId !== this.transactionSpanId) {\n // We patch span.end() to pop an activity after setting an endTimestamp.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const originalEnd = span.end;\n span.end = (...rest: unknown[]) => {\n this._popActivity(span.spanContext().spanId);\n return originalEnd.apply(span, rest);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (spanToJSON(span).timestamp === undefined) {\n this._pushActivity(span.spanContext().spanId);\n }\n }\n\n super.add(span);\n }\n}\n\nexport type BeforeFinishCallback = (transactionSpan: IdleTransaction, endTimestamp: number) => void;\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nexport class IdleTransaction extends Transaction {\n // Activities store a list of active spans\n public activities: Record;\n // Track state of activities in previous heartbeat\n private _prevHeartbeatString: string | undefined;\n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n private _heartbeatCounter: number;\n\n // We should not use heartbeat if we finished a transaction\n private _finished: boolean;\n\n // Idle timeout was canceled and we should finish the transaction with the last span end.\n private _idleTimeoutCanceledPermanently: boolean;\n\n private readonly _beforeFinishCallbacks: BeforeFinishCallback[];\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n private _idleTimeoutID: ReturnType | undefined;\n\n private _finishReason: (typeof IDLE_TRANSACTION_FINISH_REASONS)[number];\n\n private _autoFinishAllowed: boolean;\n\n /**\n * @deprecated Transactions will be removed in v8. Use spans instead.\n */\n public constructor(\n transactionContext: TransactionContext,\n // eslint-disable-next-line deprecation/deprecation\n private readonly _idleHub: Hub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n private readonly _idleTimeout: number = TRACING_DEFAULTS.idleTimeout,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n private readonly _finalTimeout: number = TRACING_DEFAULTS.finalTimeout,\n private readonly _heartbeatInterval: number = TRACING_DEFAULTS.heartbeatInterval,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n private readonly _onScope: boolean = false,\n /**\n * When set to `true`, will disable the idle timeout (`_idleTimeout` option) and heartbeat mechanisms (`_heartbeatInterval`\n * option) until the `sendAutoFinishSignal()` method is called. The final timeout mechanism (`_finalTimeout` option)\n * will not be affected by this option, meaning the transaction will definitely be finished when the final timeout is\n * reached, no matter what this option is configured to.\n *\n * Defaults to `false`.\n */\n delayAutoFinishUntilSignal: boolean = false,\n ) {\n super(transactionContext, _idleHub);\n\n this.activities = {};\n this._heartbeatCounter = 0;\n this._finished = false;\n this._idleTimeoutCanceledPermanently = false;\n this._beforeFinishCallbacks = [];\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[4];\n this._autoFinishAllowed = !delayAutoFinishUntilSignal;\n\n if (_onScope) {\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n DEBUG_BUILD && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanContext().spanId}`);\n // eslint-disable-next-line deprecation/deprecation\n _idleHub.getScope().setSpan(this);\n }\n\n if (!delayAutoFinishUntilSignal) {\n this._restartIdleTimeout();\n }\n\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[3];\n this.end();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n public end(endTimestamp?: SpanTimeInput): string | undefined {\n const endTimestampInS = spanTimeInputToSeconds(endTimestamp);\n\n this._finished = true;\n this.activities = {};\n\n // eslint-disable-next-line deprecation/deprecation\n if (this.op === 'ui.action.click') {\n this.setAttribute(FINISH_REASON_TAG, this._finishReason);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n if (this.spanRecorder) {\n DEBUG_BUILD &&\n // eslint-disable-next-line deprecation/deprecation\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestampInS * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestampInS);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span: Span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanContext().spanId === this.spanContext().spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!spanToJSON(span).timestamp) {\n span.setStatus('cancelled');\n span.end(endTimestampInS);\n DEBUG_BUILD &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const { start_timestamp: startTime, timestamp: endTime } = spanToJSON(span);\n const spanStartedBeforeTransactionFinish = startTime && startTime < endTimestampInS;\n\n // Add a delta with idle timeout so that we prevent false positives\n const timeoutWithMarginOfError = (this._finalTimeout + this._idleTimeout) / 1000;\n const spanEndedBeforeFinalTimeout = endTime && startTime && endTime - startTime < timeoutWithMarginOfError;\n\n if (DEBUG_BUILD) {\n const stringifiedSpan = JSON.stringify(span, undefined, 2);\n if (!spanStartedBeforeTransactionFinish) {\n logger.log('[Tracing] discarding Span since it happened after Transaction was finished', stringifiedSpan);\n } else if (!spanEndedBeforeFinalTimeout) {\n logger.log('[Tracing] discarding Span since it finished after Transaction final timeout', stringifiedSpan);\n }\n }\n\n return spanStartedBeforeTransactionFinish && spanEndedBeforeFinalTimeout;\n });\n\n DEBUG_BUILD && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n DEBUG_BUILD && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n // eslint-disable-next-line deprecation/deprecation\n const scope = this._idleHub.getScope();\n // eslint-disable-next-line deprecation/deprecation\n if (scope.getTransaction() === this) {\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(undefined);\n }\n }\n\n return super.end(endTimestamp);\n }\n\n /**\n * Register a callback function that gets executed before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n public registerBeforeFinishCallback(callback: BeforeFinishCallback): void {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public initSpanRecorder(maxlen?: number): void {\n // eslint-disable-next-line deprecation/deprecation\n if (!this.spanRecorder) {\n const pushActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n const popActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanContext().spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n DEBUG_BUILD && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idle timeout, if there is one.\n * @param restartOnChildSpanChange Default is `true`.\n * If set to false the transaction will end\n * with the last child span.\n */\n public cancelIdleTimeout(\n endTimestamp?: Parameters[0],\n {\n restartOnChildSpanChange,\n }: {\n restartOnChildSpanChange?: boolean;\n } = {\n restartOnChildSpanChange: true,\n },\n ): void {\n this._idleTimeoutCanceledPermanently = restartOnChildSpanChange === false;\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n\n if (Object.keys(this.activities).length === 0 && this._idleTimeoutCanceledPermanently) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.end(endTimestamp);\n }\n }\n }\n\n /**\n * Temporary method used to externally set the transaction's `finishReason`\n *\n * ** WARNING**\n * This is for the purpose of experimentation only and will be removed in the near future, do not use!\n *\n * @internal\n *\n */\n public setFinishReason(reason: string): void {\n this._finishReason = reason;\n }\n\n /**\n * Permits the IdleTransaction to automatically end itself via the idle timeout and heartbeat mechanisms when the `delayAutoFinishUntilSignal` option was set to `true`.\n */\n public sendAutoFinishSignal(): void {\n if (!this._autoFinishAllowed) {\n DEBUG_BUILD && logger.log('[Tracing] Received finish signal for idle transaction.');\n this._restartIdleTimeout();\n this._autoFinishAllowed = true;\n }\n }\n\n /**\n * Restarts idle timeout, if there is no running idle timeout it will start one.\n */\n private _restartIdleTimeout(endTimestamp?: Parameters[0]): void {\n this.cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[1];\n this.end(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n private _pushActivity(spanId: string): void {\n this.cancelIdleTimeout(undefined, { restartOnChildSpanChange: !this._idleTimeoutCanceledPermanently });\n DEBUG_BUILD && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n private _popActivity(spanId: string): void {\n if (this.activities[spanId]) {\n DEBUG_BUILD && logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n const endTimestamp = timestampInSeconds();\n if (this._idleTimeoutCanceledPermanently) {\n if (this._autoFinishAllowed) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.end(endTimestamp);\n }\n } else {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampInSeconds is in seconds, timeout is in ms\n this._restartIdleTimeout(endTimestamp + this._idleTimeout / 1000);\n }\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n private _beat(): void {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n const heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter++;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n if (this._autoFinishAllowed) {\n DEBUG_BUILD && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[0];\n this.end();\n }\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n private _pingHeartbeat(): void {\n DEBUG_BUILD && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, this._heartbeatInterval);\n }\n}\n","import type { Options, SamplingContext } from '@sentry/types';\nimport { isNaN, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE } from '../semanticAttributes';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled';\nimport { spanToJSON } from '../utils/spanUtils';\nimport type { Transaction } from './transaction';\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * This method muttes the given `transaction` and will set the `sampled` value on it.\n * It returns the same transaction, for convenience.\n */\nexport function sampleTransaction(\n transaction: T,\n options: Pick,\n samplingContext: SamplingContext,\n): T {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n // eslint-disable-next-line deprecation/deprecation\n if (transaction.sampled !== undefined) {\n // eslint-disable-next-line deprecation/deprecation\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(transaction.sampled));\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` nor `enableTracing` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(sampleRate));\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n } else if (typeof options.tracesSampleRate !== 'undefined') {\n sampleRate = options.tracesSampleRate;\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(sampleRate));\n } else {\n // When `enableTracing === true`, we use a sample rate of 100%\n sampleRate = 1;\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, sampleRate);\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n DEBUG_BUILD && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n DEBUG_BUILD &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = Math.random() < (sampleRate as number | boolean);\n\n // if we're not going to keep it, we're done\n // eslint-disable-next-line deprecation/deprecation\n if (!transaction.sampled) {\n DEBUG_BUILD &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n DEBUG_BUILD &&\n // eslint-disable-next-line deprecation/deprecation\n logger.log(`[Tracing] starting ${transaction.op} transaction - ${spanToJSON(transaction).description}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nexport function isValidSampleRate(rate: unknown): boolean {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n DEBUG_BUILD &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n DEBUG_BUILD &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n","/* eslint-disable max-lines */\nimport type {\n Instrumenter,\n Measurements,\n Primitive,\n Span as SpanInterface,\n SpanAttributeValue,\n SpanAttributes,\n SpanContext,\n SpanContextData,\n SpanJSON,\n SpanOrigin,\n SpanTimeInput,\n TraceContext,\n Transaction,\n} from '@sentry/types';\nimport { dropUndefinedKeys, logger, timestampInSeconds, uuid4 } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getMetricSummaryJsonForSpan } from '../metrics/metric-summary';\nimport {\n SEMANTIC_ATTRIBUTE_PROFILE_ID,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n} from '../semanticAttributes';\nimport { getRootSpan } from '../utils/getRootSpan';\nimport {\n TRACE_FLAG_NONE,\n TRACE_FLAG_SAMPLED,\n spanTimeInputToSeconds,\n spanToJSON,\n spanToTraceContext,\n spanToTraceHeader,\n} from '../utils/spanUtils';\nimport type { SpanStatusType } from './spanstatus';\nimport { setHttpStatus } from './spanstatus';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nexport class SpanRecorder {\n public spans: Span[];\n\n private readonly _maxlen: number;\n\n public constructor(maxlen: number = 1000) {\n this._maxlen = maxlen;\n this.spans = [];\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n public add(span: Span): void {\n if (this.spans.length > this._maxlen) {\n // eslint-disable-next-line deprecation/deprecation\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nexport class Span implements SpanInterface {\n /**\n * Tags for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n public tags: { [key: string]: Primitive };\n\n /**\n * Data for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public data: { [key: string]: any };\n\n /**\n * List of spans that were finalized\n *\n * @deprecated This property will no longer be public. Span recording will be handled internally.\n */\n public spanRecorder?: SpanRecorder;\n\n /**\n * @inheritDoc\n * @deprecated Use top level `Sentry.getRootSpan()` instead\n */\n public transaction?: Transaction;\n\n /**\n * The instrumenter that created this span.\n *\n * TODO (v8): This can probably be replaced by an `instanceOf` check of the span class.\n * the instrumenter can only be sentry or otel so we can check the span instance\n * to verify which one it is and remove this field entirely.\n *\n * @deprecated This field will be removed.\n */\n public instrumenter: Instrumenter;\n\n protected _traceId: string;\n protected _spanId: string;\n protected _parentSpanId?: string | undefined;\n protected _sampled: boolean | undefined;\n protected _name?: string | undefined;\n protected _attributes: SpanAttributes;\n /** Epoch timestamp in seconds when the span started. */\n protected _startTime: number;\n /** Epoch timestamp in seconds when the span ended. */\n protected _endTime?: number | undefined;\n /** Internal keeper of the status */\n protected _status?: SpanStatusType | string | undefined;\n protected _exclusiveTime?: number;\n\n protected _measurements: Measurements;\n\n private _logMessage?: string;\n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(spanContext: SpanContext = {}) {\n this._traceId = spanContext.traceId || uuid4();\n this._spanId = spanContext.spanId || uuid4().substring(16);\n this._startTime = spanContext.startTimestamp || timestampInSeconds();\n // eslint-disable-next-line deprecation/deprecation\n this.tags = spanContext.tags ? { ...spanContext.tags } : {};\n // eslint-disable-next-line deprecation/deprecation\n this.data = spanContext.data ? { ...spanContext.data } : {};\n // eslint-disable-next-line deprecation/deprecation\n this.instrumenter = spanContext.instrumenter || 'sentry';\n\n this._attributes = {};\n this.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanContext.origin || 'manual',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: spanContext.op,\n ...spanContext.attributes,\n });\n\n // eslint-disable-next-line deprecation/deprecation\n this._name = spanContext.name || spanContext.description;\n\n if (spanContext.parentSpanId) {\n this._parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this._sampled = spanContext.sampled;\n }\n if (spanContext.status) {\n this._status = spanContext.status;\n }\n if (spanContext.endTimestamp) {\n this._endTime = spanContext.endTimestamp;\n }\n if (spanContext.exclusiveTime !== undefined) {\n this._exclusiveTime = spanContext.exclusiveTime;\n }\n this._measurements = spanContext.measurements ? { ...spanContext.measurements } : {};\n }\n\n // This rule conflicts with another eslint rule :(\n /* eslint-disable @typescript-eslint/member-ordering */\n\n /**\n * An alias for `description` of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public get name(): string {\n return this._name || '';\n }\n\n /**\n * Update the name of the span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public set name(name: string) {\n this.updateName(name);\n }\n\n /**\n * Get the description of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public get description(): string | undefined {\n return this._name;\n }\n\n /**\n * Get the description of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public set description(description: string | undefined) {\n this._name = description;\n }\n\n /**\n * The ID of the trace.\n * @deprecated Use `spanContext().traceId` instead.\n */\n public get traceId(): string {\n return this._traceId;\n }\n\n /**\n * The ID of the trace.\n * @deprecated You cannot update the traceId of a span after span creation.\n */\n public set traceId(traceId: string) {\n this._traceId = traceId;\n }\n\n /**\n * The ID of the span.\n * @deprecated Use `spanContext().spanId` instead.\n */\n public get spanId(): string {\n return this._spanId;\n }\n\n /**\n * The ID of the span.\n * @deprecated You cannot update the spanId of a span after span creation.\n */\n public set spanId(spanId: string) {\n this._spanId = spanId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `startSpan` functions instead.\n */\n public set parentSpanId(string) {\n this._parentSpanId = string;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON(span).parent_span_id` instead.\n */\n public get parentSpanId(): string | undefined {\n return this._parentSpanId;\n }\n\n /**\n * Was this span chosen to be sent as part of the sample?\n * @deprecated Use `isRecording()` instead.\n */\n public get sampled(): boolean | undefined {\n return this._sampled;\n }\n\n /**\n * Was this span chosen to be sent as part of the sample?\n * @deprecated You cannot update the sampling decision of a span after span creation.\n */\n public set sampled(sampled: boolean | undefined) {\n this._sampled = sampled;\n }\n\n /**\n * Attributes for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n public get attributes(): SpanAttributes {\n return this._attributes;\n }\n\n /**\n * Attributes for the span.\n * @deprecated Use `setAttributes()` instead.\n */\n public set attributes(attributes: SpanAttributes) {\n this._attributes = attributes;\n }\n\n /**\n * Timestamp in seconds (epoch time) indicating when the span started.\n * @deprecated Use `spanToJSON()` instead.\n */\n public get startTimestamp(): number {\n return this._startTime;\n }\n\n /**\n * Timestamp in seconds (epoch time) indicating when the span started.\n * @deprecated In v8, you will not be able to update the span start time after creation.\n */\n public set startTimestamp(startTime: number) {\n this._startTime = startTime;\n }\n\n /**\n * Timestamp in seconds when the span ended.\n * @deprecated Use `spanToJSON()` instead.\n */\n public get endTimestamp(): number | undefined {\n return this._endTime;\n }\n\n /**\n * Timestamp in seconds when the span ended.\n * @deprecated Set the end time via `span.end()` instead.\n */\n public set endTimestamp(endTime: number | undefined) {\n this._endTime = endTime;\n }\n\n /**\n * The status of the span.\n *\n * @deprecated Use `spanToJSON().status` instead to get the status.\n */\n public get status(): SpanStatusType | string | undefined {\n return this._status;\n }\n\n /**\n * The status of the span.\n *\n * @deprecated Use `.setStatus()` instead to set or update the status.\n */\n public set status(status: SpanStatusType | string | undefined) {\n this._status = status;\n }\n\n /**\n * Operation of the span\n *\n * @deprecated Use `spanToJSON().op` to read the op instead.\n */\n public get op(): string | undefined {\n return this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] as string | undefined;\n }\n\n /**\n * Operation of the span\n *\n * @deprecated Use `startSpan()` functions to set or `span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'op')\n * to update the span instead.\n */\n public set op(op: string | undefined) {\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, op);\n }\n\n /**\n * The origin of the span, giving context about what created the span.\n *\n * @deprecated Use `spanToJSON().origin` to read the origin instead.\n */\n public get origin(): SpanOrigin | undefined {\n return this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined;\n }\n\n /**\n * The origin of the span, giving context about what created the span.\n *\n * @deprecated Use `startSpan()` functions to set the origin instead.\n */\n public set origin(origin: SpanOrigin | undefined) {\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, origin);\n }\n\n /* eslint-enable @typescript-eslint/member-ordering */\n\n /** @inheritdoc */\n public spanContext(): SpanContextData {\n const { _spanId: spanId, _traceId: traceId, _sampled: sampled } = this;\n return {\n spanId,\n traceId,\n traceFlags: sampled ? TRACE_FLAG_SAMPLED : TRACE_FLAG_NONE,\n };\n }\n\n /**\n * Creates a new `Span` while setting the current `Span.id` as `parentSpanId`.\n * Also the `sampled` decision will be inherited.\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\n public startChild(\n spanContext?: Pick>,\n ): SpanInterface {\n const childSpan = new Span({\n ...spanContext,\n parentSpanId: this._spanId,\n sampled: this._sampled,\n traceId: this._traceId,\n });\n\n // eslint-disable-next-line deprecation/deprecation\n childSpan.spanRecorder = this.spanRecorder;\n // eslint-disable-next-line deprecation/deprecation\n if (childSpan.spanRecorder) {\n // eslint-disable-next-line deprecation/deprecation\n childSpan.spanRecorder.add(childSpan);\n }\n\n const rootSpan = getRootSpan(this);\n // TODO: still set span.transaction here until we have a more permanent solution\n // Probably similarly to the weakmap we hold in node-experimental\n // eslint-disable-next-line deprecation/deprecation\n childSpan.transaction = rootSpan as Transaction;\n\n if (DEBUG_BUILD && rootSpan) {\n const opStr = (spanContext && spanContext.op) || '< unknown op >';\n const nameStr = spanToJSON(childSpan).description || '< unknown name >';\n const idStr = rootSpan.spanContext().spanId;\n\n const logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n logger.log(logMessage);\n this._logMessage = logMessage;\n }\n\n return childSpan;\n }\n\n /**\n * Sets the tag attribute on the current span.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key Tag key\n * @param value Tag value\n * @deprecated Use `setAttribute()` instead.\n */\n public setTag(key: string, value: Primitive): this {\n // eslint-disable-next-line deprecation/deprecation\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * Sets the data attribute on the current span\n * @param key Data key\n * @param value Data value\n * @deprecated Use `setAttribute()` instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setData(key: string, value: any): this {\n // eslint-disable-next-line deprecation/deprecation\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /** @inheritdoc */\n public setAttribute(key: string, value: SpanAttributeValue | undefined): void {\n if (value === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._attributes[key];\n } else {\n this._attributes[key] = value;\n }\n }\n\n /** @inheritdoc */\n public setAttributes(attributes: SpanAttributes): void {\n Object.keys(attributes).forEach(key => this.setAttribute(key, attributes[key]));\n }\n\n /**\n * @inheritDoc\n */\n public setStatus(value: SpanStatusType): this {\n this._status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n * @deprecated Use top-level `setHttpStatus()` instead.\n */\n public setHttpStatus(httpStatus: number): this {\n setHttpStatus(this, httpStatus);\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @deprecated Use `.updateName()` instead.\n */\n public setName(name: string): void {\n this.updateName(name);\n }\n\n /**\n * @inheritDoc\n */\n public updateName(name: string): this {\n this._name = name;\n return this;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON(span).status === 'ok'` instead.\n */\n public isSuccess(): boolean {\n return this._status === 'ok';\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `.end()` instead.\n */\n public finish(endTimestamp?: number): void {\n return this.end(endTimestamp);\n }\n\n /** @inheritdoc */\n public end(endTimestamp?: SpanTimeInput): void {\n // If already ended, skip\n if (this._endTime) {\n return;\n }\n const rootSpan = getRootSpan(this);\n if (\n DEBUG_BUILD &&\n // Don't call this for transactions\n rootSpan &&\n rootSpan.spanContext().spanId !== this._spanId\n ) {\n const logMessage = this._logMessage;\n if (logMessage) {\n logger.log((logMessage as string).replace('Starting', 'Finishing'));\n }\n }\n\n this._endTime = spanTimeInputToSeconds(endTimestamp);\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToTraceHeader()` instead.\n */\n public toTraceparent(): string {\n return spanToTraceHeader(this);\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON()` or access the fields directly instead.\n */\n public toContext(): SpanContext {\n return dropUndefinedKeys({\n data: this._getData(),\n description: this._name,\n endTimestamp: this._endTime,\n // eslint-disable-next-line deprecation/deprecation\n op: this.op,\n parentSpanId: this._parentSpanId,\n sampled: this._sampled,\n spanId: this._spanId,\n startTimestamp: this._startTime,\n status: this._status,\n // eslint-disable-next-line deprecation/deprecation\n tags: this.tags,\n traceId: this._traceId,\n });\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Update the fields directly instead.\n */\n public updateWithContext(spanContext: SpanContext): this {\n // eslint-disable-next-line deprecation/deprecation\n this.data = spanContext.data || {};\n // eslint-disable-next-line deprecation/deprecation\n this._name = spanContext.name || spanContext.description;\n this._endTime = spanContext.endTimestamp;\n // eslint-disable-next-line deprecation/deprecation\n this.op = spanContext.op;\n this._parentSpanId = spanContext.parentSpanId;\n this._sampled = spanContext.sampled;\n this._spanId = spanContext.spanId || this._spanId;\n this._startTime = spanContext.startTimestamp || this._startTime;\n this._status = spanContext.status;\n // eslint-disable-next-line deprecation/deprecation\n this.tags = spanContext.tags || {};\n this._traceId = spanContext.traceId || this._traceId;\n\n return this;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToTraceContext()` util function instead.\n */\n public getTraceContext(): TraceContext {\n return spanToTraceContext(this);\n }\n\n /**\n * Get JSON representation of this span.\n *\n * @hidden\n * @internal This method is purely for internal purposes and should not be used outside\n * of SDK code. If you need to get a JSON representation of a span,\n * use `spanToJSON(span)` instead.\n */\n public getSpanJSON(): SpanJSON {\n return dropUndefinedKeys({\n data: this._getData(),\n description: this._name,\n op: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] as string | undefined,\n parent_span_id: this._parentSpanId,\n span_id: this._spanId,\n start_timestamp: this._startTime,\n status: this._status,\n // eslint-disable-next-line deprecation/deprecation\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this._endTime,\n trace_id: this._traceId,\n origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined,\n _metrics_summary: getMetricSummaryJsonForSpan(this),\n profile_id: this._attributes[SEMANTIC_ATTRIBUTE_PROFILE_ID] as string | undefined,\n exclusive_time: this._exclusiveTime,\n measurements: Object.keys(this._measurements).length > 0 ? this._measurements : undefined,\n });\n }\n\n /** @inheritdoc */\n public isRecording(): boolean {\n return !this._endTime && !!this._sampled;\n }\n\n /**\n * Convert the object to JSON.\n * @deprecated Use `spanToJSON(span)` instead.\n */\n public toJSON(): SpanJSON {\n return this.getSpanJSON();\n }\n\n /**\n * Get the merged data for this span.\n * For now, this combines `data` and `attributes` together,\n * until eventually we can ingest `attributes` directly.\n */\n private _getData():\n | {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n }\n | undefined {\n // eslint-disable-next-line deprecation/deprecation\n const { data, _attributes: attributes } = this;\n\n const hasData = Object.keys(data).length > 0;\n const hasAttributes = Object.keys(attributes).length > 0;\n\n if (!hasData && !hasAttributes) {\n return undefined;\n }\n\n if (hasData && hasAttributes) {\n return {\n ...data,\n ...attributes,\n };\n }\n\n return hasData ? data : attributes;\n }\n}\n","import type { Span } from '@sentry/types';\n\n/** The status of an Span.\n *\n * @deprecated Use string literals - if you require type casting, cast to SpanStatusType type\n */\nexport enum SpanStatus {\n /** The operation completed successfully. */\n Ok = 'ok',\n /** Deadline expired before operation could complete. */\n DeadlineExceeded = 'deadline_exceeded',\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n Unauthenticated = 'unauthenticated',\n /** 403 Forbidden */\n PermissionDenied = 'permission_denied',\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n NotFound = 'not_found',\n /** 429 Too Many Requests */\n ResourceExhausted = 'resource_exhausted',\n /** Client specified an invalid argument. 4xx. */\n InvalidArgument = 'invalid_argument',\n /** 501 Not Implemented */\n Unimplemented = 'unimplemented',\n /** 503 Service Unavailable */\n Unavailable = 'unavailable',\n /** Other/generic 5xx. */\n InternalError = 'internal_error',\n /** Unknown. Any non-standard HTTP status code. */\n UnknownError = 'unknown_error',\n /** The operation was cancelled (typically by the user). */\n Cancelled = 'cancelled',\n /** Already exists (409) */\n AlreadyExists = 'already_exists',\n /** Operation was rejected because the system is not in a state required for the operation's */\n FailedPrecondition = 'failed_precondition',\n /** The operation was aborted, typically due to a concurrency issue. */\n Aborted = 'aborted',\n /** Operation was attempted past the valid range. */\n OutOfRange = 'out_of_range',\n /** Unrecoverable data loss or corruption */\n DataLoss = 'data_loss',\n}\n\nexport type SpanStatusType =\n /** The operation completed successfully. */\n | 'ok'\n /** Deadline expired before operation could complete. */\n | 'deadline_exceeded'\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n | 'unauthenticated'\n /** 403 Forbidden */\n | 'permission_denied'\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n | 'not_found'\n /** 429 Too Many Requests */\n | 'resource_exhausted'\n /** Client specified an invalid argument. 4xx. */\n | 'invalid_argument'\n /** 501 Not Implemented */\n | 'unimplemented'\n /** 503 Service Unavailable */\n | 'unavailable'\n /** Other/generic 5xx. */\n | 'internal_error'\n /** Unknown. Any non-standard HTTP status code. */\n | 'unknown_error'\n /** The operation was cancelled (typically by the user). */\n | 'cancelled'\n /** Already exists (409) */\n | 'already_exists'\n /** Operation was rejected because the system is not in a state required for the operation's */\n | 'failed_precondition'\n /** The operation was aborted, typically due to a concurrency issue. */\n | 'aborted'\n /** Operation was attempted past the valid range. */\n | 'out_of_range'\n /** Unrecoverable data loss or corruption */\n | 'data_loss';\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport function getSpanStatusFromHttpCode(httpStatus: number): SpanStatusType {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @deprecated Use {@link spanStatusFromHttpCode} instead.\n * This export will be removed in v8 as the signature contains a typo.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport const spanStatusfromHttpCode = getSpanStatusFromHttpCode;\n\n/**\n * Sets the Http status attributes on the current span based on the http code.\n * Additionally, the span's status is updated, depending on the http code.\n */\nexport function setHttpStatus(span: Span, httpStatus: number): void {\n // TODO (v8): Remove these calls\n // Relay does not require us to send the status code as a tag\n // For now, just because users might expect it to land as a tag we keep sending it.\n // Same with data.\n // In v8, we replace both, simply with\n // span.setAttribute('http.response.status_code', httpStatus);\n\n // eslint-disable-next-line deprecation/deprecation\n span.setTag('http.status_code', String(httpStatus));\n // eslint-disable-next-line deprecation/deprecation\n span.setData('http.response.status_code', httpStatus);\n\n const spanStatus = getSpanStatusFromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n span.setStatus(spanStatus);\n }\n}\n","import { isThenable } from '@sentry/utils';\n\n/**\n * Wrap a callback function with error handling.\n * If an error is thrown, it will be passed to the `onError` callback and re-thrown.\n *\n * If the return value of the function is a promise, it will be handled with `maybeHandlePromiseRejection`.\n *\n * If an `onFinally` callback is provided, this will be called when the callback has finished\n * - so if it returns a promise, once the promise resolved/rejected,\n * else once the callback has finished executing.\n * The `onFinally` callback will _always_ be called, no matter if an error was thrown or not.\n */\nexport function handleCallbackErrors<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Fn extends () => any,\n>(\n fn: Fn,\n onError: (error: unknown) => void,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onFinally: () => void = () => {},\n): ReturnType {\n let maybePromiseResult: ReturnType;\n try {\n maybePromiseResult = fn();\n } catch (e) {\n onError(e);\n onFinally();\n throw e;\n }\n\n return maybeHandlePromiseRejection(maybePromiseResult, onError, onFinally);\n}\n\n/**\n * Maybe handle a promise rejection.\n * This expects to be given a value that _may_ be a promise, or any other value.\n * If it is a promise, and it rejects, it will call the `onError` callback.\n * Other than this, it will generally return the given value as-is.\n */\nfunction maybeHandlePromiseRejection(\n value: MaybePromise,\n onError: (error: unknown) => void,\n onFinally: () => void,\n): MaybePromise {\n if (isThenable(value)) {\n // @ts-expect-error - the isThenable check returns the \"wrong\" type here\n return value.then(\n res => {\n onFinally();\n return res;\n },\n e => {\n onError(e);\n onFinally();\n throw e;\n },\n );\n }\n\n onFinally();\n return value;\n}\n","import type { Scope, Span, SpanTimeInput, StartSpanOptions, TransactionContext } from '@sentry/types';\n\nimport { addNonEnumerableProperty, dropUndefinedKeys, logger, tracingContextFromHeaders } from '@sentry/utils';\nimport { getDynamicSamplingContextFromSpan } from '.';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getCurrentScope, withScope } from '../exports';\nimport type { Hub } from '../hub';\nimport { runWithAsyncContext } from '../hub';\nimport { getIsolationScope } from '../hub';\nimport { getCurrentHub } from '../hub';\nimport type { Scope as ScopeClass } from '../scope';\nimport { handleCallbackErrors } from '../utils/handleCallbackErrors';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled';\nimport { spanIsSampled, spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n *\n * This function is meant to be used internally and may break at any time. Use at your own risk.\n *\n * @internal\n * @private\n *\n * @deprecated Use `startSpan` instead.\n */\nexport function trace(\n context: TransactionContext,\n callback: (span?: Span) => T,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onError: (error: unknown, span?: Span) => void = () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n afterFinish: () => void = () => {},\n): T {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n const scope = getCurrentScope();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const spanContext = normalizeContext(context);\n const activeSpan = createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: false,\n scope,\n });\n\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(activeSpan);\n\n return handleCallbackErrors(\n () => callback(activeSpan),\n error => {\n activeSpan && activeSpan.setStatus('internal_error');\n onError(error, activeSpan);\n },\n () => {\n activeSpan && activeSpan.end();\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(parentSpan);\n afterFinish();\n },\n );\n}\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nexport function startSpan(context: StartSpanOptions, callback: (span: Span | undefined) => T): T {\n const spanContext = normalizeContext(context);\n\n return runWithAsyncContext(() => {\n return withScope(context.scope, scope => {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? undefined\n : createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope,\n });\n\n return handleCallbackErrors(\n () => callback(activeSpan),\n () => {\n // Only update the span status if it hasn't been changed yet\n if (activeSpan) {\n const { status } = spanToJSON(activeSpan);\n if (!status || status === 'ok') {\n activeSpan.setStatus('internal_error');\n }\n }\n },\n () => activeSpan && activeSpan.end(),\n );\n });\n });\n}\n\n/**\n * @deprecated Use {@link startSpan} instead.\n */\nexport const startActiveSpan = startSpan;\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a transaction/span, but does not finish the span\n * after the function is done automatically. You'll have to call `span.end()` manually.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nexport function startSpanManual(\n context: StartSpanOptions,\n callback: (span: Span | undefined, finish: () => void) => T,\n): T {\n const spanContext = normalizeContext(context);\n\n return runWithAsyncContext(() => {\n return withScope(context.scope, scope => {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? undefined\n : createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope,\n });\n\n function finishAndSetSpan(): void {\n activeSpan && activeSpan.end();\n }\n\n return handleCallbackErrors(\n () => callback(activeSpan, finishAndSetSpan),\n () => {\n // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n if (activeSpan && activeSpan.isRecording()) {\n const { status } = spanToJSON(activeSpan);\n if (!status || status === 'ok') {\n activeSpan.setStatus('internal_error');\n }\n }\n },\n );\n });\n });\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate` or `tracesSampler`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nexport function startInactiveSpan(context: StartSpanOptions): Span | undefined {\n if (!hasTracingEnabled()) {\n return undefined;\n }\n\n const spanContext = normalizeContext(context);\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n const parentSpan = context.scope\n ? // eslint-disable-next-line deprecation/deprecation\n context.scope.getSpan()\n : getActiveSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n\n if (shouldSkipSpan) {\n return undefined;\n }\n\n const scope = context.scope || getCurrentScope();\n\n // Even though we don't actually want to make this span active on the current scope,\n // we need to make it active on a temporary scope that we use for event processing\n // as otherwise, it won't pick the correct span for the event when processing it\n const temporaryScope = (scope as ScopeClass).clone();\n\n return createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope: temporaryScope,\n });\n}\n\n/**\n * Returns the currently active span.\n */\nexport function getActiveSpan(): Span | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentScope().getSpan();\n}\n\ninterface ContinueTrace {\n /**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers,\n * or in the browser from `` and `` HTML tags.\n *\n * @deprecated Use the version of this function taking a callback as second parameter instead:\n *\n * ```\n * Sentry.continueTrace(sentryTrace: '...', baggage: '...' }, () => {\n * // ...\n * })\n * ```\n *\n */\n ({\n sentryTrace,\n baggage,\n }: {\n // eslint-disable-next-line deprecation/deprecation\n sentryTrace: Parameters[0];\n // eslint-disable-next-line deprecation/deprecation\n baggage: Parameters[1];\n }): Partial;\n\n /**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers, or in the browser from ``\n * and `` HTML tags.\n *\n * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically\n * be attached to the incoming trace.\n *\n * Deprecation notice: In the next major version of the SDK the provided callback will not receive a transaction\n * context argument.\n */\n (\n {\n sentryTrace,\n baggage,\n }: {\n // eslint-disable-next-line deprecation/deprecation\n sentryTrace: Parameters[0];\n // eslint-disable-next-line deprecation/deprecation\n baggage: Parameters[1];\n },\n // TODO(v8): Remove parameter from this callback.\n callback: (transactionContext: Partial) => V,\n ): V;\n}\n\nexport const continueTrace: ContinueTrace = (\n {\n sentryTrace,\n baggage,\n }: {\n // eslint-disable-next-line deprecation/deprecation\n sentryTrace: Parameters[0];\n // eslint-disable-next-line deprecation/deprecation\n baggage: Parameters[1];\n },\n callback?: (transactionContext: Partial) => V,\n): V | Partial => {\n // TODO(v8): Change this function so it doesn't do anything besides setting the propagation context on the current scope:\n /*\n return withScope((scope) => {\n const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n scope.setPropagationContext(propagationContext);\n return callback();\n })\n */\n\n const currentScope = getCurrentScope();\n\n // eslint-disable-next-line deprecation/deprecation\n const { traceparentData, dynamicSamplingContext, propagationContext } = tracingContextFromHeaders(\n sentryTrace,\n baggage,\n );\n\n currentScope.setPropagationContext(propagationContext);\n\n if (DEBUG_BUILD && traceparentData) {\n logger.log(`[Tracing] Continuing trace ${traceparentData.traceId}.`);\n }\n\n const transactionContext: Partial = {\n ...traceparentData,\n metadata: dropUndefinedKeys({\n dynamicSamplingContext,\n }),\n };\n\n if (!callback) {\n return transactionContext;\n }\n\n return runWithAsyncContext(() => {\n return callback(transactionContext);\n });\n};\n\nfunction createChildSpanOrTransaction(\n // eslint-disable-next-line deprecation/deprecation\n hub: Hub,\n {\n parentSpan,\n spanContext,\n forceTransaction,\n scope,\n }: {\n parentSpan: Span | undefined;\n spanContext: TransactionContext;\n forceTransaction?: boolean;\n scope: Scope;\n },\n): Span | undefined {\n if (!hasTracingEnabled()) {\n return undefined;\n }\n\n const isolationScope = getIsolationScope();\n\n let span: Span | undefined;\n if (parentSpan && !forceTransaction) {\n // eslint-disable-next-line deprecation/deprecation\n span = parentSpan.startChild(spanContext);\n } else if (parentSpan) {\n // If we forced a transaction but have a parent span, make sure to continue from the parent span, not the scope\n const dsc = getDynamicSamplingContextFromSpan(parentSpan);\n const { traceId, spanId: parentSpanId } = parentSpan.spanContext();\n const sampled = spanIsSampled(parentSpan);\n\n // eslint-disable-next-line deprecation/deprecation\n span = hub.startTransaction({\n traceId,\n parentSpanId,\n parentSampled: sampled,\n ...spanContext,\n metadata: {\n dynamicSamplingContext: dsc,\n // eslint-disable-next-line deprecation/deprecation\n ...spanContext.metadata,\n },\n });\n } else {\n const { traceId, dsc, parentSpanId, sampled } = {\n ...isolationScope.getPropagationContext(),\n ...scope.getPropagationContext(),\n };\n\n // eslint-disable-next-line deprecation/deprecation\n span = hub.startTransaction({\n traceId,\n parentSpanId,\n parentSampled: sampled,\n ...spanContext,\n metadata: {\n dynamicSamplingContext: dsc,\n // eslint-disable-next-line deprecation/deprecation\n ...spanContext.metadata,\n },\n });\n }\n\n // We always set this as active span on the scope\n // In the case of this being an inactive span, we ensure to pass a detached scope in here in the first place\n // But by having this here, we can ensure that the lookup through `getCapturedScopesOnSpan` results in the correct scope & span combo\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(span);\n\n setCapturedScopesOnSpan(span, scope, isolationScope);\n\n return span;\n}\n\n/**\n * This converts StartSpanOptions to TransactionContext.\n * For the most part (for now) we accept the same options,\n * but some of them need to be transformed.\n *\n * Eventually the StartSpanOptions will be more aligned with OpenTelemetry.\n */\nfunction normalizeContext(context: StartSpanOptions): TransactionContext {\n if (context.startTime) {\n const ctx: TransactionContext & { startTime?: SpanTimeInput } = { ...context };\n ctx.startTimestamp = spanTimeInputToSeconds(context.startTime);\n delete ctx.startTime;\n return ctx;\n }\n\n return context;\n}\n\nconst SCOPE_ON_START_SPAN_FIELD = '_sentryScope';\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope';\n\ntype SpanWithScopes = Span & {\n [SCOPE_ON_START_SPAN_FIELD]?: Scope;\n [ISOLATION_SCOPE_ON_START_SPAN_FIELD]?: Scope;\n};\n\nfunction setCapturedScopesOnSpan(span: Span | undefined, scope: Scope, isolationScope: Scope): void {\n if (span) {\n addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, isolationScope);\n addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope);\n }\n}\n\n/**\n * Grabs the scope and isolation scope off a span that were active when the span was started.\n */\nexport function getCapturedScopesOnSpan(span: Span): { scope?: Scope; isolationScope?: Scope } {\n return {\n scope: (span as SpanWithScopes)[SCOPE_ON_START_SPAN_FIELD],\n isolationScope: (span as SpanWithScopes)[ISOLATION_SCOPE_ON_START_SPAN_FIELD],\n };\n}\n","import type {\n Context,\n Contexts,\n DynamicSamplingContext,\n MeasurementUnit,\n SpanTimeInput,\n Transaction as TransactionInterface,\n TransactionContext,\n TransactionEvent,\n TransactionMetadata,\n} from '@sentry/types';\nimport { dropUndefinedKeys, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Hub } from '../hub';\nimport { getCurrentHub } from '../hub';\nimport { getMetricSummaryJsonForSpan } from '../metrics/metric-summary';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes';\nimport { spanTimeInputToSeconds, spanToJSON, spanToTraceContext } from '../utils/spanUtils';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { Span as SpanClass, SpanRecorder } from './span';\nimport { getCapturedScopesOnSpan } from './trace';\n\n/** JSDoc */\nexport class Transaction extends SpanClass implements TransactionInterface {\n /**\n * The reference to the current hub.\n */\n // eslint-disable-next-line deprecation/deprecation\n public _hub: Hub;\n\n protected _name: string;\n\n private _contexts: Contexts;\n\n private _trimEnd?: boolean | undefined;\n\n // DO NOT yet remove this property, it is used in a hack for v7 backwards compatibility.\n private _frozenDynamicSamplingContext: Readonly> | undefined;\n\n private _metadata: Partial;\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n *\n * @deprecated Transactions will be removed in v8. Use spans instead.\n */\n // eslint-disable-next-line deprecation/deprecation\n public constructor(transactionContext: TransactionContext, hub?: Hub) {\n super(transactionContext);\n this._contexts = {};\n\n // eslint-disable-next-line deprecation/deprecation\n this._hub = hub || getCurrentHub();\n\n this._name = transactionContext.name || '';\n\n this._metadata = {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.metadata,\n };\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n // TODO (v8): Replace this with another way to set the root span\n // eslint-disable-next-line deprecation/deprecation\n this.transaction = this;\n\n // If Dynamic Sampling Context is provided during the creation of the transaction, we freeze it as it usually means\n // there is incoming Dynamic Sampling Context. (Either through an incoming request, a baggage meta-tag, or other means)\n const incomingDynamicSamplingContext = this._metadata.dynamicSamplingContext;\n if (incomingDynamicSamplingContext) {\n // We shallow copy this in case anything writes to the original reference of the passed in `dynamicSamplingContext`\n this._frozenDynamicSamplingContext = { ...incomingDynamicSamplingContext };\n }\n }\n\n // This sadly conflicts with the getter/setter ordering :(\n /* eslint-disable @typescript-eslint/member-ordering */\n\n /**\n * Getter for `name` property.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public get name(): string {\n return this._name;\n }\n\n /**\n * Setter for `name` property, which also sets `source` as custom.\n * @deprecated Use `updateName()` and `setMetadata()` instead.\n */\n public set name(newName: string) {\n // eslint-disable-next-line deprecation/deprecation\n this.setName(newName);\n }\n\n /**\n * Get the metadata for this transaction.\n * @deprecated Use `spanGetMetadata(transaction)` instead.\n */\n public get metadata(): TransactionMetadata {\n // We merge attributes in for backwards compatibility\n return {\n // Defaults\n // eslint-disable-next-line deprecation/deprecation\n source: 'custom',\n spanMetadata: {},\n\n // Legacy metadata\n ...this._metadata,\n\n // From attributes\n ...(this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] && {\n source: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] as TransactionMetadata['source'],\n }),\n ...(this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] && {\n sampleRate: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] as TransactionMetadata['sampleRate'],\n }),\n };\n }\n\n /**\n * Update the metadata for this transaction.\n * @deprecated Use `spanGetMetadata(transaction)` instead.\n */\n public set metadata(metadata: TransactionMetadata) {\n this._metadata = metadata;\n }\n\n /* eslint-enable @typescript-eslint/member-ordering */\n\n /**\n * Setter for `name` property, which also sets `source` on the metadata.\n *\n * @deprecated Use `.updateName()` and `.setAttribute()` instead.\n */\n public setName(name: string, source: TransactionMetadata['source'] = 'custom'): void {\n this._name = name;\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source);\n }\n\n /** @inheritdoc */\n public updateName(name: string): this {\n this._name = name;\n return this;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n public initSpanRecorder(maxlen: number = 1000): void {\n // eslint-disable-next-line deprecation/deprecation\n if (!this.spanRecorder) {\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.add(this);\n }\n\n /**\n * Set the context of a transaction event.\n * @deprecated Use either `.setAttribute()`, or set the context on the scope before creating the transaction.\n */\n public setContext(key: string, context: Context | null): void {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use top-level `setMeasurement()` instead.\n */\n public setMeasurement(name: string, value: number, unit: MeasurementUnit = ''): void {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * Store metadata on this transaction.\n * @deprecated Use attributes or store data on the scope instead.\n */\n public setMetadata(newMetadata: Partial): void {\n this._metadata = { ...this._metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n public end(endTimestamp?: SpanTimeInput): string | undefined {\n const timestampInS = spanTimeInputToSeconds(endTimestamp);\n const transaction = this._finishTransaction(timestampInS);\n if (!transaction) {\n return undefined;\n }\n // eslint-disable-next-line deprecation/deprecation\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n public toContext(): TransactionContext {\n // eslint-disable-next-line deprecation/deprecation\n const spanContext = super.toContext();\n\n return dropUndefinedKeys({\n ...spanContext,\n name: this._name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n public updateWithContext(transactionContext: TransactionContext): this {\n // eslint-disable-next-line deprecation/deprecation\n super.updateWithContext(transactionContext);\n\n this._name = transactionContext.name || '';\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n *\n * @deprecated Use top-level `getDynamicSamplingContextFromSpan` instead.\n */\n public getDynamicSamplingContext(): Readonly> {\n return getDynamicSamplingContextFromSpan(this);\n }\n\n /**\n * Override the current hub with a new one.\n * Used if you want another hub to finish the transaction.\n *\n * @internal\n */\n // eslint-disable-next-line deprecation/deprecation\n public setHub(hub: Hub): void {\n this._hub = hub;\n }\n\n /**\n * Get the profile id of the transaction.\n */\n public getProfileId(): string | undefined {\n if (this._contexts !== undefined && this._contexts['profile'] !== undefined) {\n return this._contexts['profile'].profile_id as string;\n }\n return undefined;\n }\n\n /**\n * Finish the transaction & prepare the event to send to Sentry.\n */\n protected _finishTransaction(endTimestamp?: number): TransactionEvent | undefined {\n // This transaction is already finished, so we should not flush it again.\n if (this._endTime !== undefined) {\n return undefined;\n }\n\n if (!this._name) {\n DEBUG_BUILD && logger.warn('Transaction has no name, falling back to ``.');\n this._name = '';\n }\n\n // just sets the end timestamp\n super.end(endTimestamp);\n\n // eslint-disable-next-line deprecation/deprecation\n const client = this._hub.getClient();\n if (client && client.emit) {\n client.emit('finishTransaction', this);\n }\n\n if (this._sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n DEBUG_BUILD && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const finishedSpans = this.spanRecorder\n ? // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.spans.filter(span => span !== this && spanToJSON(span).timestamp)\n : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n const endTimes = finishedSpans.map(span => spanToJSON(span).timestamp).filter(Boolean) as number[];\n this._endTime = endTimes.reduce((prev, current) => {\n return prev > current ? prev : current;\n });\n }\n\n const { scope: capturedSpanScope, isolationScope: capturedSpanIsolationScope } = getCapturedScopesOnSpan(this);\n\n // eslint-disable-next-line deprecation/deprecation\n const { metadata } = this;\n // eslint-disable-next-line deprecation/deprecation\n const { source } = metadata;\n\n const transaction: TransactionEvent = {\n contexts: {\n ...this._contexts,\n // We don't want to override trace context\n trace: spanToTraceContext(this),\n },\n // TODO: Pass spans serialized via `spanToJSON()` here instead in v8.\n spans: finishedSpans,\n start_timestamp: this._startTime,\n // eslint-disable-next-line deprecation/deprecation\n tags: this.tags,\n timestamp: this._endTime,\n transaction: this._name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...metadata,\n capturedSpanScope,\n capturedSpanIsolationScope,\n ...dropUndefinedKeys({\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(this),\n }),\n },\n _metrics_summary: getMetricSummaryJsonForSpan(this),\n ...(source && {\n transaction_info: {\n source,\n },\n }),\n };\n\n const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n DEBUG_BUILD &&\n logger.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n DEBUG_BUILD && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this._name}.`);\n\n return transaction;\n }\n}\n","import type { Transaction } from '@sentry/types';\nimport { extractTraceparentData as _extractTraceparentData } from '@sentry/utils';\n\nimport type { Hub } from '../hub';\nimport { getCurrentHub } from '../hub';\n\n/**\n * Grabs active transaction off scope.\n *\n * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getActiveTransaction(maybeHub?: Hub): T | undefined {\n // eslint-disable-next-line deprecation/deprecation\n const hub = maybeHub || getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const scope = hub.getScope();\n // eslint-disable-next-line deprecation/deprecation\n return scope.getTransaction() as T | undefined;\n}\n\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\n\n/**\n * The `extractTraceparentData` function and `TRACEPARENT_REGEXP` constant used\n * to be declared in this file. It was later moved into `@sentry/utils` as part of a\n * move to remove `@sentry/tracing` dependencies from `@sentry/node` (`extractTraceparentData`\n * is the only tracing function used by `@sentry/node`).\n *\n * These exports are kept here for backwards compatability's sake.\n *\n * See https://github.com/getsentry/sentry-javascript/issues/4642 for more details.\n *\n * @deprecated Import this function from `@sentry/utils` instead\n */\nexport const extractTraceparentData = _extractTraceparentData;\n","import type { Span } from '@sentry/types';\n\n/**\n * Returns the root span of a given span.\n *\n * As long as we use `Transaction`s internally, the returned root span\n * will be a `Transaction` but be aware that this might change in the future.\n *\n * If the given span has no root span or transaction, `undefined` is returned.\n */\nexport function getRootSpan(span: Span): Span | undefined {\n // TODO (v8): Remove this check and just return span\n // eslint-disable-next-line deprecation/deprecation\n return span.transaction;\n}\n","import type { Options } from '@sentry/types';\n\nimport { getClient } from '../exports';\n\n// Treeshakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean | undefined;\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nexport function hasTracingEnabled(\n maybeOptions?: Pick | undefined,\n): boolean {\n if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n return false;\n }\n\n const client = getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && (options.enableTracing || 'tracesSampleRate' in options || 'tracesSampler' in options);\n}\n","import type { Span, SpanJSON, SpanTimeInput, TraceContext } from '@sentry/types';\nimport { dropUndefinedKeys, generateSentryTraceHeader, timestampInSeconds } from '@sentry/utils';\nimport type { Span as SpanClass } from '../tracing/span';\n\n// These are aligned with OpenTelemetry trace flags\nexport const TRACE_FLAG_NONE = 0x0;\nexport const TRACE_FLAG_SAMPLED = 0x1;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n */\nexport function spanToTraceContext(span: Span): TraceContext {\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n const { data, op, parent_span_id, status, tags, origin } = spanToJSON(span);\n\n return dropUndefinedKeys({\n data,\n op,\n parent_span_id,\n span_id,\n status,\n tags,\n trace_id,\n origin,\n });\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nexport function spanToTraceHeader(span: Span): string {\n const { traceId, spanId } = span.spanContext();\n const sampled = spanIsSampled(span);\n return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n * Convert a span time input intp a timestamp in seconds.\n */\nexport function spanTimeInputToSeconds(input: SpanTimeInput | undefined): number {\n if (typeof input === 'number') {\n return ensureTimestampInSeconds(input);\n }\n\n if (Array.isArray(input)) {\n // See {@link HrTime} for the array-based time format\n return input[0] + input[1] / 1e9;\n }\n\n if (input instanceof Date) {\n return ensureTimestampInSeconds(input.getTime());\n }\n\n return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp: number): number {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n * Note that all fields returned here are optional and need to be guarded against.\n *\n * Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n * This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n * And `spanToJSON` needs the Span class from `span.ts` to check here.\n * TODO v8: When we remove the deprecated stuff from `span.ts`, we can remove the circular dependency again.\n */\nexport function spanToJSON(span: Span): Partial {\n if (spanIsSpanClass(span)) {\n return span.getSpanJSON();\n }\n\n // Fallback: We also check for `.toJSON()` here...\n // eslint-disable-next-line deprecation/deprecation\n if (typeof span.toJSON === 'function') {\n // eslint-disable-next-line deprecation/deprecation\n return span.toJSON();\n }\n\n return {};\n}\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSpanClass(span: Span): span is SpanClass {\n return typeof (span as SpanClass).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nexport function spanIsSampled(span: Span): boolean {\n // We align our trace flags with the ones OpenTelemetry use\n // So we also check for sampled the same way they do.\n const { traceFlags } = span.spanContext();\n // eslint-disable-next-line no-bitwise\n return Boolean(traceFlags & TRACE_FLAG_SAMPLED);\n}\n","import type { DynamicSamplingContext } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { isString } from './is';\nimport { logger } from './logger';\n\nexport const BAGGAGE_HEADER_NAME = 'baggage';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nexport const MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nexport function baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader: string | string[] | number | null | undefined | boolean,\n): Partial | undefined {\n if (!isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n return undefined;\n }\n\n // Intermediary object to store baggage key value pairs of incoming baggage headers on.\n // It is later used to read Sentry-DSC-values from.\n let baggageObject: Readonly> = {};\n\n if (Array.isArray(baggageHeader)) {\n // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n baggageObject = baggageHeader.reduce>((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n for (const key of Object.keys(currBaggageObject)) {\n acc[key] = currBaggageObject[key];\n }\n return acc;\n }, {});\n } else {\n // Return undefined if baggage header is an empty string (technically an empty baggage header is not spec conform but\n // this is how we choose to handle it)\n if (!baggageHeader) {\n return undefined;\n }\n\n baggageObject = baggageHeaderToObject(baggageHeader);\n }\n\n // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n const dynamicSamplingContext = Object.entries(baggageObject).reduce>((acc, [key, value]) => {\n if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n\n // Only return a dynamic sampling context object if there are keys in it.\n // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext as Partial;\n } else {\n return undefined;\n }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nexport function dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext?: Partial,\n): string | undefined {\n if (!dynamicSamplingContext) {\n return undefined;\n }\n\n // Prefix all DSC keys with \"sentry-\" and put them into a new object\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce>(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {},\n );\n\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader: string): Record {\n return baggageHeader\n .split(',')\n .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n .reduce>((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object: Record): string | undefined {\n if (Object.keys(object).length === 0) {\n // An empty baggage header is not spec compliant: We return undefined.\n return undefined;\n }\n\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n DEBUG_BUILD &&\n logger.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, '');\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { logger } from '../logger';\nimport { getFunctionName } from '../stacktrace';\n\nexport type InstrumentHandlerType = 'console' | 'dom' | 'fetch' | 'history' | 'xhr' | 'error' | 'unhandledrejection';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n// We keep the handlers globally\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Add a handler function. */\nexport function addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n (handlers[type] as InstrumentHandlerCallback[]).push(handler);\n}\n\n/**\n * Reset all instrumentation handlers.\n * This can be used by tests to ensure we have a clean slate of instrumentation handlers.\n */\nexport function resetInstrumentationHandlers(): void {\n Object.keys(handlers).forEach(key => {\n handlers[key as InstrumentHandlerType] = undefined;\n });\n}\n\n/** Maybe run an instrumentation function, unless it was already called. */\nexport function maybeInstrument(type: InstrumentHandlerType, instrumentFn: () => void): void {\n if (!instrumented[type]) {\n instrumentFn();\n instrumented[type] = true;\n }\n}\n\n/** Trigger handlers for a given instrumentation type. */\nexport function triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\n const typeHandlers = type && handlers[type];\n if (!typeHandlers) {\n return;\n }\n\n for (const handler of typeHandlers) {\n try {\n handler(data);\n } catch (e) {\n DEBUG_BUILD &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport type { ParameterizedString, PolymorphicEvent, Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat: unknown, className: string): boolean {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isParameterizedString(wat: unknown): wat is ParameterizedString {\n return (\n typeof wat === 'object' &&\n wat !== null &&\n '__sentry_template_string__' in wat &&\n '__sentry_template_values__' in wat\n );\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isNaN(wat: unknown): boolean {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\ninterface VueViewModel {\n // Vue3\n __isVue?: boolean;\n // Vue2\n _isVue?: boolean;\n}\n/**\n * Checks whether given value's type is a Vue ViewModel.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isVueViewModel(wat: unknown): boolean {\n // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n return !!(typeof wat === 'object' && wat !== null && ((wat as VueViewModel).__isVue || (wat as VueViewModel)._isVue));\n}\n","import type { ConsoleLevel } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { GLOBAL_OBJ } from './worldwide';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS: readonly ConsoleLevel[] = [\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'log',\n 'assert',\n 'trace',\n] as const;\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record;\n\n/** This may be mutated by the console instrumentation. */\nexport const originalConsoleMethods: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key in ConsoleLevel]?: (...args: any[]) => void;\n} = {};\n\n/** JSDoc */\ninterface Logger extends LoggerConsoleMethods {\n disable(): void;\n enable(): void;\n isEnabled(): boolean;\n}\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox(callback: () => T): T {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const console = GLOBAL_OBJ.console as Console;\n const wrappedFuncs: Partial = {};\n\n const wrappedLevels = Object.keys(originalConsoleMethods) as ConsoleLevel[];\n\n // Restore all wrapped console methods\n wrappedLevels.forEach(level => {\n const originalConsoleMethod = originalConsoleMethods[level] as LoggerMethod;\n wrappedFuncs[level] = console[level] as LoggerMethod | undefined;\n console[level] = originalConsoleMethod;\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n wrappedLevels.forEach(level => {\n console[level] = wrappedFuncs[level] as LoggerMethod;\n });\n }\n}\n\nfunction makeLogger(): Logger {\n let enabled = false;\n const logger: Partial = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n isEnabled: () => enabled,\n };\n\n if (DEBUG_BUILD) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args: any[]) => {\n if (enabled) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger as Logger;\n}\n\nexport const logger = makeLogger();\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n getRandomValues(array: Uint8Array): Uint8Array;\n randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n msCrypto?: CryptoInternal;\n crypto?: CryptoInternal;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n const crypto = gbl.crypto || gbl.msCrypto;\n\n let getRandomByte = (): number => Math.random() * 16;\n try {\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n if (crypto && crypto.getRandomValues) {\n getRandomByte = () => {\n // crypto.getRandomValues might return undefined instead of the typed array\n // in old Chromium versions (e.g. 23.0.1235.0 (151422))\n // However, `typedArray` is still filled in-place.\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues#typedarray\n const typedArray = new Uint8Array(1);\n crypto.getRandomValues(typedArray);\n return typedArray[0];\n };\n }\n } catch (_) {\n // some runtimes can crash invoking crypto\n // https://github.com/getsentry/sentry-javascript/issues/8935\n }\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception as any).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nexport function arrayify(maybeArray: T | T[]): T[] {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule(moduleName: string): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\nexport type SdkSource = 'npm' | 'cdn' | 'loader';\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nexport function getSDKSource(): SdkSource {\n // @ts-expect-error __SENTRY_SDK_SOURCE__ is injected by rollup during build process\n return __SENTRY_SDK_SOURCE__;\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { DEBUG_BUILD } from './debug-build';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { logger } from './logger';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacementFactory(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n markFunctionWrapped(wrapped, original);\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nexport function addNonEnumerableProperty(obj: object, name: string, value: unknown): void {\n try {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n } catch (o_O) {\n DEBUG_BUILD && logger.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\n }\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n try {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n } catch (o_O) {} // eslint-disable-line no-empty\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nexport function convertToPlainObject(\n value: V,\n):\n | {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n }\n | {\n [ownProps: string]: unknown;\n message: string;\n name: string;\n stack?: string;\n }\n | V {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj: {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n } = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target: unknown): string {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: unknown): { [key: string]: unknown } {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps: { [key: string]: unknown } = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj as Record)[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception: Record, maxLength: number = 40): string {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nexport function dropUndefinedKeys(inputValue: T): T {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue: T, memoizationMap: Map): T {\n if (isPojo(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: { [key: string]: any } = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue as T;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: unknown[] = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item: unknown) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue as unknown as T;\n }\n\n return inputValue;\n}\n\nfunction isPojo(input: unknown): input is Record {\n if (!isPlainObject(input)) {\n return false;\n }\n\n try {\n const name = (Object.getPrototypeOf(input) as { constructor: { name: string } }).constructor.name;\n return !name || name === 'Object';\n } catch {\n return true;\n }\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat as any).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n","import type { StackFrame, StackLineParser, StackParser } from '@sentry/types';\n\nimport type { GetModuleFn } from './node-stack-trace';\nimport { filenameIsInApp, node } from './node-stack-trace';\n\nexport { filenameIsInApp };\n\nconst STACKTRACE_FRAME_LIMIT = 50;\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirst: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirst; i < lines.length; i++) {\n const line = lines[i];\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n continue;\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue;\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT) {\n break;\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: ReadonlyArray): StackFrame[] {\n if (!stack.length) {\n return [];\n }\n\n const localStack = Array.from(stack);\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (/sentryWrapped/.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n\n // Reversing in the middle of the procedure allows us to just pop the values off the stack\n localStack.reverse();\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n\n // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n // is produced within the hub itself, making it:\n //\n // Sentry.captureException()\n // getCurrentHub().captureException()\n //\n // instead of just the top `Sentry` call itself.\n // This forces us to possibly strip an additional frame in the exact same was as above.\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n }\n\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n ...frame,\n filename: frame.filename || localStack[localStack.length - 1].filename,\n function: frame.function || '?',\n }));\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n return [90, node(getModule)];\n}\n","import { GLOBAL_OBJ } from './worldwide';\n\nconst ONE_SECOND_IN_MS = 1000;\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n *\n * TODO(v8): Return type should be rounded.\n */\nexport function dateTimestampInSeconds(): number {\n return Date.now() / ONE_SECOND_IN_MS;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction createUnixTimestampInSecondsFunc(): () => number {\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & { performance?: Performance };\n if (!performance || !performance.now) {\n return dateTimestampInSeconds;\n }\n\n // Some browser and environments don't have a timeOrigin, so we fallback to\n // using Date.now() to compute the starting time.\n const approxStartingTimeOrigin = Date.now() - performance.now();\n const timeOrigin = performance.timeOrigin == undefined ? approxStartingTimeOrigin : performance.timeOrigin;\n\n // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current\n // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed.\n //\n // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the\n // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and\n // correct for this.\n // See: https://github.com/getsentry/sentry-javascript/issues/2590\n // See: https://github.com/mdn/content/issues/4713\n // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6\n return () => {\n return (timeOrigin + performance.now()) / ONE_SECOND_IN_MS;\n };\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds = createUnixTimestampInSecondsFunc();\n\n/**\n * Re-exported with an old name for backwards-compatibility.\n * TODO (v8): Remove this\n *\n * @deprecated Use `timestampInSeconds` instead.\n */\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport let _browserPerformanceTimeOriginMode: string;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n","import type { PropagationContext, TraceparentData } from '@sentry/types';\n\nimport { baggageHeaderToDynamicSamplingContext } from './baggage';\nimport { uuid4 } from './misc';\n\n// eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor -- RegExp is used for readability here\nexport const TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent?: string): TraceparentData | undefined {\n if (!traceparent) {\n return undefined;\n }\n\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n if (!matches) {\n return undefined;\n }\n\n let parentSampled: boolean | undefined;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n}\n\n/**\n * Create tracing context from incoming headers.\n *\n * @deprecated Use `propagationContextFromHeaders` instead.\n */\n// TODO(v8): Remove this function\nexport function tracingContextFromHeaders(\n sentryTrace: Parameters[0],\n baggage: Parameters[0],\n): {\n traceparentData: ReturnType;\n dynamicSamplingContext: ReturnType;\n propagationContext: PropagationContext;\n} {\n const traceparentData = extractTraceparentData(sentryTrace);\n const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n const { traceId, parentSpanId, parentSampled } = traceparentData || {};\n\n if (!traceparentData) {\n return {\n traceparentData,\n dynamicSamplingContext: undefined,\n propagationContext: {\n traceId: traceId || uuid4(),\n spanId: uuid4().substring(16),\n },\n };\n } else {\n return {\n traceparentData,\n dynamicSamplingContext: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n propagationContext: {\n traceId: traceId || uuid4(),\n parentSpanId: parentSpanId || uuid4().substring(16),\n spanId: uuid4().substring(16),\n sampled: parentSampled,\n dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n },\n };\n }\n}\n\n/**\n * Create a propagation context from incoming headers.\n */\nexport function propagationContextFromHeaders(\n sentryTrace: string | undefined,\n baggage: string | number | boolean | string[] | null | undefined,\n): PropagationContext {\n const traceparentData = extractTraceparentData(sentryTrace);\n const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n const { traceId, parentSpanId, parentSampled } = traceparentData || {};\n\n if (!traceparentData) {\n return {\n traceId: traceId || uuid4(),\n spanId: uuid4().substring(16),\n };\n } else {\n return {\n traceId: traceId || uuid4(),\n parentSpanId: parentSpanId || uuid4().substring(16),\n spanId: uuid4().substring(16),\n sampled: parentSampled,\n dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n };\n }\n}\n\n/**\n * Create sentry-trace header from span context values.\n */\nexport function generateSentryTraceHeader(\n traceId: string = uuid4(),\n spanId: string = uuid4().substring(16),\n sampled?: boolean,\n): string {\n let sampledString = '';\n if (sampled !== undefined) {\n sampledString = sampled ? '-1' : '-0';\n }\n return `${traceId}-${spanId}${sampledString}`;\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n *\n * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Integration } from '@sentry/types';\n\nimport type { SdkSource } from './env';\n\n/** Internal global with common properties and Sentry extensions */\nexport interface InternalGlobal {\n navigator?: { userAgent?: string };\n console: Console;\n Sentry?: {\n Integrations?: Integration[];\n };\n onerror?: {\n (event: object | string, source?: string, lineno?: number, colno?: number, error?: Error): any;\n __SENTRY_INSTRUMENTED__?: true;\n __SENTRY_LOADER__?: true;\n };\n onunhandledrejection?: {\n (event: unknown): boolean;\n __SENTRY_INSTRUMENTED__?: true;\n __SENTRY_LOADER__?: true;\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n SENTRY_SDK_SOURCE?: SdkSource;\n /**\n * Debug IDs are indirectly injected by Sentry CLI or bundler plugins to directly reference a particular source map\n * for resolving of a source file. The injected code will place an entry into the record for each loaded bundle/JS\n * file.\n */\n _sentryDebugIds?: Record;\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n extensions?: {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n /**\n * Raw module metadata that is injected by bundler plugins.\n *\n * Keys are `error.stack` strings, values are the metadata.\n */\n _sentryModuleMetadata?: Record;\n}\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj: { Math?: Math }): any | undefined {\n return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ: InternalGlobal =\n (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n // eslint-disable-next-line no-restricted-globals\n (typeof window == 'object' && isGlobalObj(window)) ||\n (typeof self == 'object' && isGlobalObj(self)) ||\n (typeof global == 'object' && isGlobalObj(global)) ||\n (function (this: any) {\n return this;\n })() ||\n {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nexport function getGlobalObject(): T & InternalGlobal {\n return GLOBAL_OBJ as T & InternalGlobal;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton(name: keyof InternalGlobal['__SENTRY__'], creator: () => T, obj?: unknown): T {\n const gbl = (obj || GLOBAL_OBJ) as InternalGlobal;\n const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n","import { isString } from './is';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\ntype SimpleNode = {\n parentNode: SimpleNode;\n} | null;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(\n elem: unknown,\n options: string[] | { keyAttrs?: string[]; maxStringLength?: number } = {},\n): string {\n if (!elem) {\n return '';\n }\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds maxStringLength\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown, keyAttrs?: string[]): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\n };\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n // @ts-expect-error WINDOW has HTMLElement\n if (WINDOW.HTMLElement) {\n // If using the component name annotation plugin, this value may be available on the DOM node\n if (elem instanceof HTMLElement && elem.dataset && elem.dataset['sentryComponent']) {\n return elem.dataset['sentryComponent'];\n }\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n try {\n return WINDOW.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getDomElement(selector: string): E | null {\n if (WINDOW.document && WINDOW.document.querySelector) {\n return WINDOW.document.querySelector(selector) as unknown as E;\n }\n return null;\n}\n\n/**\n * Given a DOM element, traverses up the tree until it finds the first ancestor node\n * that has the `data-sentry-component` attribute. This attribute is added at build-time\n * by projects that have the component name annotation plugin installed.\n *\n * @returns a string representation of the component for the provided DOM element, or `null` if not found\n */\nexport function getComponentName(elem: unknown): string | null {\n // @ts-expect-error WINDOW has HTMLElement\n if (!WINDOW.HTMLElement) {\n return null;\n }\n\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) {\n if (!currentElem) {\n return null;\n }\n\n if (currentElem instanceof HTMLElement && currentElem.dataset['sentryComponent']) {\n return currentElem.dataset['sentryComponent'];\n }\n\n currentElem = currentElem.parentNode;\n }\n\n return null;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport type { ParameterizedString, PolymorphicEvent, Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat: unknown, className: string): boolean {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isParameterizedString(wat: unknown): wat is ParameterizedString {\n return (\n typeof wat === 'object' &&\n wat !== null &&\n '__sentry_template_string__' in wat &&\n '__sentry_template_values__' in wat\n );\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isNaN(wat: unknown): boolean {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\ninterface VueViewModel {\n // Vue3\n __isVue?: boolean;\n // Vue2\n _isVue?: boolean;\n}\n/**\n * Checks whether given value's type is a Vue ViewModel.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isVueViewModel(wat: unknown): boolean {\n // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n return !!(typeof wat === 'object' && wat !== null && ((wat as VueViewModel).__isVue || (wat as VueViewModel)._isVue));\n}\n","import type { ConsoleLevel } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { GLOBAL_OBJ } from './worldwide';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS: readonly ConsoleLevel[] = [\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'log',\n 'assert',\n 'trace',\n] as const;\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record;\n\n/** This may be mutated by the console instrumentation. */\nexport const originalConsoleMethods: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key in ConsoleLevel]?: (...args: any[]) => void;\n} = {};\n\n/** JSDoc */\ninterface Logger extends LoggerConsoleMethods {\n disable(): void;\n enable(): void;\n isEnabled(): boolean;\n}\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox(callback: () => T): T {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const console = GLOBAL_OBJ.console as Console;\n const wrappedFuncs: Partial = {};\n\n const wrappedLevels = Object.keys(originalConsoleMethods) as ConsoleLevel[];\n\n // Restore all wrapped console methods\n wrappedLevels.forEach(level => {\n const originalConsoleMethod = originalConsoleMethods[level] as LoggerMethod;\n wrappedFuncs[level] = console[level] as LoggerMethod | undefined;\n console[level] = originalConsoleMethod;\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n wrappedLevels.forEach(level => {\n console[level] = wrappedFuncs[level] as LoggerMethod;\n });\n }\n}\n\nfunction makeLogger(): Logger {\n let enabled = false;\n const logger: Partial = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n isEnabled: () => enabled,\n };\n\n if (DEBUG_BUILD) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args: any[]) => {\n if (enabled) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger as Logger;\n}\n\nexport const logger = makeLogger();\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n getRandomValues(array: Uint8Array): Uint8Array;\n randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n msCrypto?: CryptoInternal;\n crypto?: CryptoInternal;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n const crypto = gbl.crypto || gbl.msCrypto;\n\n let getRandomByte = (): number => Math.random() * 16;\n try {\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n if (crypto && crypto.getRandomValues) {\n getRandomByte = () => {\n // crypto.getRandomValues might return undefined instead of the typed array\n // in old Chromium versions (e.g. 23.0.1235.0 (151422))\n // However, `typedArray` is still filled in-place.\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues#typedarray\n const typedArray = new Uint8Array(1);\n crypto.getRandomValues(typedArray);\n return typedArray[0];\n };\n }\n } catch (_) {\n // some runtimes can crash invoking crypto\n // https://github.com/getsentry/sentry-javascript/issues/8935\n }\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception as any).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nexport function arrayify(maybeArray: T | T[]): T[] {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n","import type { Primitive } from '@sentry/types';\n\nimport { isNaN, isSyntheticEvent, isVueViewModel } from './is';\nimport type { MemoFunc } from './memo';\nimport { memoBuilder } from './memo';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName } from './stacktrace';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray = { [key: string]: T };\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function normalize(input: unknown, depth: number = 100, maxProperties: number = +Infinity): any {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nexport function normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized as T;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key: string,\n value: unknown,\n depth: number = +Infinity,\n maxProperties: number = +Infinity,\n memo: MemoFunc = memoBuilder(),\n): Primitive | ObjOrArray {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (\n value == null || // this matches null and undefined -> eqeq not eqeqeq\n (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))\n ) {\n return value as Primitive;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value as ObjOrArray)['__sentry_skip_normalization__']) {\n return value as ObjOrArray;\n }\n\n // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n // We keep a certain amount of depth.\n // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n const remainingDepth =\n typeof (value as ObjOrArray)['__sentry_override_normalization_depth__'] === 'number'\n ? ((value as ObjOrArray)['__sentry_override_normalization_depth__'] as number)\n : depth;\n\n // We're also done if we've reached the max depth\n if (remainingDepth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n const valueWithToJSON = value as unknown & { toJSON?: () => unknown };\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) as ObjOrArray;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = convertToPlainObject(value as ObjOrArray);\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n numAdded++;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n/**\n * @deprecated This export will be removed in v8.\n */\nexport { visit as walk };\n\n/* eslint-disable complexity */\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key: unknown,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value: Exclude,\n): string {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n if (isVueViewModel(value)) {\n return '[VueViewModel]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n const objName = getConstructorName(value);\n\n // Handle HTML Elements\n if (/^HTML(\\w*)Element$/.test(objName)) {\n return `[HTMLElement: ${objName}]`;\n }\n\n return `[object ${objName}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value: unknown): string {\n const prototype: Prototype | null = Object.getPrototypeOf(value);\n\n return prototype ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n\n/**\n * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint\n * across platforms and working directory.\n *\n * @param url The URL to be normalized.\n * @param basePath The application base path.\n * @returns The normalized URL.\n */\nexport function normalizeUrlToBase(url: string, basePath: string): string {\n const escapedBase = basePath\n // Backslash to forward\n .replace(/\\\\/g, '/')\n // Escape RegExp special characters\n .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n let newUrl = url;\n try {\n newUrl = decodeURI(url);\n } catch (_Oo) {\n // Sometime this breaks\n }\n return (\n newUrl\n .replace(/\\\\/g, '/')\n .replace(/webpack:\\/?/g, '') // Remove intermediate base path\n // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor\n .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///')\n );\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type MemoFunc = [\n // memoize\n (obj: any) => boolean,\n // unmemoize\n (obj: any) => void,\n];\n\n/**\n * Helper to decycle json objects\n */\nexport function memoBuilder(): MemoFunc {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner: any = hasWeakSet ? new WeakSet() : [];\n function memoize(obj: any): boolean {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj: any): void {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { DEBUG_BUILD } from './debug-build';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { logger } from './logger';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacementFactory(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n markFunctionWrapped(wrapped, original);\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nexport function addNonEnumerableProperty(obj: object, name: string, value: unknown): void {\n try {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n } catch (o_O) {\n DEBUG_BUILD && logger.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\n }\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n try {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n } catch (o_O) {} // eslint-disable-line no-empty\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nexport function convertToPlainObject(\n value: V,\n):\n | {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n }\n | {\n [ownProps: string]: unknown;\n message: string;\n name: string;\n stack?: string;\n }\n | V {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj: {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n } = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target: unknown): string {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: unknown): { [key: string]: unknown } {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps: { [key: string]: unknown } = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj as Record)[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception: Record, maxLength: number = 40): string {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nexport function dropUndefinedKeys(inputValue: T): T {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue: T, memoizationMap: Map): T {\n if (isPojo(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: { [key: string]: any } = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue as T;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: unknown[] = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item: unknown) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue as unknown as T;\n }\n\n return inputValue;\n}\n\nfunction isPojo(input: unknown): input is Record {\n if (!isPlainObject(input)) {\n return false;\n }\n\n try {\n const name = (Object.getPrototypeOf(input) as { constructor: { name: string } }).constructor.name;\n return !name || name === 'Object';\n } catch {\n return true;\n }\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat as any).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n","import type { StackFrame, StackLineParser, StackParser } from '@sentry/types';\n\nimport type { GetModuleFn } from './node-stack-trace';\nimport { filenameIsInApp, node } from './node-stack-trace';\n\nexport { filenameIsInApp };\n\nconst STACKTRACE_FRAME_LIMIT = 50;\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirst: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirst; i < lines.length; i++) {\n const line = lines[i];\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n continue;\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue;\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT) {\n break;\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: ReadonlyArray): StackFrame[] {\n if (!stack.length) {\n return [];\n }\n\n const localStack = Array.from(stack);\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (/sentryWrapped/.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n\n // Reversing in the middle of the procedure allows us to just pop the values off the stack\n localStack.reverse();\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n\n // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n // is produced within the hub itself, making it:\n //\n // Sentry.captureException()\n // getCurrentHub().captureException()\n //\n // instead of just the top `Sentry` call itself.\n // This forces us to possibly strip an additional frame in the exact same was as above.\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n }\n\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n ...frame,\n filename: frame.filename || localStack[localStack.length - 1].filename,\n function: frame.function || '?',\n }));\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n return [90, node(getModule)];\n}\n","import { isRegExp, isString, isVueViewModel } from './is';\n\nexport { escapeStringForRegex } from './vendor/escapeStringForRegex';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n // console warnings. This happens when a Vue template is rendered with\n // an undeclared variable, which we try to stringify, ultimately causing\n // Vue to issue another warning which repeats indefinitely.\n // see: https://github.com/getsentry/sentry-javascript/pull/8981\n if (isVueViewModel(value)) {\n output.push('[VueViewModel]');\n } else {\n output.push(String(value));\n }\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nexport function isMatchingPattern(\n value: string,\n pattern: RegExp | string,\n requireExactStringMatch: boolean = false,\n): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (isString(pattern)) {\n return requireExactStringMatch ? value === pattern : value.includes(pattern);\n }\n\n return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nexport function stringMatchesSomePattern(\n testString: string,\n patterns: Array = [],\n requireExactStringMatch: boolean = false,\n): boolean {\n return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n /** Pending */\n PENDING = 0,\n /** Resolved / OK */\n RESOLVED = 1,\n /** Rejected / Error */\n REJECTED = 2,\n}\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike;\nexport function resolvedSyncPromise(value: T | PromiseLike): PromiseLike;\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise(value?: T | PromiseLike): PromiseLike {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise implements PromiseLike {\n private _state: States;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]>;\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void,\n ) {\n this._state = States.PENDING;\n this._handlers = [];\n\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val as unknown as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };\n}\n\nexport { SyncPromise };\n","import { GLOBAL_OBJ } from './worldwide';\n\nconst ONE_SECOND_IN_MS = 1000;\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n *\n * TODO(v8): Return type should be rounded.\n */\nexport function dateTimestampInSeconds(): number {\n return Date.now() / ONE_SECOND_IN_MS;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction createUnixTimestampInSecondsFunc(): () => number {\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & { performance?: Performance };\n if (!performance || !performance.now) {\n return dateTimestampInSeconds;\n }\n\n // Some browser and environments don't have a timeOrigin, so we fallback to\n // using Date.now() to compute the starting time.\n const approxStartingTimeOrigin = Date.now() - performance.now();\n const timeOrigin = performance.timeOrigin == undefined ? approxStartingTimeOrigin : performance.timeOrigin;\n\n // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current\n // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed.\n //\n // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the\n // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and\n // correct for this.\n // See: https://github.com/getsentry/sentry-javascript/issues/2590\n // See: https://github.com/mdn/content/issues/4713\n // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6\n return () => {\n return (timeOrigin + performance.now()) / ONE_SECOND_IN_MS;\n };\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds = createUnixTimestampInSecondsFunc();\n\n/**\n * Re-exported with an old name for backwards-compatibility.\n * TODO (v8): Remove this\n *\n * @deprecated Use `timestampInSeconds` instead.\n */\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport let _browserPerformanceTimeOriginMode: string;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n *\n * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Integration } from '@sentry/types';\n\nimport type { SdkSource } from './env';\n\n/** Internal global with common properties and Sentry extensions */\nexport interface InternalGlobal {\n navigator?: { userAgent?: string };\n console: Console;\n Sentry?: {\n Integrations?: Integration[];\n };\n onerror?: {\n (event: object | string, source?: string, lineno?: number, colno?: number, error?: Error): any;\n __SENTRY_INSTRUMENTED__?: true;\n __SENTRY_LOADER__?: true;\n };\n onunhandledrejection?: {\n (event: unknown): boolean;\n __SENTRY_INSTRUMENTED__?: true;\n __SENTRY_LOADER__?: true;\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n SENTRY_SDK_SOURCE?: SdkSource;\n /**\n * Debug IDs are indirectly injected by Sentry CLI or bundler plugins to directly reference a particular source map\n * for resolving of a source file. The injected code will place an entry into the record for each loaded bundle/JS\n * file.\n */\n _sentryDebugIds?: Record;\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n extensions?: {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n /**\n * Raw module metadata that is injected by bundler plugins.\n *\n * Keys are `error.stack` strings, values are the metadata.\n */\n _sentryModuleMetadata?: Record;\n}\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj: { Math?: Math }): any | undefined {\n return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ: InternalGlobal =\n (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n // eslint-disable-next-line no-restricted-globals\n (typeof window == 'object' && isGlobalObj(window)) ||\n (typeof self == 'object' && isGlobalObj(self)) ||\n (typeof global == 'object' && isGlobalObj(global)) ||\n (function (this: any) {\n return this;\n })() ||\n {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nexport function getGlobalObject(): T & InternalGlobal {\n return GLOBAL_OBJ as T & InternalGlobal;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton(name: keyof InternalGlobal['__SENTRY__'], creator: () => T, obj?: unknown): T {\n const gbl = (obj || GLOBAL_OBJ) as InternalGlobal;\n const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n","//download.js v4.2, by dandavis; 2008-2016. [MIT] see http://danml.com/download.html for tests/usage\n// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime\n// v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs\n// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling.\n// v4 adds AMD/UMD, commonJS, and plain browser support\n// v4.1 adds url download capability via solo URL argument (same domain/CORS only)\n// v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors\n// https://github.com/rndme/download\n\n(function (root, factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([], factory);\n\t} else if (typeof exports === 'object') {\n\t\t// Node. Does not work with strict CommonJS, but\n\t\t// only CommonJS-like environments that support module.exports,\n\t\t// like Node.\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// Browser globals (root is window)\n\t\troot.download = factory();\n }\n}(this, function () {\n\n\treturn function download(data, strFileName, strMimeType) {\n\n\t\tvar self = window, // this script is only for browsers anyway...\n\t\t\tdefaultMime = \"application/octet-stream\", // this default mime also triggers iframe downloads\n\t\t\tmimeType = strMimeType || defaultMime,\n\t\t\tpayload = data,\n\t\t\turl = !strFileName && !strMimeType && payload,\n\t\t\tanchor = document.createElement(\"a\"),\n\t\t\ttoString = function(a){return String(a);},\n\t\t\tmyBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString),\n\t\t\tfileName = strFileName || \"download\",\n\t\t\tblob,\n\t\t\treader;\n\t\t\tmyBlob= myBlob.call ? myBlob.bind(self) : Blob ;\n\t \n\t\tif(String(this)===\"true\"){ //reverse arguments, allowing download.bind(true, \"text/xml\", \"export.xml\") to act as a callback\n\t\t\tpayload=[payload, mimeType];\n\t\t\tmimeType=payload[0];\n\t\t\tpayload=payload[1];\n\t\t}\n\n\n\t\tif(url && url.length< 2048){ // if no filename and no mime, assume a url was passed as the only argument\n\t\t\tfileName = url.split(\"/\").pop().split(\"?\")[0];\n\t\t\tanchor.href = url; // assign href prop to temp anchor\n\t\t \tif(anchor.href.indexOf(url) !== -1){ // if the browser determines that it's a potentially valid url path:\n \t\tvar ajax=new XMLHttpRequest();\n \t\tajax.open( \"GET\", url, true);\n \t\tajax.responseType = 'blob';\n \t\tajax.onload= function(e){ \n\t\t\t\t download(e.target.response, fileName, defaultMime);\n\t\t\t\t};\n \t\tsetTimeout(function(){ ajax.send();}, 0); // allows setting custom ajax headers using the return:\n\t\t\t return ajax;\n\t\t\t} // end if valid url?\n\t\t} // end if url?\n\n\n\t\t//go ahead and download dataURLs right away\n\t\tif(/^data:([\\w+-]+\\/[\\w+.-]+)?[,;]/.test(payload)){\n\t\t\n\t\t\tif(payload.length > (1024*1024*1.999) && myBlob !== toString ){\n\t\t\t\tpayload=dataUrlToBlob(payload);\n\t\t\t\tmimeType=payload.type || defaultMime;\n\t\t\t}else{\t\t\t\n\t\t\t\treturn navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs:\n\t\t\t\t\tnavigator.msSaveBlob(dataUrlToBlob(payload), fileName) :\n\t\t\t\t\tsaver(payload) ; // everyone else can save dataURLs un-processed\n\t\t\t}\n\t\t\t\n\t\t}else{//not data url, is it a string with special needs?\n\t\t\tif(/([\\x80-\\xff])/.test(payload)){\t\t\t \n\t\t\t\tvar i=0, tempUiArr= new Uint8Array(payload.length), mx=tempUiArr.length;\n\t\t\t\tfor(i;i 5 times\nexport const assign = Object.assign\nexport const getDescriptor = Object.getOwnPropertyDescriptor\nexport const defineProperty = Object.defineProperty\nexport const objectPrototype = Object.prototype\n\nexport const EMPTY_ARRAY = []\nObject.freeze(EMPTY_ARRAY)\n\nexport const EMPTY_OBJECT = {}\nObject.freeze(EMPTY_OBJECT)\n\nexport interface Lambda {\n (): void\n name?: string\n}\n\nconst hasProxy = typeof Proxy !== \"undefined\"\nconst plainObjectString = Object.toString()\n\nexport function assertProxies() {\n if (!hasProxy) {\n die(\n __DEV__\n ? \"`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`\"\n : \"Proxy not available\"\n )\n }\n}\n\nexport function warnAboutProxyRequirement(msg: string) {\n if (__DEV__ && globalState.verifyProxies) {\n die(\n \"MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to \" +\n msg\n )\n }\n}\n\nexport function getNextId() {\n return ++globalState.mobxGuid\n}\n\n/**\n * Makes sure that the provided function is invoked at most once.\n */\nexport function once(func: Lambda): Lambda {\n let invoked = false\n return function () {\n if (invoked) {\n return\n }\n invoked = true\n return (func as any).apply(this, arguments)\n }\n}\n\nexport const noop = () => {}\n\nexport function isFunction(fn: any): fn is Function {\n return typeof fn === \"function\"\n}\n\nexport function isString(value: any): value is string {\n return typeof value === \"string\"\n}\n\nexport function isStringish(value: any): value is string | number | symbol {\n const t = typeof value\n switch (t) {\n case \"string\":\n case \"symbol\":\n case \"number\":\n return true\n }\n return false\n}\n\nexport function isObject(value: any): value is Object {\n return value !== null && typeof value === \"object\"\n}\n\nexport function isPlainObject(value: any) {\n if (!isObject(value)) {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n if (proto == null) {\n return true\n }\n const protoConstructor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n return (\n typeof protoConstructor === \"function\" && protoConstructor.toString() === plainObjectString\n )\n}\n\n// https://stackoverflow.com/a/37865170\nexport function isGenerator(obj: any): boolean {\n const constructor = obj?.constructor\n if (!constructor) {\n return false\n }\n if (\n \"GeneratorFunction\" === constructor.name ||\n \"GeneratorFunction\" === constructor.displayName\n ) {\n return true\n }\n return false\n}\n\nexport function addHiddenProp(object: any, propName: PropertyKey, value: any) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value\n })\n}\n\nexport function addHiddenFinalProp(object: any, propName: PropertyKey, value: any) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: false,\n configurable: true,\n value\n })\n}\n\nexport function createInstanceofPredicate(\n name: string,\n theClass: new (...args: any[]) => T\n): (x: any) => x is T {\n const propName = \"isMobX\" + name\n theClass.prototype[propName] = true\n return function (x) {\n return isObject(x) && x[propName] === true\n } as any\n}\n\nexport function isES6Map(thing: any): thing is Map {\n return thing != null && Object.prototype.toString.call(thing) === \"[object Map]\"\n}\n\nexport function isPlainES6Map(thing: Map): boolean {\n const mapProto = Object.getPrototypeOf(thing)\n const objectProto = Object.getPrototypeOf(mapProto)\n const nullProto = Object.getPrototypeOf(objectProto)\n return nullProto === null\n}\n\nexport function isES6Set(thing: any): thing is Set {\n return thing != null && Object.prototype.toString.call(thing) === \"[object Set]\"\n}\n\nconst hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\"\n\n/**\n * Returns the following: own enumerable keys and symbols.\n */\nexport function getPlainObjectKeys(object: any) {\n const keys = Object.keys(object)\n // Not supported in IE, so there are not going to be symbol props anyway...\n if (!hasGetOwnPropertySymbols) {\n return keys\n }\n const symbols = Object.getOwnPropertySymbols(object)\n if (!symbols.length) {\n return keys\n }\n return [...keys, ...symbols.filter(s => objectPrototype.propertyIsEnumerable.call(object, s))]\n}\n\n// From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\nexport const ownKeys: (target: any) => Array =\n typeof Reflect !== \"undefined\" && Reflect.ownKeys\n ? Reflect.ownKeys\n : hasGetOwnPropertySymbols\n ? obj => Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj) as any)\n : /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport function stringifyKey(key: any): string {\n if (typeof key === \"string\") {\n return key\n }\n if (typeof key === \"symbol\") {\n return key.toString()\n }\n return new String(key).toString()\n}\n\nexport function toPrimitive(value: any) {\n return value === null ? null : typeof value === \"object\" ? \"\" + value : value\n}\n\nexport function hasProp(target: Object, prop: PropertyKey): boolean {\n return objectPrototype.hasOwnProperty.call(target, prop)\n}\n\n// From Immer utils\nexport const getOwnPropertyDescriptors =\n Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(target: any) {\n // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n const res: any = {}\n // Note: without polyfill for ownKeys, symbols won't be picked up\n ownKeys(target).forEach(key => {\n res[key] = getDescriptor(target, key)\n })\n return res\n }\n","import { Annotation, addHiddenProp, AnnotationsMap, hasProp, die, isOverride } from \"../internal\"\n\nimport type { Decorator } from \"../types/decorator_fills\"\n\nexport const storedAnnotationsSymbol = Symbol(\"mobx-stored-annotations\")\n\n/**\n * Creates a function that acts as\n * - decorator\n * - annotation object\n */\nexport function createDecoratorAnnotation(\n annotation: Annotation\n): PropertyDecorator & Annotation & D {\n function decorator(target, property) {\n if (is20223Decorator(property)) {\n return annotation.decorate_20223_(target, property)\n } else {\n storeAnnotation(target, property, annotation)\n }\n }\n return Object.assign(decorator, annotation) as any\n}\n\n/**\n * Stores annotation to prototype,\n * so it can be inspected later by `makeObservable` called from constructor\n */\nexport function storeAnnotation(prototype: any, key: PropertyKey, annotation: Annotation) {\n if (!hasProp(prototype, storedAnnotationsSymbol)) {\n addHiddenProp(prototype, storedAnnotationsSymbol, {\n // Inherit annotations\n ...prototype[storedAnnotationsSymbol]\n })\n }\n // @override must override something\n if (__DEV__ && isOverride(annotation) && !hasProp(prototype[storedAnnotationsSymbol], key)) {\n const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n die(\n `'${fieldName}' is decorated with 'override', ` +\n `but no such decorated member was found on prototype.`\n )\n }\n // Cannot re-decorate\n assertNotDecorated(prototype, annotation, key)\n\n // Ignore override\n if (!isOverride(annotation)) {\n prototype[storedAnnotationsSymbol][key] = annotation\n }\n}\n\nfunction assertNotDecorated(prototype: object, annotation: Annotation, key: PropertyKey) {\n if (__DEV__ && !isOverride(annotation) && hasProp(prototype[storedAnnotationsSymbol], key)) {\n const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n const currentAnnotationType = prototype[storedAnnotationsSymbol][key].annotationType_\n const requestedAnnotationType = annotation.annotationType_\n die(\n `Cannot apply '@${requestedAnnotationType}' to '${fieldName}':` +\n `\\nThe field is already decorated with '@${currentAnnotationType}'.` +\n `\\nRe-decorating fields is not allowed.` +\n `\\nUse '@override' decorator for methods overridden by subclass.`\n )\n }\n}\n\n/**\n * Collects annotations from prototypes and stores them on target (instance)\n */\nexport function collectStoredAnnotations(target): AnnotationsMap {\n if (!hasProp(target, storedAnnotationsSymbol)) {\n // if (__DEV__ && !target[storedAnnotationsSymbol]) {\n // die(\n // `No annotations were passed to makeObservable, but no decorated members have been found either`\n // )\n // }\n // We need a copy as we will remove annotation from the list once it's applied.\n addHiddenProp(target, storedAnnotationsSymbol, { ...target[storedAnnotationsSymbol] })\n }\n return target[storedAnnotationsSymbol]\n}\n\nexport function is20223Decorator(context): context is DecoratorContext {\n return typeof context == \"object\" && typeof context[\"kind\"] == \"string\"\n}\n\nexport function assert20223DecoratorType(\n context: DecoratorContext,\n types: DecoratorContext[\"kind\"][]\n) {\n if (__DEV__ && !types.includes(context.kind)) {\n die(\n `The decorator applied to '${String(context.name)}' cannot be used on a ${\n context.kind\n } element`\n )\n }\n}\n","import {\n die,\n Annotation,\n hasProp,\n createDecoratorAnnotation,\n ObservableObjectAdministration,\n MakeResult\n} from \"../internal\"\n\nimport type { ClassMethodDecorator } from \"./decorator_fills\"\n\nconst OVERRIDE = \"override\"\n\nexport const override: Annotation & PropertyDecorator & ClassMethodDecorator =\n createDecoratorAnnotation({\n annotationType_: OVERRIDE,\n make_,\n extend_,\n decorate_20223_\n })\n\nexport function isOverride(annotation: Annotation): boolean {\n return annotation.annotationType_ === OVERRIDE\n}\n\nfunction make_(this: Annotation, adm: ObservableObjectAdministration, key): MakeResult {\n // Must not be plain object\n if (__DEV__ && adm.isPlainObject_) {\n die(\n `Cannot apply '${this.annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${this.annotationType_}' cannot be used on plain objects.`\n )\n }\n // Must override something\n if (__DEV__ && !hasProp(adm.appliedAnnotations_!, key)) {\n die(\n `'${adm.name_}.${key.toString()}' is annotated with '${this.annotationType_}', ` +\n `but no such annotated member was found on prototype.`\n )\n }\n return MakeResult.Cancel\n}\n\nfunction extend_(this: Annotation, adm, key, descriptor, proxyTrap): boolean {\n die(`'${this.annotationType_}' can only be used with 'makeObservable'`)\n}\n\nfunction decorate_20223_(this: Annotation, desc, context: DecoratorContext) {\n console.warn(`'${this.annotationType_}' cannot be used with decorators - this is a no-op`)\n}\n","import {\n IDerivationState_,\n IObservable,\n IDerivation,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n noop,\n onBecomeObserved,\n onBecomeUnobserved,\n propagateChanged,\n reportObserved,\n startBatch,\n Lambda\n} from \"../internal\"\n\nexport const $mobx = Symbol(\"mobx administration\")\n\nexport interface IAtom extends IObservable {\n reportObserved(): boolean\n reportChanged(): void\n}\n\nexport class Atom implements IAtom {\n isPendingUnobservation = false // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n isBeingObserved = false\n observers_ = new Set()\n\n diffValue_ = 0\n lastAccessedBy_ = 0\n lowestObserverState_ = IDerivationState_.NOT_TRACKING_\n /**\n * Create a new atom. For debugging purposes it is recommended to give it a name.\n * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\n */\n constructor(public name_ = __DEV__ ? \"Atom@\" + getNextId() : \"Atom\") {}\n\n // onBecomeObservedListeners\n public onBOL: Set | undefined\n // onBecomeUnobservedListeners\n public onBUOL: Set | undefined\n\n public onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(listener => listener())\n }\n }\n\n public onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(listener => listener())\n }\n }\n\n /**\n * Invoke this method to notify mobx that your atom has been used somehow.\n * Returns true if there is currently a reactive context.\n */\n public reportObserved(): boolean {\n return reportObserved(this)\n }\n\n /**\n * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\n */\n public reportChanged() {\n startBatch()\n propagateChanged(this)\n endBatch()\n }\n\n toString() {\n return this.name_\n }\n}\n\nexport const isAtom = createInstanceofPredicate(\"Atom\", Atom)\n\nexport function createAtom(\n name: string,\n onBecomeObservedHandler: () => void = noop,\n onBecomeUnobservedHandler: () => void = noop\n): IAtom {\n const atom = new Atom(name)\n // default `noop` listener will not initialize the hook Set\n if (onBecomeObservedHandler !== noop) {\n onBecomeObserved(atom, onBecomeObservedHandler)\n }\n\n if (onBecomeUnobservedHandler !== noop) {\n onBecomeUnobserved(atom, onBecomeUnobservedHandler)\n }\n return atom\n}\n","import { deepEqual } from \"../internal\"\n\nexport interface IEqualsComparer {\n (a: T, b: T): boolean\n}\n\nfunction identityComparer(a: any, b: any): boolean {\n return a === b\n}\n\nfunction structuralComparer(a: any, b: any): boolean {\n return deepEqual(a, b)\n}\n\nfunction shallowComparer(a: any, b: any): boolean {\n return deepEqual(a, b, 1)\n}\n\nfunction defaultComparer(a: any, b: any): boolean {\n if (Object.is) {\n return Object.is(a, b)\n }\n\n return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b\n}\n\nexport const comparer = {\n identity: identityComparer,\n structural: structuralComparer,\n default: defaultComparer,\n shallow: shallowComparer\n}\n","import {\n deepEqual,\n isES6Map,\n isES6Set,\n isObservable,\n isObservableArray,\n isObservableMap,\n isObservableSet,\n isObservableObject,\n isPlainObject,\n observable,\n die,\n isAction,\n autoAction,\n flow,\n isFlow,\n isGenerator\n} from \"../internal\"\n\nexport interface IEnhancer {\n (newValue: T, oldValue: T | undefined, name: string): T\n}\n\nexport function deepEnhancer(v, _, name) {\n // it is an observable already, done\n if (isObservable(v)) {\n return v\n }\n\n // something that can be converted and mutated?\n if (Array.isArray(v)) {\n return observable.array(v, { name })\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, { name })\n }\n if (isES6Map(v)) {\n return observable.map(v, { name })\n }\n if (isES6Set(v)) {\n return observable.set(v, { name })\n }\n if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n if (isGenerator(v)) {\n return flow(v)\n } else {\n return autoAction(name, v)\n }\n }\n return v\n}\n\nexport function shallowEnhancer(v, _, name): any {\n if (v === undefined || v === null) {\n return v\n }\n if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v)) {\n return v\n }\n if (Array.isArray(v)) {\n return observable.array(v, { name, deep: false })\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, { name, deep: false })\n }\n if (isES6Map(v)) {\n return observable.map(v, { name, deep: false })\n }\n if (isES6Set(v)) {\n return observable.set(v, { name, deep: false })\n }\n\n if (__DEV__) {\n die(\n \"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\"\n )\n }\n}\n\nexport function referenceEnhancer(newValue?) {\n // never turn into an observable\n return newValue\n}\n\nexport function refStructEnhancer(v, oldValue): any {\n if (__DEV__ && isObservable(v)) {\n die(`observable.struct should not be used with observable values`)\n }\n if (deepEqual(v, oldValue)) {\n return oldValue\n }\n return v\n}\n","import {\n ObservableObjectAdministration,\n createAction,\n isAction,\n defineProperty,\n die,\n isFunction,\n Annotation,\n globalState,\n MakeResult,\n assert20223DecoratorType,\n storeAnnotation\n} from \"../internal\"\n\nexport function createActionAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_,\n decorate_20223_\n }\n}\n\nfunction make_(\n this: Annotation,\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // bound\n if (this.options_?.bound) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Break\n }\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // prototype\n if (isAction(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return MakeResult.Break\n }\n const actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false)\n defineProperty(source, key, actionDescriptor)\n return MakeResult.Continue\n}\n\nfunction extend_(\n this: Annotation,\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n const actionDescriptor = createActionDescriptor(adm, this, key, descriptor)\n return adm.defineProperty_(key, actionDescriptor, proxyTrap)\n}\n\nfunction decorate_20223_(this: Annotation, mthd, context: DecoratorContext) {\n if (__DEV__) {\n assert20223DecoratorType(context, [\"method\", \"field\"])\n }\n const { kind, name, addInitializer } = context\n const ann = this\n\n const _createAction = m =>\n createAction(ann.options_?.name ?? name!.toString(), m, ann.options_?.autoAction ?? false)\n\n // Backwards/Legacy behavior, expects makeObservable(this)\n if (kind == \"field\") {\n addInitializer(function () {\n storeAnnotation(this, name, ann)\n })\n return\n }\n\n if (kind == \"method\") {\n if (!isAction(mthd)) {\n mthd = _createAction(mthd)\n }\n\n if (this.options_?.bound) {\n addInitializer(function () {\n const self = this as any\n const bound = self[name].bind(self)\n bound.isMobxAction = true\n self[name] = bound\n })\n }\n\n return mthd\n }\n\n die(\n `Cannot apply '${ann.annotationType_}' to '${String(name)}' (kind: ${kind}):` +\n `\\n'${ann.annotationType_}' can only be used on properties with a function value.`\n )\n}\n\nfunction assertActionDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { value }: PropertyDescriptor\n) {\n if (__DEV__ && !isFunction(value)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on properties with a function value.`\n )\n }\n}\n\nexport function createActionDescriptor(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n // provides ability to disable safeDescriptors for prototypes\n safeDescriptors: boolean = globalState.safeDescriptors\n) {\n assertActionDescriptor(adm, annotation, key, descriptor)\n let { value } = descriptor\n if (annotation.options_?.bound) {\n value = value.bind(adm.proxy_ ?? adm.target_)\n }\n return {\n value: createAction(\n annotation.options_?.name ?? key.toString(),\n value,\n annotation.options_?.autoAction ?? false,\n // https://github.com/mobxjs/mobx/discussions/3140\n annotation.options_?.bound ? adm.proxy_ ?? adm.target_ : undefined\n ),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n }\n}\n","import {\n ObservableObjectAdministration,\n Annotation,\n defineProperty,\n die,\n flow,\n isFlow,\n isFunction,\n globalState,\n MakeResult,\n hasProp,\n assert20223DecoratorType\n} from \"../internal\"\n\nexport function createFlowAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_,\n decorate_20223_\n }\n}\n\nfunction make_(\n this: Annotation,\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // prototype\n // bound - must annotate protos to support super.flow()\n if (this.options_?.bound && (!hasProp(adm.target_, key) || !isFlow(adm.target_[key]))) {\n if (this.extend_(adm, key, descriptor, false) === null) {\n return MakeResult.Cancel\n }\n }\n if (isFlow(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return MakeResult.Break\n }\n const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false)\n defineProperty(source, key, flowDescriptor)\n return MakeResult.Continue\n}\n\nfunction extend_(\n this: Annotation,\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, this.options_?.bound)\n return adm.defineProperty_(key, flowDescriptor, proxyTrap)\n}\n\nfunction decorate_20223_(this: Annotation, mthd, context: ClassMethodDecoratorContext) {\n if (__DEV__) {\n assert20223DecoratorType(context, [\"method\"])\n }\n const { name, addInitializer } = context\n\n if (!isFlow(mthd)) {\n mthd = flow(mthd)\n }\n\n if (this.options_?.bound) {\n addInitializer(function () {\n const self = this as any\n const bound = self[name].bind(self)\n bound.isMobXFlow = true\n self[name] = bound\n })\n }\n\n return mthd\n}\n\nfunction assertFlowDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { value }: PropertyDescriptor\n) {\n if (__DEV__ && !isFunction(value)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on properties with a generator function value.`\n )\n }\n}\n\nfunction createFlowDescriptor(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n bound: boolean,\n // provides ability to disable safeDescriptors for prototypes\n safeDescriptors: boolean = globalState.safeDescriptors\n): PropertyDescriptor {\n assertFlowDescriptor(adm, annotation, key, descriptor)\n let { value } = descriptor\n // In case of flow.bound, the descriptor can be from already annotated prototype\n if (!isFlow(value)) {\n value = flow(value)\n }\n if (bound) {\n // We do not keep original function around, so we bind the existing flow\n value = value.bind(adm.proxy_ ?? adm.target_)\n // This is normally set by `flow`, but `bind` returns new function...\n value.isMobXFlow = true\n }\n return {\n value,\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n }\n}\n","import {\n ObservableObjectAdministration,\n die,\n Annotation,\n MakeResult,\n assert20223DecoratorType,\n $mobx,\n asObservableObject,\n ComputedValue\n} from \"../internal\"\n\nexport function createComputedAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_,\n decorate_20223_\n }\n}\n\nfunction make_(\n this: Annotation,\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n): MakeResult {\n return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n this: Annotation,\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n assertComputedDescriptor(adm, this, key, descriptor)\n return adm.defineComputedProperty_(\n key,\n {\n ...this.options_,\n get: descriptor.get,\n set: descriptor.set\n },\n proxyTrap\n )\n}\n\nfunction decorate_20223_(this: Annotation, get, context: ClassGetterDecoratorContext) {\n if (__DEV__) {\n assert20223DecoratorType(context, [\"getter\"])\n }\n const ann = this\n const { name: key, addInitializer } = context\n\n addInitializer(function () {\n const adm: ObservableObjectAdministration = asObservableObject(this)[$mobx]\n const options = {\n ...ann.options_,\n get,\n context: this\n }\n options.name ||= __DEV__\n ? `${adm.name_}.${key.toString()}`\n : `ObservableObject.${key.toString()}`\n adm.values_.set(key, new ComputedValue(options))\n })\n\n return function () {\n return this[$mobx].getObservablePropValue_(key)\n }\n}\n\nfunction assertComputedDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { get }: PropertyDescriptor\n) {\n if (__DEV__ && !get) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on getter(+setter) properties.`\n )\n }\n}\n","import {\n ObservableObjectAdministration,\n deepEnhancer,\n die,\n Annotation,\n MakeResult,\n assert20223DecoratorType,\n ObservableValue,\n asObservableObject,\n $mobx\n} from \"../internal\"\n\nexport function createObservableAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_,\n decorate_20223_\n }\n}\n\nfunction make_(\n this: Annotation,\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n): MakeResult {\n return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n this: Annotation,\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n assertObservableDescriptor(adm, this, key, descriptor)\n return adm.defineObservableProperty_(\n key,\n descriptor.value,\n this.options_?.enhancer ?? deepEnhancer,\n proxyTrap\n )\n}\n\nfunction decorate_20223_(\n this: Annotation,\n desc,\n context: ClassAccessorDecoratorContext | ClassFieldDecoratorContext\n) {\n if (__DEV__) {\n if (context.kind === \"field\") {\n throw die(\n `Please use \\`@observable accessor ${String(\n context.name\n )}\\` instead of \\`@observable ${String(context.name)}\\``\n )\n }\n assert20223DecoratorType(context, [\"accessor\"])\n }\n\n const ann = this\n const { kind, name } = context\n\n // The laziness here is not ideal... It's a workaround to how 2022.3 Decorators are implemented:\n // `addInitializer` callbacks are executed _before_ any accessors are defined (instead of the ideal-for-us right after each).\n // This means that, if we were to do our stuff in an `addInitializer`, we'd attempt to read a private slot\n // before it has been initialized. The runtime doesn't like that and throws a `Cannot read private member\n // from an object whose class did not declare it` error.\n // TODO: it seems that this will not be required anymore in the final version of the spec\n // See TODO: link\n const initializedObjects = new WeakSet()\n\n function initializeObservable(target, value) {\n const adm: ObservableObjectAdministration = asObservableObject(target)[$mobx]\n const observable = new ObservableValue(\n value,\n ann.options_?.enhancer ?? deepEnhancer,\n __DEV__ ? `${adm.name_}.${name.toString()}` : `ObservableObject.${name.toString()}`,\n false\n )\n adm.values_.set(name, observable)\n initializedObjects.add(target)\n }\n\n if (kind == \"accessor\") {\n return {\n get() {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, desc.get.call(this))\n }\n return this[$mobx].getObservablePropValue_(name)\n },\n set(value) {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, value)\n }\n return this[$mobx].setObservablePropValue_(name, value)\n },\n init(value) {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, value)\n }\n return value\n }\n }\n }\n\n return\n}\n\nfunction assertObservableDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n) {\n if (__DEV__ && !(\"value\" in descriptor)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' cannot be used on getter/setter properties`\n )\n }\n}\n","import {\n ObservableObjectAdministration,\n observable,\n Annotation,\n defineProperty,\n createAction,\n globalState,\n flow,\n computed,\n autoAction,\n isGenerator,\n MakeResult,\n die\n} from \"../internal\"\n\nconst AUTO = \"true\"\n\nexport const autoAnnotation: Annotation = createAutoAnnotation()\n\nexport function createAutoAnnotation(options?: object): Annotation {\n return {\n annotationType_: AUTO,\n options_: options,\n make_,\n extend_,\n decorate_20223_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // getter -> computed\n if (descriptor.get) {\n return computed.make_(adm, key, descriptor, source)\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.make_\n const set = createAction(key.toString(), descriptor.set) as (v: any) => void\n // own\n if (source === adm.target_) {\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set\n }) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // proto\n defineProperty(source, key, {\n configurable: true,\n set\n })\n return MakeResult.Continue\n }\n // function on proto -> autoAction/flow\n if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n if (isGenerator(descriptor.value)) {\n const flowAnnotation = this.options_?.autoBind ? flow.bound : flow\n return flowAnnotation.make_(adm, key, descriptor, source)\n }\n const actionAnnotation = this.options_?.autoBind ? autoAction.bound : autoAction\n return actionAnnotation.make_(adm, key, descriptor, source)\n }\n // other -> observable\n // Copy props from proto as well, see test:\n // \"decorate should work with Object.create\"\n let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n }\n return observableAnnotation.make_(adm, key, descriptor, source)\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n // getter -> computed\n if (descriptor.get) {\n return computed.extend_(adm, key, descriptor, proxyTrap)\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.extend_\n return adm.defineProperty_(\n key,\n {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: createAction(key.toString(), descriptor.set) as (v: any) => void\n },\n proxyTrap\n )\n }\n // other -> observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n }\n let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n return observableAnnotation.extend_(adm, key, descriptor, proxyTrap)\n}\n\nfunction decorate_20223_(this: Annotation, desc, context: ClassGetterDecoratorContext) {\n die(`'${this.annotationType_}' cannot be used as a decorator`)\n}\n","import {\n IEnhancer,\n IEqualsComparer,\n IObservableArray,\n IObservableMapInitialValues,\n IObservableSetInitialValues,\n IObservableValue,\n ObservableMap,\n ObservableSet,\n ObservableValue,\n asDynamicObservableObject,\n createObservableArray,\n deepEnhancer,\n extendObservable,\n isES6Map,\n isES6Set,\n isObservable,\n isPlainObject,\n referenceEnhancer,\n Annotation,\n shallowEnhancer,\n refStructEnhancer,\n AnnotationsMap,\n asObservableObject,\n storeAnnotation,\n createDecoratorAnnotation,\n createLegacyArray,\n globalState,\n assign,\n isStringish,\n createObservableAnnotation,\n createAutoAnnotation,\n is20223Decorator,\n initObservable\n} from \"../internal\"\n\nimport type { ClassAccessorDecorator, ClassFieldDecorator } from \"../types/decorator_fills\"\n\nexport const OBSERVABLE = \"observable\"\nexport const OBSERVABLE_REF = \"observable.ref\"\nexport const OBSERVABLE_SHALLOW = \"observable.shallow\"\nexport const OBSERVABLE_STRUCT = \"observable.struct\"\n\nexport type CreateObservableOptions = {\n name?: string\n equals?: IEqualsComparer\n deep?: boolean\n defaultDecorator?: Annotation\n proxy?: boolean\n autoBind?: boolean\n}\n\n// Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nexport const defaultCreateObservableOptions: CreateObservableOptions = {\n deep: true,\n name: undefined,\n defaultDecorator: undefined,\n proxy: true\n}\nObject.freeze(defaultCreateObservableOptions)\n\nexport function asCreateObservableOptions(thing: any): CreateObservableOptions {\n return thing || defaultCreateObservableOptions\n}\n\nconst observableAnnotation = createObservableAnnotation(OBSERVABLE)\nconst observableRefAnnotation = createObservableAnnotation(OBSERVABLE_REF, {\n enhancer: referenceEnhancer\n})\nconst observableShallowAnnotation = createObservableAnnotation(OBSERVABLE_SHALLOW, {\n enhancer: shallowEnhancer\n})\nconst observableStructAnnotation = createObservableAnnotation(OBSERVABLE_STRUCT, {\n enhancer: refStructEnhancer\n})\nconst observableDecoratorAnnotation =\n createDecoratorAnnotation(observableAnnotation)\n\nexport function getEnhancerFromOptions(options: CreateObservableOptions): IEnhancer {\n return options.deep === true\n ? deepEnhancer\n : options.deep === false\n ? referenceEnhancer\n : getEnhancerFromAnnotation(options.defaultDecorator)\n}\n\nexport function getAnnotationFromOptions(\n options?: CreateObservableOptions\n): Annotation | undefined {\n return options ? options.defaultDecorator ?? createAutoAnnotation(options) : undefined\n}\n\nexport function getEnhancerFromAnnotation(annotation?: Annotation): IEnhancer {\n return !annotation ? deepEnhancer : annotation.options_?.enhancer ?? deepEnhancer\n}\n\n/**\n * Turns an object, array or function into a reactive structure.\n * @param v the value which should become observable.\n */\nfunction createObservable(v: any, arg2?: any, arg3?: any) {\n // @observable someProp; (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return observableAnnotation.decorate_20223_(v, arg2)\n }\n\n // @observable someProp;\n if (isStringish(arg2)) {\n storeAnnotation(v, arg2, observableAnnotation)\n return\n }\n\n // already observable - ignore\n if (isObservable(v)) {\n return v\n }\n\n // plain object\n if (isPlainObject(v)) {\n return observable.object(v, arg2, arg3)\n }\n\n // Array\n if (Array.isArray(v)) {\n return observable.array(v, arg2)\n }\n\n // Map\n if (isES6Map(v)) {\n return observable.map(v, arg2)\n }\n\n // Set\n if (isES6Set(v)) {\n return observable.set(v, arg2)\n }\n\n // other object - ignore\n if (typeof v === \"object\" && v !== null) {\n return v\n }\n\n // anything else\n return observable.box(v, arg2)\n}\nassign(createObservable, observableDecoratorAnnotation)\n\nexport interface IObservableValueFactory {\n (value: T, options?: CreateObservableOptions): IObservableValue\n (value?: T, options?: CreateObservableOptions): IObservableValue\n}\n\nexport interface IObservableFactory\n extends Annotation,\n PropertyDecorator,\n ClassAccessorDecorator,\n ClassFieldDecorator {\n // TODO: remove ClassFieldDecorator, this is only temporarily support for legacy decorators\n (value: T[], options?: CreateObservableOptions): IObservableArray\n (value: Set, options?: CreateObservableOptions): ObservableSet\n (value: Map, options?: CreateObservableOptions): ObservableMap\n (\n value: T,\n decorators?: AnnotationsMap,\n options?: CreateObservableOptions\n ): T\n\n box: IObservableValueFactory\n array: (initialValues?: T[], options?: CreateObservableOptions) => IObservableArray\n set: (\n initialValues?: IObservableSetInitialValues,\n options?: CreateObservableOptions\n ) => ObservableSet\n map: (\n initialValues?: IObservableMapInitialValues,\n options?: CreateObservableOptions\n ) => ObservableMap\n object: (\n props: T,\n decorators?: AnnotationsMap,\n options?: CreateObservableOptions\n ) => T\n\n /**\n * Decorator that creates an observable that only observes the references, but doesn't try to turn the assigned value into an observable.ts.\n */\n ref: Annotation & PropertyDecorator & ClassAccessorDecorator & ClassFieldDecorator\n /**\n * Decorator that creates an observable converts its value (objects, maps or arrays) into a shallow observable structure\n */\n shallow: Annotation & PropertyDecorator & ClassAccessorDecorator & ClassFieldDecorator\n deep: Annotation & PropertyDecorator & ClassAccessorDecorator & ClassFieldDecorator\n struct: Annotation & PropertyDecorator & ClassAccessorDecorator & ClassFieldDecorator\n}\n\nconst observableFactories: IObservableFactory = {\n box(value: T, options?: CreateObservableOptions): IObservableValue {\n const o = asCreateObservableOptions(options)\n return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals)\n },\n array(initialValues?: T[], options?: CreateObservableOptions): IObservableArray {\n const o = asCreateObservableOptions(options)\n return (\n globalState.useProxies === false || o.proxy === false\n ? createLegacyArray\n : createObservableArray\n )(initialValues, getEnhancerFromOptions(o), o.name)\n },\n map(\n initialValues?: IObservableMapInitialValues,\n options?: CreateObservableOptions\n ): ObservableMap {\n const o = asCreateObservableOptions(options)\n return new ObservableMap(initialValues, getEnhancerFromOptions(o), o.name)\n },\n set(\n initialValues?: IObservableSetInitialValues,\n options?: CreateObservableOptions\n ): ObservableSet {\n const o = asCreateObservableOptions(options)\n return new ObservableSet(initialValues, getEnhancerFromOptions(o), o.name)\n },\n object(\n props: T,\n decorators?: AnnotationsMap,\n options?: CreateObservableOptions\n ): T {\n return initObservable(() =>\n extendObservable(\n globalState.useProxies === false || options?.proxy === false\n ? asObservableObject({}, options)\n : asDynamicObservableObject({}, options),\n props,\n decorators\n )\n )\n },\n ref: createDecoratorAnnotation(observableRefAnnotation),\n shallow: createDecoratorAnnotation(observableShallowAnnotation),\n deep: observableDecoratorAnnotation,\n struct: createDecoratorAnnotation(observableStructAnnotation)\n} as any\n\n// eslint-disable-next-line\nexport var observable: IObservableFactory = assign(createObservable, observableFactories)\n","import {\n $mobx,\n IIsObservableObject,\n ObservableObjectAdministration,\n warnAboutProxyRequirement,\n assertProxies,\n die,\n isStringish,\n globalState,\n CreateObservableOptions,\n asObservableObject\n} from \"../internal\"\n\nfunction getAdm(target): ObservableObjectAdministration {\n return target[$mobx]\n}\n\n// Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\nconst objectProxyTraps: ProxyHandler = {\n has(target: IIsObservableObject, name: PropertyKey): boolean {\n if (__DEV__ && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\n \"detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.\"\n )\n }\n return getAdm(target).has_(name)\n },\n get(target: IIsObservableObject, name: PropertyKey): any {\n return getAdm(target).get_(name)\n },\n set(target: IIsObservableObject, name: PropertyKey, value: any): boolean {\n if (!isStringish(name)) {\n return false\n }\n if (__DEV__ && !getAdm(target).values_.has(name)) {\n warnAboutProxyRequirement(\n \"add a new observable property through direct assignment. Use 'set' from 'mobx' instead.\"\n )\n }\n // null (intercepted) -> true (success)\n return getAdm(target).set_(name, value, true) ?? true\n },\n deleteProperty(target: IIsObservableObject, name: PropertyKey): boolean {\n if (__DEV__) {\n warnAboutProxyRequirement(\n \"delete properties from an observable object. Use 'remove' from 'mobx' instead.\"\n )\n }\n if (!isStringish(name)) {\n return false\n }\n // null (intercepted) -> true (success)\n return getAdm(target).delete_(name, true) ?? true\n },\n defineProperty(\n target: IIsObservableObject,\n name: PropertyKey,\n descriptor: PropertyDescriptor\n ): boolean {\n if (__DEV__) {\n warnAboutProxyRequirement(\n \"define property on an observable object. Use 'defineProperty' from 'mobx' instead.\"\n )\n }\n // null (intercepted) -> true (success)\n return getAdm(target).defineProperty_(name, descriptor) ?? true\n },\n ownKeys(target: IIsObservableObject): ArrayLike {\n if (__DEV__ && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\n \"iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.\"\n )\n }\n return getAdm(target).ownKeys_()\n },\n preventExtensions(target) {\n die(13)\n }\n}\n\nexport function asDynamicObservableObject(\n target: any,\n options?: CreateObservableOptions\n): IIsObservableObject {\n assertProxies()\n target = asObservableObject(target, options)\n return (target[$mobx].proxy_ ??= new Proxy(target, objectProxyTraps))\n}\n","import {\n ComputedValue,\n IComputedValueOptions,\n Annotation,\n storeAnnotation,\n createDecoratorAnnotation,\n isStringish,\n isPlainObject,\n isFunction,\n die,\n IComputedValue,\n createComputedAnnotation,\n comparer,\n is20223Decorator\n} from \"../internal\"\n\nimport type { ClassGetterDecorator } from \"../types/decorator_fills\"\n\nexport const COMPUTED = \"computed\"\nexport const COMPUTED_STRUCT = \"computed.struct\"\n\nexport interface IComputedFactory extends Annotation, PropertyDecorator, ClassGetterDecorator {\n // @computed(opts)\n (options: IComputedValueOptions): Annotation & PropertyDecorator & ClassGetterDecorator\n // computed(fn, opts)\n (func: () => T, options?: IComputedValueOptions): IComputedValue\n\n struct: Annotation & PropertyDecorator & ClassGetterDecorator\n}\n\nconst computedAnnotation = createComputedAnnotation(COMPUTED)\nconst computedStructAnnotation = createComputedAnnotation(COMPUTED_STRUCT, {\n equals: comparer.structural\n})\n\n/**\n * Decorator for class properties: @computed get value() { return expr; }.\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\n */\nexport const computed: IComputedFactory = function computed(arg1, arg2) {\n if (is20223Decorator(arg2)) {\n // @computed (2022.3 Decorators)\n return computedAnnotation.decorate_20223_(arg1, arg2)\n }\n if (isStringish(arg2)) {\n // @computed\n return storeAnnotation(arg1, arg2, computedAnnotation)\n }\n if (isPlainObject(arg1)) {\n // @computed({ options })\n return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1))\n }\n\n // computed(expr, options?)\n if (__DEV__) {\n if (!isFunction(arg1)) {\n die(\"First argument to `computed` should be an expression.\")\n }\n if (isFunction(arg2)) {\n die(\n \"A setter as second argument is no longer supported, use `{ set: fn }` option instead\"\n )\n }\n }\n const opts: IComputedValueOptions = isPlainObject(arg2) ? arg2 : {}\n opts.get = arg1\n opts.name ||= arg1.name || \"\" /* for generated name */\n\n return new ComputedValue(opts)\n} as any\n\nObject.assign(computed, computedAnnotation)\n\ncomputed.struct = createDecoratorAnnotation(computedStructAnnotation)\n","import {\n IDerivation,\n endBatch,\n globalState,\n isSpyEnabled,\n spyReportEnd,\n spyReportStart,\n startBatch,\n untrackedEnd,\n untrackedStart,\n isFunction,\n allowStateReadsStart,\n allowStateReadsEnd,\n ACTION,\n EMPTY_ARRAY,\n die,\n getDescriptor,\n defineProperty\n} from \"../internal\"\n\n// we don't use globalState for these in order to avoid possible issues with multiple\n// mobx versions\nlet currentActionId = 0\nlet nextActionId = 1\nconst isFunctionNameConfigurable = getDescriptor(() => {}, \"name\")?.configurable ?? false\n\n// we can safely recycle this object\nconst tmpNameDescriptor: PropertyDescriptor = {\n value: \"action\",\n configurable: true,\n writable: false,\n enumerable: false\n}\n\nexport function createAction(\n actionName: string,\n fn: Function,\n autoAction: boolean = false,\n ref?: Object\n): Function {\n if (__DEV__) {\n if (!isFunction(fn)) {\n die(\"`action` can only be invoked on functions\")\n }\n if (typeof actionName !== \"string\" || !actionName) {\n die(`actions should have valid names, got: '${actionName}'`)\n }\n }\n function res() {\n return executeAction(actionName, autoAction, fn, ref || this, arguments)\n }\n res.isMobxAction = true\n res.toString = () => fn.toString()\n if (isFunctionNameConfigurable) {\n tmpNameDescriptor.value = actionName\n defineProperty(res, \"name\", tmpNameDescriptor)\n }\n return res\n}\n\nexport function executeAction(\n actionName: string,\n canRunAsDerivation: boolean,\n fn: Function,\n scope?: any,\n args?: IArguments\n) {\n const runInfo = _startAction(actionName, canRunAsDerivation, scope, args)\n try {\n return fn.apply(scope, args)\n } catch (err) {\n runInfo.error_ = err\n throw err\n } finally {\n _endAction(runInfo)\n }\n}\n\nexport interface IActionRunInfo {\n prevDerivation_: IDerivation | null\n prevAllowStateChanges_: boolean\n prevAllowStateReads_: boolean\n notifySpy_: boolean\n startTime_: number\n error_?: any\n parentActionId_: number\n actionId_: number\n runAsAction_?: boolean\n}\n\nexport function _startAction(\n actionName: string,\n canRunAsDerivation: boolean, // true for autoAction\n scope: any,\n args?: IArguments\n): IActionRunInfo {\n const notifySpy_ = __DEV__ && isSpyEnabled() && !!actionName\n let startTime_: number = 0\n if (__DEV__ && notifySpy_) {\n startTime_ = Date.now()\n const flattenedArgs = args ? Array.from(args) : EMPTY_ARRAY\n spyReportStart({\n type: ACTION,\n name: actionName,\n object: scope,\n arguments: flattenedArgs\n })\n }\n const prevDerivation_ = globalState.trackingDerivation\n const runAsAction = !canRunAsDerivation || !prevDerivation_\n startBatch()\n let prevAllowStateChanges_ = globalState.allowStateChanges // by default preserve previous allow\n if (runAsAction) {\n untrackedStart()\n prevAllowStateChanges_ = allowStateChangesStart(true)\n }\n const prevAllowStateReads_ = allowStateReadsStart(true)\n const runInfo = {\n runAsAction_: runAsAction,\n prevDerivation_,\n prevAllowStateChanges_,\n prevAllowStateReads_,\n notifySpy_,\n startTime_,\n actionId_: nextActionId++,\n parentActionId_: currentActionId\n }\n currentActionId = runInfo.actionId_\n return runInfo\n}\n\nexport function _endAction(runInfo: IActionRunInfo) {\n if (currentActionId !== runInfo.actionId_) {\n die(30)\n }\n currentActionId = runInfo.parentActionId_\n\n if (runInfo.error_ !== undefined) {\n globalState.suppressReactionErrors = true\n }\n allowStateChangesEnd(runInfo.prevAllowStateChanges_)\n allowStateReadsEnd(runInfo.prevAllowStateReads_)\n endBatch()\n if (runInfo.runAsAction_) {\n untrackedEnd(runInfo.prevDerivation_)\n }\n if (__DEV__ && runInfo.notifySpy_) {\n spyReportEnd({ time: Date.now() - runInfo.startTime_ })\n }\n globalState.suppressReactionErrors = false\n}\n\nexport function allowStateChanges(allowStateChanges: boolean, func: () => T): T {\n const prev = allowStateChangesStart(allowStateChanges)\n try {\n return func()\n } finally {\n allowStateChangesEnd(prev)\n }\n}\n\nexport function allowStateChangesStart(allowStateChanges: boolean) {\n const prev = globalState.allowStateChanges\n globalState.allowStateChanges = allowStateChanges\n return prev\n}\n\nexport function allowStateChangesEnd(prev: boolean) {\n globalState.allowStateChanges = prev\n}\n","import {\n Atom,\n IEnhancer,\n IInterceptable,\n IEqualsComparer,\n IInterceptor,\n IListenable,\n Lambda,\n checkIfStateModificationsAreAllowed,\n comparer,\n createInstanceofPredicate,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isSpyEnabled,\n notifyListeners,\n registerInterceptor,\n registerListener,\n spyReport,\n spyReportEnd,\n spyReportStart,\n toPrimitive,\n globalState,\n IUNCHANGED,\n UPDATE\n} from \"../internal\"\n\nexport interface IValueWillChange {\n object: IObservableValue\n type: \"update\"\n newValue: T\n}\n\nexport type IValueDidChange = {\n type: \"update\"\n observableKind: \"value\"\n object: IObservableValue\n debugObjectName: string\n newValue: T\n oldValue: T | undefined\n}\nexport type IBoxDidChange =\n | {\n type: \"create\"\n observableKind: \"value\"\n object: IObservableValue\n debugObjectName: string\n newValue: T\n }\n | IValueDidChange\n\nexport interface IObservableValue {\n get(): T\n set(value: T): void\n}\n\nconst CREATE = \"create\"\n\nexport class ObservableValue\n extends Atom\n implements IObservableValue, IInterceptable>, IListenable\n{\n hasUnreportedChange_ = false\n interceptors_\n changeListeners_\n value_\n dehancer: any\n\n constructor(\n value: T,\n public enhancer: IEnhancer,\n public name_ = __DEV__ ? \"ObservableValue@\" + getNextId() : \"ObservableValue\",\n notifySpy = true,\n private equals: IEqualsComparer = comparer.default\n ) {\n super(name_)\n this.value_ = enhancer(value, undefined, name_)\n if (__DEV__ && notifySpy && isSpyEnabled()) {\n // only notify spy if this is a stand-alone observable\n spyReport({\n type: CREATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue: \"\" + this.value_\n })\n }\n }\n\n private dehanceValue(value: T): T {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n public set(newValue: T) {\n const oldValue = this.value_\n newValue = this.prepareNewValue_(newValue) as any\n if (newValue !== globalState.UNCHANGED) {\n const notifySpy = isSpyEnabled()\n if (__DEV__ && notifySpy) {\n spyReportStart({\n type: UPDATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue,\n oldValue\n })\n }\n this.setNewValue_(newValue)\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n }\n\n private prepareNewValue_(newValue): T | IUNCHANGED {\n checkIfStateModificationsAreAllowed(this)\n if (hasInterceptors(this)) {\n const change = interceptChange>(this, {\n object: this,\n type: UPDATE,\n newValue\n })\n if (!change) {\n return globalState.UNCHANGED\n }\n newValue = change.newValue\n }\n // apply modifier\n newValue = this.enhancer(newValue, this.value_, this.name_)\n return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue\n }\n\n setNewValue_(newValue: T) {\n const oldValue = this.value_\n this.value_ = newValue\n this.reportChanged()\n if (hasListeners(this)) {\n notifyListeners(this, {\n type: UPDATE,\n object: this,\n newValue,\n oldValue\n })\n }\n }\n\n public get(): T {\n this.reportObserved()\n return this.dehanceValue(this.value_)\n }\n\n intercept_(handler: IInterceptor>): Lambda {\n return registerInterceptor(this, handler)\n }\n\n observe_(listener: (change: IValueDidChange) => void, fireImmediately?: boolean): Lambda {\n if (fireImmediately) {\n listener({\n observableKind: \"value\",\n debugObjectName: this.name_,\n object: this,\n type: UPDATE,\n newValue: this.value_,\n oldValue: undefined\n })\n }\n return registerListener(this, listener)\n }\n\n raw() {\n // used by MST ot get undehanced value\n return this.value_\n }\n\n toJSON() {\n return this.get()\n }\n\n toString() {\n return `${this.name_}[${this.value_}]`\n }\n\n valueOf(): T {\n return toPrimitive(this.get())\n }\n\n [Symbol.toPrimitive]() {\n return this.valueOf()\n }\n}\n\nexport const isObservableValue = createInstanceofPredicate(\"ObservableValue\", ObservableValue) as (\n x: any\n) => x is IObservableValue\n","import {\n CaughtException,\n IDerivation,\n IDerivationState_,\n IEqualsComparer,\n IObservable,\n Lambda,\n TraceMode,\n autorun,\n clearObserving,\n comparer,\n createAction,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n globalState,\n isCaughtException,\n isSpyEnabled,\n propagateChangeConfirmed,\n propagateMaybeChanged,\n reportObserved,\n shouldCompute,\n spyReport,\n startBatch,\n toPrimitive,\n trackDerivedFunction,\n untrackedEnd,\n untrackedStart,\n UPDATE,\n die,\n allowStateChangesStart,\n allowStateChangesEnd\n} from \"../internal\"\n\nexport interface IComputedValue {\n get(): T\n set(value: T): void\n}\n\nexport interface IComputedValueOptions {\n get?: () => T\n set?: (value: T) => void\n name?: string\n equals?: IEqualsComparer\n context?: any\n requiresReaction?: boolean\n keepAlive?: boolean\n}\n\nexport type IComputedDidChange = {\n type: \"update\"\n observableKind: \"computed\"\n object: unknown\n debugObjectName: string\n newValue: T\n oldValue: T | undefined\n}\n\nfunction getFlag(flags: number, mask: number) {\n return !!(flags & mask)\n}\nfunction setFlag(flags: number, mask: number, newValue: boolean): number {\n if (newValue) {\n flags |= mask\n } else {\n flags &= ~mask\n }\n return flags\n}\n\n/**\n * A node in the state dependency root that observes other nodes, and can be observed itself.\n *\n * ComputedValue will remember the result of the computation for the duration of the batch, or\n * while being observed.\n *\n * During this time it will recompute only when one of its direct dependencies changed,\n * but only when it is being accessed with `ComputedValue.get()`.\n *\n * Implementation description:\n * 1. First time it's being accessed it will compute and remember result\n * give back remembered result until 2. happens\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\n * 3. When it's being accessed, recompute if any shallow dependency changed.\n * if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\n * go to step 2. either way\n *\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\n */\nexport class ComputedValue implements IObservable, IComputedValue, IDerivation {\n dependenciesState_ = IDerivationState_.NOT_TRACKING_\n observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n newObserving_ = null // during tracking it's an array with new observed observers\n observers_ = new Set()\n diffValue_ = 0\n runId_ = 0\n lastAccessedBy_ = 0\n lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n unboundDepsCount_ = 0\n protected value_: T | undefined | CaughtException = new CaughtException(null)\n name_: string\n triggeredBy_?: string\n\n private static readonly isComputingMask_ = 0b0001\n private static readonly isRunningSetterMask_ = 0b0010\n private static readonly isBeingObservedMask_ = 0b0100\n private static readonly isPendingUnobservationMask_ = 0b1000\n private flags_ = 0b0000\n\n derivation: () => T // N.B: unminified as it is used by MST\n setter_?: (value: T) => void\n isTracing_: TraceMode = TraceMode.NONE\n scope_: Object | undefined\n private equals_: IEqualsComparer\n private requiresReaction_: boolean | undefined\n keepAlive_: boolean\n\n /**\n * Create a new computed value based on a function expression.\n *\n * The `name` property is for debug purposes only.\n *\n * The `equals` property specifies the comparer function to use to determine if a newly produced\n * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\n * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\n * Structural comparison can be convenient if you always produce a new aggregated object and\n * don't want to notify observers if it is structurally the same.\n * This is useful for working with vectors, mouse coordinates etc.\n */\n constructor(options: IComputedValueOptions) {\n if (!options.get) {\n die(31)\n }\n this.derivation = options.get!\n this.name_ = options.name || (__DEV__ ? \"ComputedValue@\" + getNextId() : \"ComputedValue\")\n if (options.set) {\n this.setter_ = createAction(\n __DEV__ ? this.name_ + \"-setter\" : \"ComputedValue-setter\",\n options.set\n ) as any\n }\n this.equals_ =\n options.equals ||\n ((options as any).compareStructural || (options as any).struct\n ? comparer.structural\n : comparer.default)\n this.scope_ = options.context\n this.requiresReaction_ = options.requiresReaction\n this.keepAlive_ = !!options.keepAlive\n }\n\n onBecomeStale_() {\n propagateMaybeChanged(this)\n }\n\n public onBOL: Set | undefined\n public onBUOL: Set | undefined\n\n public onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(listener => listener())\n }\n }\n\n public onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(listener => listener())\n }\n }\n\n // to check for cycles\n private get isComputing(): boolean {\n return getFlag(this.flags_, ComputedValue.isComputingMask_)\n }\n private set isComputing(newValue: boolean) {\n this.flags_ = setFlag(this.flags_, ComputedValue.isComputingMask_, newValue)\n }\n\n private get isRunningSetter(): boolean {\n return getFlag(this.flags_, ComputedValue.isRunningSetterMask_)\n }\n private set isRunningSetter(newValue: boolean) {\n this.flags_ = setFlag(this.flags_, ComputedValue.isRunningSetterMask_, newValue)\n }\n\n get isBeingObserved(): boolean {\n return getFlag(this.flags_, ComputedValue.isBeingObservedMask_)\n }\n set isBeingObserved(newValue: boolean) {\n this.flags_ = setFlag(this.flags_, ComputedValue.isBeingObservedMask_, newValue)\n }\n\n get isPendingUnobservation(): boolean {\n return getFlag(this.flags_, ComputedValue.isPendingUnobservationMask_)\n }\n set isPendingUnobservation(newValue: boolean) {\n this.flags_ = setFlag(this.flags_, ComputedValue.isPendingUnobservationMask_, newValue)\n }\n\n /**\n * Returns the current value of this computed value.\n * Will evaluate its computation first if needed.\n */\n public get(): T {\n if (this.isComputing) {\n die(32, this.name_, this.derivation)\n }\n if (\n globalState.inBatch === 0 &&\n // !globalState.trackingDerivatpion &&\n this.observers_.size === 0 &&\n !this.keepAlive_\n ) {\n if (shouldCompute(this)) {\n this.warnAboutUntrackedRead_()\n startBatch() // See perf test 'computed memoization'\n this.value_ = this.computeValue_(false)\n endBatch()\n }\n } else {\n reportObserved(this)\n if (shouldCompute(this)) {\n let prevTrackingContext = globalState.trackingContext\n if (this.keepAlive_ && !prevTrackingContext) {\n globalState.trackingContext = this\n }\n if (this.trackAndCompute()) {\n propagateChangeConfirmed(this)\n }\n globalState.trackingContext = prevTrackingContext\n }\n }\n const result = this.value_!\n\n if (isCaughtException(result)) {\n throw result.cause\n }\n return result\n }\n\n public set(value: T) {\n if (this.setter_) {\n if (this.isRunningSetter) {\n die(33, this.name_)\n }\n this.isRunningSetter = true\n try {\n this.setter_.call(this.scope_, value)\n } finally {\n this.isRunningSetter = false\n }\n } else {\n die(34, this.name_)\n }\n }\n\n trackAndCompute(): boolean {\n // N.B: unminified as it is used by MST\n const oldValue = this.value_\n const wasSuspended =\n /* see #1208 */ this.dependenciesState_ === IDerivationState_.NOT_TRACKING_\n const newValue = this.computeValue_(true)\n\n const changed =\n wasSuspended ||\n isCaughtException(oldValue) ||\n isCaughtException(newValue) ||\n !this.equals_(oldValue, newValue)\n\n if (changed) {\n this.value_ = newValue\n\n if (__DEV__ && isSpyEnabled()) {\n spyReport({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n object: this.scope_,\n type: \"update\",\n oldValue,\n newValue\n } as IComputedDidChange)\n }\n }\n\n return changed\n }\n\n computeValue_(track: boolean) {\n this.isComputing = true\n // don't allow state changes during computation\n const prev = allowStateChangesStart(false)\n let res: T | CaughtException\n if (track) {\n res = trackDerivedFunction(this, this.derivation, this.scope_)\n } else {\n if (globalState.disableErrorBoundaries === true) {\n res = this.derivation.call(this.scope_)\n } else {\n try {\n res = this.derivation.call(this.scope_)\n } catch (e) {\n res = new CaughtException(e)\n }\n }\n }\n allowStateChangesEnd(prev)\n this.isComputing = false\n return res\n }\n\n suspend_() {\n if (!this.keepAlive_) {\n clearObserving(this)\n this.value_ = undefined // don't hold on to computed value!\n if (__DEV__ && this.isTracing_ !== TraceMode.NONE) {\n console.log(\n `[mobx.trace] Computed value '${this.name_}' was suspended and it will recompute on the next access.`\n )\n }\n }\n }\n\n observe_(listener: (change: IComputedDidChange) => void, fireImmediately?: boolean): Lambda {\n let firstTime = true\n let prevValue: T | undefined = undefined\n return autorun(() => {\n // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n let newValue = this.get()\n if (!firstTime || fireImmediately) {\n const prevU = untrackedStart()\n listener({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n newValue,\n oldValue: prevValue\n })\n untrackedEnd(prevU)\n }\n firstTime = false\n prevValue = newValue\n })\n }\n\n warnAboutUntrackedRead_() {\n if (!__DEV__) {\n return\n }\n if (this.isTracing_ !== TraceMode.NONE) {\n console.log(\n `[mobx.trace] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n )\n }\n if (\n typeof this.requiresReaction_ === \"boolean\"\n ? this.requiresReaction_\n : globalState.computedRequiresReaction\n ) {\n console.warn(\n `[mobx] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n )\n }\n }\n\n toString() {\n return `${this.name_}[${this.derivation.toString()}]`\n }\n\n valueOf(): T {\n return toPrimitive(this.get())\n }\n\n [Symbol.toPrimitive]() {\n return this.valueOf()\n }\n}\n\nexport const isComputedValue = createInstanceofPredicate(\"ComputedValue\", ComputedValue)\n","import {\n Lambda,\n ComputedValue,\n IDependencyTree,\n IDerivation,\n IDerivationState_,\n TraceMode,\n getDependencyTree,\n globalState,\n runReactions,\n checkIfStateReadsAreAllowed\n} from \"../internal\"\n\nexport interface IDepTreeNode {\n name_: string\n observing_?: IObservable[]\n}\n\nexport interface IObservable extends IDepTreeNode {\n diffValue_: number\n /**\n * Id of the derivation *run* that last accessed this observable.\n * If this id equals the *run* id of the current derivation,\n * the dependency is already established\n */\n lastAccessedBy_: number\n isBeingObserved: boolean\n\n lowestObserverState_: IDerivationState_ // Used to avoid redundant propagations\n isPendingUnobservation: boolean // Used to push itself to global.pendingUnobservations at most once per batch.\n\n observers_: Set\n\n onBUO(): void\n onBO(): void\n\n onBUOL: Set | undefined\n onBOL: Set | undefined\n}\n\nexport function hasObservers(observable: IObservable): boolean {\n return observable.observers_ && observable.observers_.size > 0\n}\n\nexport function getObservers(observable: IObservable): Set {\n return observable.observers_\n}\n\n// function invariantObservers(observable: IObservable) {\n// const list = observable.observers\n// const map = observable.observersIndexes\n// const l = list.length\n// for (let i = 0; i < l; i++) {\n// const id = list[i].__mapid\n// if (i) {\n// invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n// } else {\n// invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n// }\n// }\n// invariant(\n// list.length === 0 || Object.keys(map).length === list.length - 1,\n// \"INTERNAL ERROR there is no junk in map\"\n// )\n// }\nexport function addObserver(observable: IObservable, node: IDerivation) {\n // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n // invariantObservers(observable);\n\n observable.observers_.add(node)\n if (observable.lowestObserverState_ > node.dependenciesState_) {\n observable.lowestObserverState_ = node.dependenciesState_\n }\n\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\n\nexport function removeObserver(observable: IObservable, node: IDerivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n // invariantObservers(observable);\n observable.observers_.delete(node)\n if (observable.observers_.size === 0) {\n // deleting last observer\n queueForUnobservation(observable)\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\n\nexport function queueForUnobservation(observable: IObservable) {\n if (observable.isPendingUnobservation === false) {\n // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n observable.isPendingUnobservation = true\n globalState.pendingUnobservations.push(observable)\n }\n}\n\n/**\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\n * Avoids unnecessary recalculations.\n */\nexport function startBatch() {\n globalState.inBatch++\n}\n\nexport function endBatch() {\n if (--globalState.inBatch === 0) {\n runReactions()\n // the batch is actually about to finish, all unobserving should happen here.\n const list = globalState.pendingUnobservations\n for (let i = 0; i < list.length; i++) {\n const observable = list[i]\n observable.isPendingUnobservation = false\n if (observable.observers_.size === 0) {\n if (observable.isBeingObserved) {\n // if this observable had reactive observers, trigger the hooks\n observable.isBeingObserved = false\n observable.onBUO()\n }\n if (observable instanceof ComputedValue) {\n // computed values are automatically teared down when the last observer leaves\n // this process happens recursively, this computed might be the last observabe of another, etc..\n observable.suspend_()\n }\n }\n }\n globalState.pendingUnobservations = []\n }\n}\n\nexport function reportObserved(observable: IObservable): boolean {\n checkIfStateReadsAreAllowed(observable)\n\n const derivation = globalState.trackingDerivation\n if (derivation !== null) {\n /**\n * Simple optimization, give each derivation run an unique id (runId)\n * Check if last time this observable was accessed the same runId is used\n * if this is the case, the relation is already known\n */\n if (derivation.runId_ !== observable.lastAccessedBy_) {\n observable.lastAccessedBy_ = derivation.runId_\n // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n derivation.newObserving_![derivation.unboundDepsCount_++] = observable\n if (!observable.isBeingObserved && globalState.trackingContext) {\n observable.isBeingObserved = true\n observable.onBO()\n }\n }\n return observable.isBeingObserved\n } else if (observable.observers_.size === 0 && globalState.inBatch > 0) {\n queueForUnobservation(observable)\n }\n\n return false\n}\n\n// function invariantLOS(observable: IObservable, msg: string) {\n// // it's expensive so better not run it in produciton. but temporarily helpful for testing\n// const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n// if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n// throw new Error(\n// \"lowestObserverState is wrong for \" +\n// msg +\n// \" because \" +\n// min +\n// \" < \" +\n// observable.lowestObserverState\n// )\n// }\n\n/**\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\n * It will propagate changes to observers from previous run\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\n * Hopefully self reruning autoruns aren't a feature people should depend on\n * Also most basic use cases should be ok\n */\n\n// Called by Atom when its value changes\nexport function propagateChanged(observable: IObservable) {\n // invariantLOS(observable, \"changed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_\n\n // Ideally we use for..of here, but the downcompiled version is really slow...\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable)\n }\n d.onBecomeStale_()\n }\n d.dependenciesState_ = IDerivationState_.STALE_\n })\n // invariantLOS(observable, \"changed end\");\n}\n\n// Called by ComputedValue when it recalculate and its value changed\nexport function propagateChangeConfirmed(observable: IObservable) {\n // invariantLOS(observable, \"confirmed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_\n\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) {\n d.dependenciesState_ = IDerivationState_.STALE_\n if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable)\n }\n } else if (\n d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n ) {\n observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n }\n })\n // invariantLOS(observable, \"confirmed end\");\n}\n\n// Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nexport function propagateMaybeChanged(observable: IObservable) {\n // invariantLOS(observable, \"maybe start\");\n if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_\n\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_\n d.onBecomeStale_()\n }\n })\n // invariantLOS(observable, \"maybe end\");\n}\n\nfunction logTraceInfo(derivation: IDerivation, observable: IObservable) {\n console.log(\n `[mobx.trace] '${derivation.name_}' is invalidated due to a change in: '${observable.name_}'`\n )\n if (derivation.isTracing_ === TraceMode.BREAK) {\n const lines = []\n printDepTree(getDependencyTree(derivation), lines, 1)\n\n // prettier-ignore\n new Function(\n`debugger;\n/*\nTracing '${derivation.name_}'\n\nYou are entering this break point because derivation '${derivation.name_}' is being traced and '${observable.name_}' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n${derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\"}\n\nThe dependencies for this derivation are:\n\n${lines.join(\"\\n\")}\n*/\n `)()\n }\n}\n\nfunction printDepTree(tree: IDependencyTree, lines: string[], depth: number) {\n if (lines.length >= 1000) {\n lines.push(\"(and many more)\")\n return\n }\n lines.push(`${\"\\t\".repeat(depth - 1)}${tree.name}`)\n if (tree.dependencies) {\n tree.dependencies.forEach(child => printDepTree(child, lines, depth + 1))\n }\n}\n","import {\n IAtom,\n IDepTreeNode,\n IObservable,\n addObserver,\n globalState,\n isComputedValue,\n removeObserver\n} from \"../internal\"\n\nexport enum IDerivationState_ {\n // before being run or (outside batch and not being observed)\n // at this point derivation is not holding any data about dependency tree\n NOT_TRACKING_ = -1,\n // no shallow dependency changed since last computation\n // won't recalculate derivation\n // this is what makes mobx fast\n UP_TO_DATE_ = 0,\n // some deep dependency changed, but don't know if shallow dependency changed\n // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n // currently only ComputedValue will propagate POSSIBLY_STALE\n //\n // having this state is second big optimization:\n // don't have to recompute on every dependency change, but only when it's needed\n POSSIBLY_STALE_ = 1,\n // A shallow dependency has changed since last computation and the derivation\n // will need to recompute when it's needed next.\n STALE_ = 2\n}\n\nexport enum TraceMode {\n NONE,\n LOG,\n BREAK\n}\n\n/**\n * A derivation is everything that can be derived from the state (all the atoms) in a pure manner.\n * See https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n */\nexport interface IDerivation extends IDepTreeNode {\n observing_: IObservable[]\n newObserving_: null | IObservable[]\n dependenciesState_: IDerivationState_\n /**\n * Id of the current run of a derivation. Each time the derivation is tracked\n * this number is increased by one. This number is globally unique\n */\n runId_: number\n /**\n * amount of dependencies used by the derivation in this run, which has not been bound yet.\n */\n unboundDepsCount_: number\n onBecomeStale_(): void\n isTracing_: TraceMode\n\n /**\n * warn if the derivation has no dependencies after creation/update\n */\n requiresObservable_?: boolean\n}\n\nexport class CaughtException {\n constructor(public cause: any) {\n // Empty\n }\n}\n\nexport function isCaughtException(e: any): e is CaughtException {\n return e instanceof CaughtException\n}\n\n/**\n * Finds out whether any dependency of the derivation has actually changed.\n * If dependenciesState is 1 then it will recalculate dependencies,\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\n *\n * By iterating over the dependencies in the same order that they were reported and\n * stopping on the first change, all the recalculations are only called for ComputedValues\n * that will be tracked by derivation. That is because we assume that if the first x\n * dependencies of the derivation doesn't change then the derivation should run the same way\n * up until accessing x-th dependency.\n */\nexport function shouldCompute(derivation: IDerivation): boolean {\n switch (derivation.dependenciesState_) {\n case IDerivationState_.UP_TO_DATE_:\n return false\n case IDerivationState_.NOT_TRACKING_:\n case IDerivationState_.STALE_:\n return true\n case IDerivationState_.POSSIBLY_STALE_: {\n // state propagation can occur outside of action/reactive context #2195\n const prevAllowStateReads = allowStateReadsStart(true)\n const prevUntracked = untrackedStart() // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n const obs = derivation.observing_,\n l = obs.length\n for (let i = 0; i < l; i++) {\n const obj = obs[i]\n if (isComputedValue(obj)) {\n if (globalState.disableErrorBoundaries) {\n obj.get()\n } else {\n try {\n obj.get()\n } catch (e) {\n // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return true\n }\n }\n // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n // and `derivation` is an observer of `obj`\n // invariantShouldCompute(derivation)\n if ((derivation.dependenciesState_ as any) === IDerivationState_.STALE_) {\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return true\n }\n }\n }\n changeDependenciesStateTo0(derivation)\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return false\n }\n }\n}\n\nexport function isComputingDerivation() {\n return globalState.trackingDerivation !== null // filter out actions inside computations\n}\n\nexport function checkIfStateModificationsAreAllowed(atom: IAtom) {\n if (!__DEV__) {\n return\n }\n const hasObservers = atom.observers_.size > 0\n // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n if (\n !globalState.allowStateChanges &&\n (hasObservers || globalState.enforceActions === \"always\")\n ) {\n console.warn(\n \"[MobX] \" +\n (globalState.enforceActions\n ? \"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: \"\n : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: \") +\n atom.name_\n )\n }\n}\n\nexport function checkIfStateReadsAreAllowed(observable: IObservable) {\n if (__DEV__ && !globalState.allowStateReads && globalState.observableRequiresReaction) {\n console.warn(\n `[mobx] Observable '${observable.name_}' being read outside a reactive context.`\n )\n }\n}\n\n/**\n * Executes the provided function `f` and tracks which observables are being accessed.\n * The tracking information is stored on the `derivation` object and the derivation is registered\n * as observer of any of the accessed observables.\n */\nexport function trackDerivedFunction(derivation: IDerivation, f: () => T, context: any) {\n const prevAllowStateReads = allowStateReadsStart(true)\n changeDependenciesStateTo0(derivation)\n // Preallocate array; will be trimmed by bindDependencies.\n derivation.newObserving_ = new Array(\n // Reserve constant space for initial dependencies, dynamic space otherwise.\n // See https://github.com/mobxjs/mobx/pull/3833\n derivation.runId_ === 0 ? 100 : derivation.observing_.length\n )\n derivation.unboundDepsCount_ = 0\n derivation.runId_ = ++globalState.runId\n const prevTracking = globalState.trackingDerivation\n globalState.trackingDerivation = derivation\n globalState.inBatch++\n let result\n if (globalState.disableErrorBoundaries === true) {\n result = f.call(context)\n } else {\n try {\n result = f.call(context)\n } catch (e) {\n result = new CaughtException(e)\n }\n }\n globalState.inBatch--\n globalState.trackingDerivation = prevTracking\n bindDependencies(derivation)\n\n warnAboutDerivationWithoutDependencies(derivation)\n allowStateReadsEnd(prevAllowStateReads)\n return result\n}\n\nfunction warnAboutDerivationWithoutDependencies(derivation: IDerivation) {\n if (!__DEV__) {\n return\n }\n\n if (derivation.observing_.length !== 0) {\n return\n }\n\n if (\n typeof derivation.requiresObservable_ === \"boolean\"\n ? derivation.requiresObservable_\n : globalState.reactionRequiresObservable\n ) {\n console.warn(\n `[mobx] Derivation '${derivation.name_}' is created/updated without reading any observable value.`\n )\n }\n}\n\n/**\n * diffs newObserving with observing.\n * update observing to be newObserving with unique observables\n * notify observers that become observed/unobserved\n */\nfunction bindDependencies(derivation: IDerivation) {\n // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n const prevObserving = derivation.observing_\n const observing = (derivation.observing_ = derivation.newObserving_!)\n let lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_\n\n // Go through all new observables and check diffValue: (this list can contain duplicates):\n // 0: first occurrence, change to 1 and keep it\n // 1: extra occurrence, drop it\n let i0 = 0,\n l = derivation.unboundDepsCount_\n for (let i = 0; i < l; i++) {\n const dep = observing[i]\n if (dep.diffValue_ === 0) {\n dep.diffValue_ = 1\n if (i0 !== i) {\n observing[i0] = dep\n }\n i0++\n }\n\n // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n // not hitting the condition\n if ((dep as any as IDerivation).dependenciesState_ > lowestNewObservingDerivationState) {\n lowestNewObservingDerivationState = (dep as any as IDerivation).dependenciesState_\n }\n }\n observing.length = i0\n\n derivation.newObserving_ = null // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n\n // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n // 0: it's not in new observables, unobserve it\n // 1: it keeps being observed, don't want to notify it. change to 0\n l = prevObserving.length\n while (l--) {\n const dep = prevObserving[l]\n if (dep.diffValue_ === 0) {\n removeObserver(dep, derivation)\n }\n dep.diffValue_ = 0\n }\n\n // Go through all new observables and check diffValue: (now it should be unique)\n // 0: it was set to 0 in last loop. don't need to do anything.\n // 1: it wasn't observed, let's observe it. set back to 0\n while (i0--) {\n const dep = observing[i0]\n if (dep.diffValue_ === 1) {\n dep.diffValue_ = 0\n addObserver(dep, derivation)\n }\n }\n\n // Some new observed derivations may become stale during this derivation computation\n // so they have had no chance to propagate staleness (#916)\n if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n derivation.dependenciesState_ = lowestNewObservingDerivationState\n derivation.onBecomeStale_()\n }\n}\n\nexport function clearObserving(derivation: IDerivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n const obs = derivation.observing_\n derivation.observing_ = []\n let i = obs.length\n while (i--) {\n removeObserver(obs[i], derivation)\n }\n\n derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_\n}\n\nexport function untracked(action: () => T): T {\n const prev = untrackedStart()\n try {\n return action()\n } finally {\n untrackedEnd(prev)\n }\n}\n\nexport function untrackedStart(): IDerivation | null {\n const prev = globalState.trackingDerivation\n globalState.trackingDerivation = null\n return prev\n}\n\nexport function untrackedEnd(prev: IDerivation | null) {\n globalState.trackingDerivation = prev\n}\n\nexport function allowStateReadsStart(allowStateReads: boolean) {\n const prev = globalState.allowStateReads\n globalState.allowStateReads = allowStateReads\n return prev\n}\n\nexport function allowStateReadsEnd(prev: boolean) {\n globalState.allowStateReads = prev\n}\n\n/**\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\n *\n */\nexport function changeDependenciesStateTo0(derivation: IDerivation) {\n if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n return\n }\n derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_\n\n const obs = derivation.observing_\n let i = obs.length\n while (i--) {\n obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n }\n}\n","import { IDerivation, IObservable, Reaction, die, getGlobal } from \"../internal\"\nimport { ComputedValue } from \"./computedvalue\"\n\n/**\n * These values will persist if global state is reset\n */\nconst persistentKeys: (keyof MobXGlobals)[] = [\n \"mobxGuid\",\n \"spyListeners\",\n \"enforceActions\",\n \"computedRequiresReaction\",\n \"reactionRequiresObservable\",\n \"observableRequiresReaction\",\n \"allowStateReads\",\n \"disableErrorBoundaries\",\n \"runId\",\n \"UNCHANGED\",\n \"useProxies\"\n]\n\nexport type IUNCHANGED = {}\n\nexport class MobXGlobals {\n /**\n * MobXGlobals version.\n * MobX compatiblity with other versions loaded in memory as long as this version matches.\n * It indicates that the global state still stores similar information\n *\n * N.B: this version is unrelated to the package version of MobX, and is only the version of the\n * internal state storage of MobX, and can be the same across many different package versions\n */\n version = 6\n\n /**\n * globally unique token to signal unchanged\n */\n UNCHANGED: IUNCHANGED = {}\n\n /**\n * Currently running derivation\n */\n trackingDerivation: IDerivation | null = null\n\n /**\n * Currently running reaction. This determines if we currently have a reactive context.\n * (Tracking derivation is also set for temporal tracking of computed values inside actions,\n * but trackingReaction can only be set by a form of Reaction)\n */\n trackingContext: Reaction | ComputedValue | null = null\n\n /**\n * Each time a derivation is tracked, it is assigned a unique run-id\n */\n runId = 0\n\n /**\n * 'guid' for general purpose. Will be persisted amongst resets.\n */\n mobxGuid = 0\n\n /**\n * Are we in a batch block? (and how many of them)\n */\n inBatch: number = 0\n\n /**\n * Observables that don't have observers anymore, and are about to be\n * suspended, unless somebody else accesses it in the same batch\n *\n * @type {IObservable[]}\n */\n pendingUnobservations: IObservable[] = []\n\n /**\n * List of scheduled, not yet executed, reactions.\n */\n pendingReactions: Reaction[] = []\n\n /**\n * Are we currently processing reactions?\n */\n isRunningReactions = false\n\n /**\n * Is it allowed to change observables at this point?\n * In general, MobX doesn't allow that when running computations and React.render.\n * To ensure that those functions stay pure.\n */\n allowStateChanges = false\n\n /**\n * Is it allowed to read observables at this point?\n * Used to hold the state needed for `observableRequiresReaction`\n */\n allowStateReads = true\n\n /**\n * If strict mode is enabled, state changes are by default not allowed\n */\n enforceActions: boolean | \"always\" = true\n\n /**\n * Spy callbacks\n */\n spyListeners: { (change: any): void }[] = []\n\n /**\n * Globally attached error handlers that react specifically to errors in reactions\n */\n globalReactionErrorHandlers: ((error: any, derivation: IDerivation) => void)[] = []\n\n /**\n * Warn if computed values are accessed outside a reactive context\n */\n computedRequiresReaction = false\n\n /**\n * (Experimental)\n * Warn if you try to create to derivation / reactive context without accessing any observable.\n */\n reactionRequiresObservable = false\n\n /**\n * (Experimental)\n * Warn if observables are accessed outside a reactive context\n */\n observableRequiresReaction = false\n\n /*\n * Don't catch and rethrow exceptions. This is useful for inspecting the state of\n * the stack when an exception occurs while debugging.\n */\n disableErrorBoundaries = false\n\n /*\n * If true, we are already handling an exception in an action. Any errors in reactions should be suppressed, as\n * they are not the cause, see: https://github.com/mobxjs/mobx/issues/1836\n */\n suppressReactionErrors = false\n\n useProxies = true\n /*\n * print warnings about code that would fail if proxies weren't available\n */\n verifyProxies = false\n\n /**\n * False forces all object's descriptors to\n * writable: true\n * configurable: true\n */\n safeDescriptors = true\n}\n\nlet canMergeGlobalState = true\nlet isolateCalled = false\n\nexport let globalState: MobXGlobals = (function () {\n let global = getGlobal()\n if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals) {\n canMergeGlobalState = false\n }\n if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version) {\n canMergeGlobalState = false\n }\n\n if (!canMergeGlobalState) {\n // Because this is a IIFE we need to let isolateCalled a chance to change\n // so we run it after the event loop completed at least 1 iteration\n setTimeout(() => {\n if (!isolateCalled) {\n die(35)\n }\n }, 1)\n return new MobXGlobals()\n } else if (global.__mobxGlobals) {\n global.__mobxInstanceCount += 1\n if (!global.__mobxGlobals.UNCHANGED) {\n global.__mobxGlobals.UNCHANGED = {}\n } // make merge backward compatible\n return global.__mobxGlobals\n } else {\n global.__mobxInstanceCount = 1\n return (global.__mobxGlobals = new MobXGlobals())\n }\n})()\n\nexport function isolateGlobalState() {\n if (\n globalState.pendingReactions.length ||\n globalState.inBatch ||\n globalState.isRunningReactions\n ) {\n die(36)\n }\n isolateCalled = true\n if (canMergeGlobalState) {\n let global = getGlobal()\n if (--global.__mobxInstanceCount === 0) {\n global.__mobxGlobals = undefined\n }\n globalState = new MobXGlobals()\n }\n}\n\nexport function getGlobalState(): any {\n return globalState\n}\n\n/**\n * For testing purposes only; this will break the internal state of existing observables,\n * but can be used to get back at a stable state after throwing errors\n */\nexport function resetGlobalState() {\n const defaultGlobals = new MobXGlobals()\n for (let key in defaultGlobals) {\n if (persistentKeys.indexOf(key as any) === -1) {\n globalState[key] = defaultGlobals[key]\n }\n }\n globalState.allowStateChanges = !globalState.enforceActions\n}\n","import {\n $mobx,\n IDerivation,\n IDerivationState_,\n IObservable,\n Lambda,\n TraceMode,\n clearObserving,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n globalState,\n isCaughtException,\n isSpyEnabled,\n shouldCompute,\n spyReport,\n spyReportEnd,\n spyReportStart,\n startBatch,\n trace,\n trackDerivedFunction,\n GenericAbortSignal\n} from \"../internal\"\n\n/**\n * Reactions are a special kind of derivations. Several things distinguishes them from normal reactive computations\n *\n * 1) They will always run, whether they are used by other computations or not.\n * This means that they are very suitable for triggering side effects like logging, updating the DOM and making network requests.\n * 2) They are not observable themselves\n * 3) They will always run after any 'normal' derivations\n * 4) They are allowed to change the state and thereby triggering themselves again, as long as they make sure the state propagates to a stable state in a reasonable amount of iterations.\n *\n * The state machine of a Reaction is as follows:\n *\n * 1) after creating, the reaction should be started by calling `runReaction` or by scheduling it (see also `autorun`)\n * 2) the `onInvalidate` handler should somehow result in a call to `this.track(someFunction)`\n * 3) all observables accessed in `someFunction` will be observed by this reaction.\n * 4) as soon as some of the dependencies has changed the Reaction will be rescheduled for another run (after the current mutation or transaction). `isScheduled` will yield true once a dependency is stale and during this period\n * 5) `onInvalidate` will be called, and we are back at step 1.\n *\n */\n\nexport interface IReactionPublic {\n dispose(): void\n trace(enterBreakPoint?: boolean): void\n}\n\nexport interface IReactionDisposer {\n (): void\n [$mobx]: Reaction\n}\n\nexport class Reaction implements IDerivation, IReactionPublic {\n observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n newObserving_: IObservable[] = []\n dependenciesState_ = IDerivationState_.NOT_TRACKING_\n diffValue_ = 0\n runId_ = 0\n unboundDepsCount_ = 0\n isDisposed_ = false\n isScheduled_ = false\n isTrackPending_ = false\n isRunning_ = false\n isTracing_: TraceMode = TraceMode.NONE\n\n constructor(\n public name_: string = __DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\",\n private onInvalidate_: () => void,\n private errorHandler_?: (error: any, derivation: IDerivation) => void,\n public requiresObservable_?\n ) {}\n\n onBecomeStale_() {\n this.schedule_()\n }\n\n schedule_() {\n if (!this.isScheduled_) {\n this.isScheduled_ = true\n globalState.pendingReactions.push(this)\n runReactions()\n }\n }\n\n isScheduled() {\n return this.isScheduled_\n }\n\n /**\n * internal, use schedule() if you intend to kick off a reaction\n */\n runReaction_() {\n if (!this.isDisposed_) {\n startBatch()\n this.isScheduled_ = false\n const prev = globalState.trackingContext\n globalState.trackingContext = this\n if (shouldCompute(this)) {\n this.isTrackPending_ = true\n\n try {\n this.onInvalidate_()\n if (__DEV__ && this.isTrackPending_ && isSpyEnabled()) {\n // onInvalidate didn't trigger track right away..\n spyReport({\n name: this.name_,\n type: \"scheduled-reaction\"\n })\n }\n } catch (e) {\n this.reportExceptionInDerivation_(e)\n }\n }\n globalState.trackingContext = prev\n endBatch()\n }\n }\n\n track(fn: () => void) {\n if (this.isDisposed_) {\n return\n // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n }\n startBatch()\n const notify = isSpyEnabled()\n let startTime\n if (__DEV__ && notify) {\n startTime = Date.now()\n spyReportStart({\n name: this.name_,\n type: \"reaction\"\n })\n }\n this.isRunning_ = true\n const prevReaction = globalState.trackingContext // reactions could create reactions...\n globalState.trackingContext = this\n const result = trackDerivedFunction(this, fn, undefined)\n globalState.trackingContext = prevReaction\n this.isRunning_ = false\n this.isTrackPending_ = false\n if (this.isDisposed_) {\n // disposed during last run. Clean up everything that was bound after the dispose call.\n clearObserving(this)\n }\n if (isCaughtException(result)) {\n this.reportExceptionInDerivation_(result.cause)\n }\n if (__DEV__ && notify) {\n spyReportEnd({\n time: Date.now() - startTime\n })\n }\n endBatch()\n }\n\n reportExceptionInDerivation_(error: any) {\n if (this.errorHandler_) {\n this.errorHandler_(error, this)\n return\n }\n\n if (globalState.disableErrorBoundaries) {\n throw error\n }\n\n const message = __DEV__\n ? `[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '${this}'`\n : `[mobx] uncaught error in '${this}'`\n if (!globalState.suppressReactionErrors) {\n console.error(message, error)\n /** If debugging brought you here, please, read the above message :-). Tnx! */\n } else if (__DEV__) { console.warn(`[mobx] (error in reaction '${this.name_}' suppressed, fix error of causing action below)`) } // prettier-ignore\n\n if (__DEV__ && isSpyEnabled()) {\n spyReport({\n type: \"error\",\n name: this.name_,\n message,\n error: \"\" + error\n })\n }\n\n globalState.globalReactionErrorHandlers.forEach(f => f(error, this))\n }\n\n dispose() {\n if (!this.isDisposed_) {\n this.isDisposed_ = true\n if (!this.isRunning_) {\n // if disposed while running, clean up later. Maybe not optimal, but rare case\n startBatch()\n clearObserving(this)\n endBatch()\n }\n }\n }\n\n getDisposer_(abortSignal?: GenericAbortSignal): IReactionDisposer {\n const dispose = (() => {\n this.dispose()\n abortSignal?.removeEventListener?.(\"abort\", dispose)\n }) as IReactionDisposer\n abortSignal?.addEventListener?.(\"abort\", dispose)\n dispose[$mobx] = this\n\n return dispose\n }\n\n toString() {\n return `Reaction[${this.name_}]`\n }\n\n trace(enterBreakPoint: boolean = false) {\n trace(this, enterBreakPoint)\n }\n}\n\nexport function onReactionError(handler: (error: any, derivation: IDerivation) => void): Lambda {\n globalState.globalReactionErrorHandlers.push(handler)\n return () => {\n const idx = globalState.globalReactionErrorHandlers.indexOf(handler)\n if (idx >= 0) {\n globalState.globalReactionErrorHandlers.splice(idx, 1)\n }\n }\n}\n\n/**\n * Magic number alert!\n * Defines within how many times a reaction is allowed to re-trigger itself\n * until it is assumed that this is gonna be a never ending loop...\n */\nconst MAX_REACTION_ITERATIONS = 100\n\nlet reactionScheduler: (fn: () => void) => void = f => f()\n\nexport function runReactions() {\n // Trampolining, if runReactions are already running, new reactions will be picked up\n if (globalState.inBatch > 0 || globalState.isRunningReactions) {\n return\n }\n reactionScheduler(runReactionsHelper)\n}\n\nfunction runReactionsHelper() {\n globalState.isRunningReactions = true\n const allReactions = globalState.pendingReactions\n let iterations = 0\n\n // While running reactions, new reactions might be triggered.\n // Hence we work with two variables and check whether\n // we converge to no remaining reactions after a while.\n while (allReactions.length > 0) {\n if (++iterations === MAX_REACTION_ITERATIONS) {\n console.error(\n __DEV__\n ? `Reaction doesn't converge to a stable state after ${MAX_REACTION_ITERATIONS} iterations.` +\n ` Probably there is a cycle in the reactive function: ${allReactions[0]}`\n : `[mobx] cycle in reaction: ${allReactions[0]}`\n )\n allReactions.splice(0) // clear reactions\n }\n let remainingReactions = allReactions.splice(0)\n for (let i = 0, l = remainingReactions.length; i < l; i++) {\n remainingReactions[i].runReaction_()\n }\n }\n globalState.isRunningReactions = false\n}\n\nexport const isReaction = createInstanceofPredicate(\"Reaction\", Reaction)\n\nexport function setReactionScheduler(fn: (f: () => void) => void) {\n const baseScheduler = reactionScheduler\n reactionScheduler = f => fn(() => baseScheduler(f))\n}\n","import { IComputedDidChange } from \"./computedvalue\"\nimport { IValueDidChange, IBoxDidChange } from \"./../types/observablevalue\"\nimport { IObjectDidChange } from \"./../types/observableobject\"\nimport { IArrayDidChange } from \"./../types/observablearray\"\nimport { Lambda, globalState, once, ISetDidChange, IMapDidChange } from \"../internal\"\n\nexport function isSpyEnabled() {\n return __DEV__ && !!globalState.spyListeners.length\n}\n\nexport type PureSpyEvent =\n | { type: \"action\"; name: string; object: unknown; arguments: unknown[] }\n | { type: \"scheduled-reaction\"; name: string }\n | { type: \"reaction\"; name: string }\n | { type: \"error\"; name: string; message: string; error: string }\n | IComputedDidChange\n | IObjectDidChange\n | IArrayDidChange\n | IMapDidChange\n | ISetDidChange\n | IValueDidChange\n | IBoxDidChange\n | { type: \"report-end\"; spyReportEnd: true; time?: number }\n\ntype SpyEvent = PureSpyEvent & { spyReportStart?: true }\n\nexport function spyReport(event: SpyEvent) {\n if (!__DEV__) {\n return\n } // dead code elimination can do the rest\n if (!globalState.spyListeners.length) {\n return\n }\n const listeners = globalState.spyListeners\n for (let i = 0, l = listeners.length; i < l; i++) {\n listeners[i](event)\n }\n}\n\nexport function spyReportStart(event: PureSpyEvent) {\n if (!__DEV__) {\n return\n }\n const change = { ...event, spyReportStart: true as const }\n spyReport(change)\n}\n\nconst END_EVENT: SpyEvent = { type: \"report-end\", spyReportEnd: true }\n\nexport function spyReportEnd(change?: { time?: number }) {\n if (!__DEV__) {\n return\n }\n if (change) {\n spyReport({ ...change, type: \"report-end\", spyReportEnd: true })\n } else {\n spyReport(END_EVENT)\n }\n}\n\nexport function spy(listener: (change: SpyEvent) => void): Lambda {\n if (!__DEV__) {\n console.warn(`[mobx.spy] Is a no-op in production builds`)\n return function () {}\n } else {\n globalState.spyListeners.push(listener)\n return once(() => {\n globalState.spyListeners = globalState.spyListeners.filter(l => l !== listener)\n })\n }\n}\n","import {\n createAction,\n executeAction,\n Annotation,\n storeAnnotation,\n die,\n isFunction,\n isStringish,\n createDecoratorAnnotation,\n createActionAnnotation,\n is20223Decorator\n} from \"../internal\"\n\nimport type { ClassFieldDecorator, ClassMethodDecorator } from \"../types/decorator_fills\"\n\nexport const ACTION = \"action\"\nexport const ACTION_BOUND = \"action.bound\"\nexport const AUTOACTION = \"autoAction\"\nexport const AUTOACTION_BOUND = \"autoAction.bound\"\n\nconst DEFAULT_ACTION_NAME = \"\"\n\nconst actionAnnotation = createActionAnnotation(ACTION)\nconst actionBoundAnnotation = createActionAnnotation(ACTION_BOUND, {\n bound: true\n})\nconst autoActionAnnotation = createActionAnnotation(AUTOACTION, {\n autoAction: true\n})\nconst autoActionBoundAnnotation = createActionAnnotation(AUTOACTION_BOUND, {\n autoAction: true,\n bound: true\n})\n\nexport interface IActionFactory\n extends Annotation,\n PropertyDecorator,\n ClassMethodDecorator,\n ClassFieldDecorator {\n // nameless actions\n (fn: T): T\n // named actions\n (name: string, fn: T): T\n\n // named decorator\n (customName: string): PropertyDecorator &\n Annotation &\n ClassMethodDecorator &\n ClassFieldDecorator\n\n // decorator (name no longer supported)\n bound: Annotation & PropertyDecorator & ClassMethodDecorator & ClassFieldDecorator\n}\n\nfunction createActionFactory(autoAction: boolean): IActionFactory {\n const res: IActionFactory = function action(arg1, arg2?): any {\n // action(fn() {})\n if (isFunction(arg1)) {\n return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction)\n }\n // action(\"name\", fn() {})\n if (isFunction(arg2)) {\n return createAction(arg1, arg2, autoAction)\n }\n // @action (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return (autoAction ? autoActionAnnotation : actionAnnotation).decorate_20223_(\n arg1,\n arg2\n )\n }\n // @action\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation)\n }\n // action(\"name\") & @action(\"name\")\n if (isStringish(arg1)) {\n return createDecoratorAnnotation(\n createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n name: arg1,\n autoAction\n })\n )\n }\n\n if (__DEV__) {\n die(\"Invalid arguments for `action`\")\n }\n } as IActionFactory\n return res\n}\n\nexport const action: IActionFactory = createActionFactory(false)\nObject.assign(action, actionAnnotation)\nexport const autoAction: IActionFactory = createActionFactory(true)\nObject.assign(autoAction, autoActionAnnotation)\n\naction.bound = createDecoratorAnnotation(actionBoundAnnotation)\nautoAction.bound = createDecoratorAnnotation(autoActionBoundAnnotation)\n\nexport function runInAction(fn: () => T): T {\n return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined)\n}\n\nexport function isAction(thing: any) {\n return isFunction(thing) && thing.isMobxAction === true\n}\n","import {\n EMPTY_OBJECT,\n IEqualsComparer,\n IReactionDisposer,\n IReactionPublic,\n Lambda,\n Reaction,\n action,\n comparer,\n getNextId,\n isAction,\n isFunction,\n isPlainObject,\n die,\n allowStateChanges,\n GenericAbortSignal\n} from \"../internal\"\n\nexport interface IAutorunOptions {\n delay?: number\n name?: string\n /**\n * Experimental.\n * Warns if the view doesn't track observables\n */\n requiresObservable?: boolean\n scheduler?: (callback: () => void) => any\n onError?: (error: any) => void\n signal?: GenericAbortSignal\n}\n\n/**\n * Creates a named reactive view and keeps it alive, so that the view is always\n * updated if one of the dependencies changes, even when the view is not further used by something else.\n * @param view The reactive view\n * @returns disposer function, which can be used to stop the view from being updated in the future.\n */\nexport function autorun(\n view: (r: IReactionPublic) => any,\n opts: IAutorunOptions = EMPTY_OBJECT\n): IReactionDisposer {\n if (__DEV__) {\n if (!isFunction(view)) {\n die(\"Autorun expects a function as first argument\")\n }\n if (isAction(view)) {\n die(\"Autorun does not accept actions since actions are untrackable\")\n }\n }\n\n const name: string =\n opts?.name ?? (__DEV__ ? (view as any).name || \"Autorun@\" + getNextId() : \"Autorun\")\n const runSync = !opts.scheduler && !opts.delay\n let reaction: Reaction\n\n if (runSync) {\n // normal autorun\n reaction = new Reaction(\n name,\n function (this: Reaction) {\n this.track(reactionRunner)\n },\n opts.onError,\n opts.requiresObservable\n )\n } else {\n const scheduler = createSchedulerFromOptions(opts)\n // debounced autorun\n let isScheduled = false\n\n reaction = new Reaction(\n name,\n () => {\n if (!isScheduled) {\n isScheduled = true\n scheduler(() => {\n isScheduled = false\n if (!reaction.isDisposed_) {\n reaction.track(reactionRunner)\n }\n })\n }\n },\n opts.onError,\n opts.requiresObservable\n )\n }\n\n function reactionRunner() {\n view(reaction)\n }\n\n if(!opts?.signal?.aborted) {\n reaction.schedule_()\n }\n return reaction.getDisposer_(opts?.signal)\n}\n\nexport type IReactionOptions = IAutorunOptions & {\n fireImmediately?: FireImmediately\n equals?: IEqualsComparer\n}\n\nconst run = (f: Lambda) => f()\n\nfunction createSchedulerFromOptions(opts: IAutorunOptions) {\n return opts.scheduler\n ? opts.scheduler\n : opts.delay\n ? (f: Lambda) => setTimeout(f, opts.delay!)\n : run\n}\n\nexport function reaction(\n expression: (r: IReactionPublic) => T,\n effect: (\n arg: T,\n prev: FireImmediately extends true ? T | undefined : T,\n r: IReactionPublic\n ) => void,\n opts: IReactionOptions = EMPTY_OBJECT\n): IReactionDisposer {\n if (__DEV__) {\n if (!isFunction(expression) || !isFunction(effect)) {\n die(\"First and second argument to reaction should be functions\")\n }\n if (!isPlainObject(opts)) {\n die(\"Third argument of reactions should be an object\")\n }\n }\n const name = opts.name ?? (__DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\")\n const effectAction = action(\n name,\n opts.onError ? wrapErrorHandler(opts.onError, effect) : effect\n )\n const runSync = !opts.scheduler && !opts.delay\n const scheduler = createSchedulerFromOptions(opts)\n\n let firstTime = true\n let isScheduled = false\n let value: T\n\n const equals: IEqualsComparer = (opts as any).compareStructural\n ? comparer.structural\n : opts.equals || comparer.default\n\n const r = new Reaction(\n name,\n () => {\n if (firstTime || runSync) {\n reactionRunner()\n } else if (!isScheduled) {\n isScheduled = true\n scheduler!(reactionRunner)\n }\n },\n opts.onError,\n opts.requiresObservable\n )\n\n function reactionRunner() {\n isScheduled = false\n if (r.isDisposed_) {\n return\n }\n let changed: boolean = false\n const oldValue = value\n r.track(() => {\n const nextValue = allowStateChanges(false, () => expression(r))\n changed = firstTime || !equals(value, nextValue)\n value = nextValue\n })\n\n // This casting is nesessary as TS cannot infer proper type in current function implementation\n type OldValue = FireImmediately extends true ? T | undefined : T\n if (firstTime && opts.fireImmediately!) {\n effectAction(value, oldValue as OldValue, r)\n } else if (!firstTime && changed) {\n effectAction(value, oldValue as OldValue, r)\n }\n firstTime = false\n }\n\n if(!opts?.signal?.aborted) {\n r.schedule_()\n }\n return r.getDisposer_(opts?.signal)\n}\n\nfunction wrapErrorHandler(errorHandler, baseFn) {\n return function () {\n try {\n return baseFn.apply(this, arguments)\n } catch (e) {\n errorHandler.call(this, e)\n }\n }\n}\n","import {\n IComputedValue,\n IObservable,\n IObservableArray,\n Lambda,\n ObservableMap,\n getAtom,\n ObservableSet,\n isFunction,\n IObservableValue\n} from \"../internal\"\n\nconst ON_BECOME_OBSERVED = \"onBO\"\nconst ON_BECOME_UNOBSERVED = \"onBUO\"\n\nexport function onBecomeObserved(\n value:\n | IObservable\n | IComputedValue\n | IObservableArray\n | ObservableMap\n | ObservableSet\n | IObservableValue,\n listener: Lambda\n): Lambda\nexport function onBecomeObserved(\n value: ObservableMap | Object,\n property: K,\n listener: Lambda\n): Lambda\nexport function onBecomeObserved(thing, arg2, arg3?): Lambda {\n return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3)\n}\n\nexport function onBecomeUnobserved(\n value:\n | IObservable\n | IComputedValue\n | IObservableArray\n | ObservableMap\n | ObservableSet\n | IObservableValue,\n listener: Lambda\n): Lambda\nexport function onBecomeUnobserved(\n value: ObservableMap | Object,\n property: K,\n listener: Lambda\n): Lambda\nexport function onBecomeUnobserved(thing, arg2, arg3?): Lambda {\n return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3)\n}\n\nfunction interceptHook(hook: \"onBO\" | \"onBUO\", thing, arg2, arg3) {\n const atom: IObservable =\n typeof arg3 === \"function\" ? getAtom(thing, arg2) : (getAtom(thing) as any)\n const cb = isFunction(arg3) ? arg3 : arg2\n const listenersKey = `${hook}L` as \"onBOL\" | \"onBUOL\"\n\n if (atom[listenersKey]) {\n atom[listenersKey]!.add(cb)\n } else {\n atom[listenersKey] = new Set([cb])\n }\n\n return function () {\n const hookListeners = atom[listenersKey]\n if (hookListeners) {\n hookListeners.delete(cb)\n if (hookListeners.size === 0) {\n delete atom[listenersKey]\n }\n }\n }\n}\n","import { globalState, isolateGlobalState, setReactionScheduler } from \"../internal\"\n\nconst NEVER = \"never\"\nconst ALWAYS = \"always\"\nconst OBSERVED = \"observed\"\n// const IF_AVAILABLE = \"ifavailable\"\n\nexport function configure(options: {\n enforceActions?: \"never\" | \"always\" | \"observed\"\n computedRequiresReaction?: boolean\n /**\n * Warn if you try to create to derivation / reactive context without accessing any observable.\n */\n reactionRequiresObservable?: boolean\n /**\n * Warn if observables are accessed outside a reactive context\n */\n observableRequiresReaction?: boolean\n isolateGlobalState?: boolean\n disableErrorBoundaries?: boolean\n safeDescriptors?: boolean\n reactionScheduler?: (f: () => void) => void\n useProxies?: \"always\" | \"never\" | \"ifavailable\"\n}): void {\n if (options.isolateGlobalState === true) {\n isolateGlobalState()\n }\n const { useProxies, enforceActions } = options\n if (useProxies !== undefined) {\n globalState.useProxies =\n useProxies === ALWAYS\n ? true\n : useProxies === NEVER\n ? false\n : typeof Proxy !== \"undefined\"\n }\n if (useProxies === \"ifavailable\") {\n globalState.verifyProxies = true\n }\n if (enforceActions !== undefined) {\n const ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED\n globalState.enforceActions = ea\n globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true\n }\n ;[\n \"computedRequiresReaction\",\n \"reactionRequiresObservable\",\n \"observableRequiresReaction\",\n \"disableErrorBoundaries\",\n \"safeDescriptors\"\n ].forEach(key => {\n if (key in options) {\n globalState[key] = !!options[key]\n }\n })\n globalState.allowStateReads = !globalState.observableRequiresReaction\n if (__DEV__ && globalState.disableErrorBoundaries === true) {\n console.warn(\n \"WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled.\"\n )\n }\n if (options.reactionScheduler) {\n setReactionScheduler(options.reactionScheduler)\n }\n}\n","import {\n CreateObservableOptions,\n isObservableMap,\n AnnotationsMap,\n asObservableObject,\n isPlainObject,\n ObservableObjectAdministration,\n isObservable,\n die,\n getOwnPropertyDescriptors,\n $mobx,\n ownKeys,\n initObservable\n} from \"../internal\"\n\nexport function extendObservable(\n target: A,\n properties: B,\n annotations?: AnnotationsMap,\n options?: CreateObservableOptions\n): A & B {\n if (__DEV__) {\n if (arguments.length > 4) {\n die(\"'extendObservable' expected 2-4 arguments\")\n }\n if (typeof target !== \"object\") {\n die(\"'extendObservable' expects an object as first argument\")\n }\n if (isObservableMap(target)) {\n die(\"'extendObservable' should not be used on maps, use map.merge instead\")\n }\n if (!isPlainObject(properties)) {\n die(`'extendObservable' only accepts plain objects as second argument`)\n }\n if (isObservable(properties) || isObservable(annotations)) {\n die(`Extending an object with another observable (object) is not supported`)\n }\n }\n // Pull descriptors first, so we don't have to deal with props added by administration ($mobx)\n const descriptors = getOwnPropertyDescriptors(properties)\n\n initObservable(() => {\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n ownKeys(descriptors).forEach(key => {\n adm.extend_(\n key,\n descriptors[key as any],\n // must pass \"undefined\" for { key: undefined }\n !annotations ? true : key in annotations ? annotations[key] : true\n )\n })\n })\n\n return target as any\n}\n","import { IDepTreeNode, getAtom, getObservers, hasObservers } from \"../internal\"\n\nexport interface IDependencyTree {\n name: string\n dependencies?: IDependencyTree[]\n}\n\nexport interface IObserverTree {\n name: string\n observers?: IObserverTree[]\n}\n\nexport function getDependencyTree(thing: any, property?: string): IDependencyTree {\n return nodeToDependencyTree(getAtom(thing, property))\n}\n\nfunction nodeToDependencyTree(node: IDepTreeNode): IDependencyTree {\n const result: IDependencyTree = {\n name: node.name_\n }\n if (node.observing_ && node.observing_.length > 0) {\n result.dependencies = unique(node.observing_).map(nodeToDependencyTree)\n }\n return result\n}\n\nexport function getObserverTree(thing: any, property?: string): IObserverTree {\n return nodeToObserverTree(getAtom(thing, property))\n}\n\nfunction nodeToObserverTree(node: IDepTreeNode): IObserverTree {\n const result: IObserverTree = {\n name: node.name_\n }\n if (hasObservers(node as any)) {\n result.observers = Array.from(getObservers(node as any)).map(nodeToObserverTree)\n }\n return result\n}\n\nfunction unique(list: T[]): T[] {\n return Array.from(new Set(list))\n}\n","import {\n action,\n noop,\n die,\n isFunction,\n Annotation,\n isStringish,\n storeAnnotation,\n createFlowAnnotation,\n createDecoratorAnnotation,\n is20223Decorator\n} from \"../internal\"\n\nimport type { ClassMethodDecorator } from \"../types/decorator_fills\"\n\nexport const FLOW = \"flow\"\n\nlet generatorId = 0\n\nexport function FlowCancellationError() {\n this.message = \"FLOW_CANCELLED\"\n}\nFlowCancellationError.prototype = Object.create(Error.prototype)\n\nexport function isFlowCancellationError(error: Error) {\n return error instanceof FlowCancellationError\n}\n\nexport type CancellablePromise = Promise & { cancel(): void }\n\ninterface Flow extends Annotation, PropertyDecorator, ClassMethodDecorator {\n (\n generator: (...args: Args) => Generator | AsyncGenerator\n ): (...args: Args) => CancellablePromise\n bound: Annotation & PropertyDecorator & ClassMethodDecorator\n}\n\nconst flowAnnotation = createFlowAnnotation(\"flow\")\nconst flowBoundAnnotation = createFlowAnnotation(\"flow.bound\", { bound: true })\n\nexport const flow: Flow = Object.assign(\n function flow(arg1, arg2?) {\n // @flow (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return flowAnnotation.decorate_20223_(arg1, arg2)\n }\n // @flow\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, flowAnnotation)\n }\n // flow(fn)\n if (__DEV__ && arguments.length !== 1) {\n die(`Flow expects single argument with generator function`)\n }\n const generator = arg1\n const name = generator.name || \"\"\n\n // Implementation based on https://github.com/tj/co/blob/master/index.js\n const res = function () {\n const ctx = this\n const args = arguments\n const runId = ++generatorId\n const gen = action(`${name} - runid: ${runId} - init`, generator).apply(ctx, args)\n let rejector: (error: any) => void\n let pendingPromise: CancellablePromise | undefined = undefined\n\n const promise = new Promise(function (resolve, reject) {\n let stepId = 0\n rejector = reject\n\n function onFulfilled(res: any) {\n pendingPromise = undefined\n let ret\n try {\n ret = action(\n `${name} - runid: ${runId} - yield ${stepId++}`,\n gen.next\n ).call(gen, res)\n } catch (e) {\n return reject(e)\n }\n\n next(ret)\n }\n\n function onRejected(err: any) {\n pendingPromise = undefined\n let ret\n try {\n ret = action(\n `${name} - runid: ${runId} - yield ${stepId++}`,\n gen.throw!\n ).call(gen, err)\n } catch (e) {\n return reject(e)\n }\n next(ret)\n }\n\n function next(ret: any) {\n if (isFunction(ret?.then)) {\n // an async iterator\n ret.then(next, reject)\n return\n }\n if (ret.done) {\n return resolve(ret.value)\n }\n pendingPromise = Promise.resolve(ret.value) as any\n return pendingPromise!.then(onFulfilled, onRejected)\n }\n\n onFulfilled(undefined) // kick off the process\n }) as any\n\n promise.cancel = action(`${name} - runid: ${runId} - cancel`, function () {\n try {\n if (pendingPromise) {\n cancelPromise(pendingPromise)\n }\n // Finally block can return (or yield) stuff..\n const res = gen.return!(undefined as any)\n // eat anything that promise would do, it's cancelled!\n const yieldedPromise = Promise.resolve(res.value)\n yieldedPromise.then(noop, noop)\n cancelPromise(yieldedPromise) // maybe it can be cancelled :)\n // reject our original promise\n rejector(new FlowCancellationError())\n } catch (e) {\n rejector(e) // there could be a throwing finally block\n }\n })\n return promise\n }\n res.isMobXFlow = true\n return res\n } as any,\n flowAnnotation\n)\n\nflow.bound = createDecoratorAnnotation(flowBoundAnnotation)\n\nfunction cancelPromise(promise) {\n if (isFunction(promise.cancel)) {\n promise.cancel()\n }\n}\n\nexport function flowResult(\n result: T\n): T extends Generator\n ? CancellablePromise\n : T extends CancellablePromise\n ? T\n : never {\n return result as any // just tricking TypeScript :)\n}\n\nexport function isFlow(fn: any): boolean {\n return fn?.isMobXFlow === true\n}\n","import {\n IObservableArray,\n IObservableValue,\n Lambda,\n ObservableMap,\n getAdministration,\n isObservableArray,\n isObservableMap,\n isObservableObject,\n isObservableValue,\n ObservableSet,\n die,\n isStringish\n} from \"../internal\"\n\nexport type ReadInterceptor = (value: any) => T\n\n/** Experimental feature right now, tested indirectly via Mobx-State-Tree */\nexport function interceptReads(value: IObservableValue, handler: ReadInterceptor): Lambda\nexport function interceptReads(\n observableArray: IObservableArray,\n handler: ReadInterceptor\n): Lambda\nexport function interceptReads(\n observableMap: ObservableMap,\n handler: ReadInterceptor\n): Lambda\nexport function interceptReads(\n observableSet: ObservableSet,\n handler: ReadInterceptor\n): Lambda\nexport function interceptReads(\n object: Object,\n property: string,\n handler: ReadInterceptor\n): Lambda\nexport function interceptReads(thing, propOrHandler?, handler?): Lambda {\n let target\n if (isObservableMap(thing) || isObservableArray(thing) || isObservableValue(thing)) {\n target = getAdministration(thing)\n } else if (isObservableObject(thing)) {\n if (__DEV__ && !isStringish(propOrHandler)) {\n return die(\n `InterceptReads can only be used with a specific property, not with an object in general`\n )\n }\n target = getAdministration(thing, propOrHandler)\n } else if (__DEV__) {\n return die(`Expected observable map, object or array as first array`)\n }\n if (__DEV__ && target.dehancer !== undefined) {\n return die(`An intercept reader was already established`)\n }\n target.dehancer = typeof propOrHandler === \"function\" ? propOrHandler : handler\n return () => {\n target.dehancer = undefined\n }\n}\n","import {\n IArrayWillChange,\n IArrayWillSplice,\n IInterceptor,\n IMapWillChange,\n IObjectWillChange,\n IObservableArray,\n IObservableValue,\n IValueWillChange,\n Lambda,\n ObservableMap,\n getAdministration,\n ObservableSet,\n ISetWillChange,\n isFunction\n} from \"../internal\"\n\nexport function intercept(\n value: IObservableValue,\n handler: IInterceptor>\n): Lambda\nexport function intercept(\n observableArray: IObservableArray | Array,\n handler: IInterceptor | IArrayWillSplice>\n): Lambda\nexport function intercept(\n observableMap: ObservableMap | Map,\n handler: IInterceptor>\n): Lambda\nexport function intercept(\n observableSet: ObservableSet | Set,\n handler: IInterceptor>\n): Lambda\nexport function intercept(\n observableMap: ObservableMap | Map,\n property: K,\n handler: IInterceptor>\n): Lambda\nexport function intercept(object: object, handler: IInterceptor): Lambda\nexport function intercept(\n object: T,\n property: K,\n handler: IInterceptor>\n): Lambda\nexport function intercept(thing, propOrHandler?, handler?): Lambda {\n if (isFunction(handler)) {\n return interceptProperty(thing, propOrHandler, handler)\n } else {\n return interceptInterceptable(thing, propOrHandler)\n }\n}\n\nfunction interceptInterceptable(thing, handler) {\n return getAdministration(thing).intercept_(handler)\n}\n\nfunction interceptProperty(thing, property, handler) {\n return getAdministration(thing, property).intercept_(handler)\n}\n","import { $mobx, getAtom, isComputedValue, isObservableObject, die, isStringish } from \"../internal\"\n\nexport function _isComputed(value, property?: PropertyKey): boolean {\n if (property === undefined) {\n return isComputedValue(value)\n }\n if (isObservableObject(value) === false) {\n return false\n }\n if (!value[$mobx].values_.has(property)) {\n return false\n }\n const atom = getAtom(value, property)\n return isComputedValue(atom)\n}\n\nexport function isComputed(value: any): boolean {\n if (__DEV__ && arguments.length > 1) {\n return die(\n `isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property`\n )\n }\n return _isComputed(value)\n}\n\nexport function isComputedProp(value: any, propName: PropertyKey): boolean {\n if (__DEV__ && !isStringish(propName)) {\n return die(`isComputed expected a property name as second argument`)\n }\n return _isComputed(value, propName)\n}\n","import {\n $mobx,\n isAtom,\n isComputedValue,\n isObservableArray,\n isObservableMap,\n isObservableObject,\n isReaction,\n die,\n isStringish\n} from \"../internal\"\n\nfunction _isObservable(value, property?: PropertyKey): boolean {\n if (!value) {\n return false\n }\n if (property !== undefined) {\n if (__DEV__ && (isObservableMap(value) || isObservableArray(value))) {\n return die(\n \"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\"\n )\n }\n if (isObservableObject(value)) {\n return value[$mobx].values_.has(property)\n }\n return false\n }\n // For first check, see #701\n return (\n isObservableObject(value) ||\n !!value[$mobx] ||\n isAtom(value) ||\n isReaction(value) ||\n isComputedValue(value)\n )\n}\n\nexport function isObservable(value: any): boolean {\n if (__DEV__ && arguments.length !== 1) {\n die(\n `isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property`\n )\n }\n return _isObservable(value)\n}\n\nexport function isObservableProp(value: any, propName: PropertyKey): boolean {\n if (__DEV__ && !isStringish(propName)) {\n return die(`expected a property name as second argument`)\n }\n return _isObservable(value, propName)\n}\n","import {\n $mobx,\n IIsObservableObject,\n IObservableArray,\n ObservableMap,\n ObservableSet,\n ObservableObjectAdministration,\n endBatch,\n isObservableArray,\n isObservableMap,\n isObservableSet,\n isObservableObject,\n startBatch,\n die\n} from \"../internal\"\n\nexport function keys(map: ObservableMap): ReadonlyArray\nexport function keys(ar: IObservableArray): ReadonlyArray\nexport function keys(set: ObservableSet): ReadonlyArray\nexport function keys(obj: T): ReadonlyArray\nexport function keys(obj: any): any {\n if (isObservableObject(obj)) {\n return (\n (obj as any as IIsObservableObject)[$mobx] as ObservableObjectAdministration\n ).keys_()\n }\n if (isObservableMap(obj) || isObservableSet(obj)) {\n return Array.from(obj.keys())\n }\n if (isObservableArray(obj)) {\n return obj.map((_, index) => index)\n }\n die(5)\n}\n\nexport function values(map: ObservableMap): ReadonlyArray\nexport function values(set: ObservableSet): ReadonlyArray\nexport function values(ar: IObservableArray): ReadonlyArray\nexport function values(obj: T): ReadonlyArray\nexport function values(obj: any): string[] {\n if (isObservableObject(obj)) {\n return keys(obj).map(key => obj[key])\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(key => obj.get(key))\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.values())\n }\n if (isObservableArray(obj)) {\n return obj.slice()\n }\n die(6)\n}\n\nexport function entries(map: ObservableMap): ReadonlyArray<[K, T]>\nexport function entries(set: ObservableSet): ReadonlyArray<[T, T]>\nexport function entries(ar: IObservableArray): ReadonlyArray<[number, T]>\nexport function entries(\n obj: T\n): ReadonlyArray<[string, T extends object ? T[keyof T] : any]>\nexport function entries(obj: any): any {\n if (isObservableObject(obj)) {\n return keys(obj).map(key => [key, obj[key]])\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(key => [key, obj.get(key)])\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.entries())\n }\n if (isObservableArray(obj)) {\n return obj.map((key, index) => [index, key])\n }\n die(7)\n}\n\nexport function set(obj: ObservableMap, values: { [key: string]: V })\nexport function set(obj: ObservableMap, key: K, value: V)\nexport function set(obj: ObservableSet, value: T)\nexport function set(obj: IObservableArray, index: number, value: T)\nexport function set(obj: T, values: { [key: string]: any })\nexport function set(obj: T, key: PropertyKey, value: any)\nexport function set(obj: any, key: any, value?: any): void {\n if (arguments.length === 2 && !isObservableSet(obj)) {\n startBatch()\n const values = key\n try {\n for (let key in values) {\n set(obj, key, values[key])\n }\n } finally {\n endBatch()\n }\n return\n }\n if (isObservableObject(obj)) {\n ;(obj as any as IIsObservableObject)[$mobx].set_(key, value)\n } else if (isObservableMap(obj)) {\n obj.set(key, value)\n } else if (isObservableSet(obj)) {\n obj.add(key)\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10)\n }\n if (key < 0) {\n die(`Invalid index: '${key}'`)\n }\n startBatch()\n if (key >= obj.length) {\n obj.length = key + 1\n }\n obj[key] = value\n endBatch()\n } else {\n die(8)\n }\n}\n\nexport function remove(obj: ObservableMap, key: K)\nexport function remove(obj: ObservableSet, key: T)\nexport function remove(obj: IObservableArray, index: number)\nexport function remove(obj: T, key: string)\nexport function remove(obj: any, key: any): void {\n if (isObservableObject(obj)) {\n ;(obj as any as IIsObservableObject)[$mobx].delete_(key)\n } else if (isObservableMap(obj)) {\n obj.delete(key)\n } else if (isObservableSet(obj)) {\n obj.delete(key)\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10)\n }\n obj.splice(key, 1)\n } else {\n die(9)\n }\n}\n\nexport function has(obj: ObservableMap, key: K): boolean\nexport function has(obj: ObservableSet, key: T): boolean\nexport function has(obj: IObservableArray, index: number): boolean\nexport function has(obj: T, key: string): boolean\nexport function has(obj: any, key: any): boolean {\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].has_(key)\n } else if (isObservableMap(obj)) {\n return obj.has(key)\n } else if (isObservableSet(obj)) {\n return obj.has(key)\n } else if (isObservableArray(obj)) {\n return key >= 0 && key < obj.length\n }\n die(10)\n}\n\nexport function get(obj: ObservableMap, key: K): V | undefined\nexport function get(obj: IObservableArray, index: number): T | undefined\nexport function get(obj: T, key: string): any\nexport function get(obj: any, key: any): any {\n if (!has(obj, key)) {\n return undefined\n }\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].get_(key)\n } else if (isObservableMap(obj)) {\n return obj.get(key)\n } else if (isObservableArray(obj)) {\n return obj[key]\n }\n die(11)\n}\n\nexport function apiDefineProperty(obj: Object, key: PropertyKey, descriptor: PropertyDescriptor) {\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].defineProperty_(key, descriptor)\n }\n die(39)\n}\n\nexport function apiOwnKeys(obj: Object) {\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].ownKeys_()\n }\n die(38)\n}\n","import {\n IArrayDidChange,\n IComputedValue,\n IMapDidChange,\n IObjectDidChange,\n IObservableArray,\n IObservableValue,\n IValueDidChange,\n Lambda,\n ObservableMap,\n getAdministration,\n ObservableSet,\n ISetDidChange,\n isFunction\n} from \"../internal\"\n\nexport function observe(\n value: IObservableValue | IComputedValue,\n listener: (change: IValueDidChange) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe(\n observableArray: IObservableArray | Array,\n listener: (change: IArrayDidChange) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe(\n // ObservableSet/ObservableMap are required despite they implement Set/Map: https://github.com/mobxjs/mobx/pull/3180#discussion_r746542929\n observableSet: ObservableSet | Set,\n listener: (change: ISetDidChange) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe(\n observableMap: ObservableMap | Map,\n listener: (change: IMapDidChange) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe(\n observableMap: ObservableMap | Map,\n property: K,\n listener: (change: IValueDidChange) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe(\n object: Object,\n listener: (change: IObjectDidChange) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe(\n object: T,\n property: K,\n listener: (change: IValueDidChange) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe(thing, propOrCb?, cbOrFire?, fireImmediately?): Lambda {\n if (isFunction(cbOrFire)) {\n return observeObservableProperty(thing, propOrCb, cbOrFire, fireImmediately)\n } else {\n return observeObservable(thing, propOrCb, cbOrFire)\n }\n}\n\nfunction observeObservable(thing, listener, fireImmediately: boolean) {\n return getAdministration(thing).observe_(listener, fireImmediately)\n}\n\nfunction observeObservableProperty(thing, property, listener, fireImmediately: boolean) {\n return getAdministration(thing, property).observe_(listener, fireImmediately)\n}\n","import {\n isObservable,\n isObservableArray,\n isObservableValue,\n isObservableMap,\n isObservableSet,\n isComputedValue,\n die,\n apiOwnKeys,\n objectPrototype\n} from \"../internal\"\n\nfunction cache(map: Map, key: K, value: V): V {\n map.set(key, value)\n return value\n}\n\nfunction toJSHelper(source, __alreadySeen: Map) {\n if (\n source == null ||\n typeof source !== \"object\" ||\n source instanceof Date ||\n !isObservable(source)\n ) {\n return source\n }\n\n if (isObservableValue(source) || isComputedValue(source)) {\n return toJSHelper(source.get(), __alreadySeen)\n }\n if (__alreadySeen.has(source)) {\n return __alreadySeen.get(source)\n }\n if (isObservableArray(source)) {\n const res = cache(__alreadySeen, source, new Array(source.length))\n source.forEach((value, idx) => {\n res[idx] = toJSHelper(value, __alreadySeen)\n })\n return res\n }\n if (isObservableSet(source)) {\n const res = cache(__alreadySeen, source, new Set())\n source.forEach(value => {\n res.add(toJSHelper(value, __alreadySeen))\n })\n return res\n }\n if (isObservableMap(source)) {\n const res = cache(__alreadySeen, source, new Map())\n source.forEach((value, key) => {\n res.set(key, toJSHelper(value, __alreadySeen))\n })\n return res\n } else {\n // must be observable object\n const res = cache(__alreadySeen, source, {})\n apiOwnKeys(source).forEach((key: any) => {\n if (objectPrototype.propertyIsEnumerable.call(source, key)) {\n res[key] = toJSHelper(source[key], __alreadySeen)\n }\n })\n return res\n }\n}\n\n/**\n * Recursively converts an observable to it's non-observable native counterpart.\n * It does NOT recurse into non-observables, these are left as they are, even if they contain observables.\n * Computed and other non-enumerable properties are completely ignored.\n * Complex scenarios require custom solution, eg implementing `toJSON` or using `serializr` lib.\n */\nexport function toJS(source: T, options?: any): T {\n if (__DEV__ && options) {\n die(\"toJS no longer supports options\")\n }\n return toJSHelper(source, new Map())\n}\n","import { TraceMode, die, getAtom, globalState } from \"../internal\"\n\nexport function trace(thing?: any, prop?: string, enterBreakPoint?: boolean): void\nexport function trace(thing?: any, enterBreakPoint?: boolean): void\nexport function trace(enterBreakPoint?: boolean): void\nexport function trace(...args: any[]): void {\n if (!__DEV__) {\n return\n }\n let enterBreakPoint = false\n if (typeof args[args.length - 1] === \"boolean\") {\n enterBreakPoint = args.pop()\n }\n const derivation = getAtomFromArgs(args)\n if (!derivation) {\n return die(\n `'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly`\n )\n }\n if (derivation.isTracing_ === TraceMode.NONE) {\n console.log(`[mobx.trace] '${derivation.name_}' tracing enabled`)\n }\n derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG\n}\n\nfunction getAtomFromArgs(args): any {\n switch (args.length) {\n case 0:\n return globalState.trackingDerivation\n case 1:\n return getAtom(args[0])\n case 2:\n return getAtom(args[0], args[1])\n }\n}\n","import { endBatch, startBatch } from \"../internal\"\n\n/**\n * During a transaction no views are updated until the end of the transaction.\n * The transaction will be run synchronously nonetheless.\n *\n * @param action a function that updates some reactive state\n * @returns any value that was returned by the 'action' parameter.\n */\nexport function transaction(action: () => T, thisArg = undefined): T {\n startBatch()\n try {\n return action.apply(thisArg)\n } finally {\n endBatch()\n }\n}\n","import {\n $mobx,\n IReactionDisposer,\n Lambda,\n autorun,\n createAction,\n getNextId,\n die,\n allowStateChanges,\n GenericAbortSignal\n} from \"../internal\"\n\nexport interface IWhenOptions {\n name?: string\n timeout?: number\n onError?: (error: any) => void\n signal?: GenericAbortSignal\n}\n\nexport function when(\n predicate: () => boolean,\n opts?: IWhenOptions\n): Promise & { cancel(): void }\nexport function when(\n predicate: () => boolean,\n effect: Lambda,\n opts?: IWhenOptions\n): IReactionDisposer\nexport function when(predicate: any, arg1?: any, arg2?: any): any {\n if (arguments.length === 1 || (arg1 && typeof arg1 === \"object\")) {\n return whenPromise(predicate, arg1)\n }\n return _when(predicate, arg1, arg2 || {})\n}\n\nfunction _when(predicate: () => boolean, effect: Lambda, opts: IWhenOptions): IReactionDisposer {\n let timeoutHandle: any\n if (typeof opts.timeout === \"number\") {\n const error = new Error(\"WHEN_TIMEOUT\")\n timeoutHandle = setTimeout(() => {\n if (!disposer[$mobx].isDisposed_) {\n disposer()\n if (opts.onError) {\n opts.onError(error)\n } else {\n throw error\n }\n }\n }, opts.timeout)\n }\n\n opts.name = __DEV__ ? opts.name || \"When@\" + getNextId() : \"When\"\n const effectAction = createAction(\n __DEV__ ? opts.name + \"-effect\" : \"When-effect\",\n effect as Function\n )\n // eslint-disable-next-line\n var disposer = autorun(r => {\n // predicate should not change state\n let cond = allowStateChanges(false, predicate)\n if (cond) {\n r.dispose()\n if (timeoutHandle) {\n clearTimeout(timeoutHandle)\n }\n effectAction()\n }\n }, opts)\n return disposer\n}\n\nfunction whenPromise(\n predicate: () => boolean,\n opts?: IWhenOptions\n): Promise & { cancel(): void } {\n if (__DEV__ && opts && opts.onError) {\n return die(`the options 'onError' and 'promise' cannot be combined`)\n }\n if (opts?.signal?.aborted) {\n return Object.assign(Promise.reject(new Error(\"WHEN_ABORTED\")), { cancel: () => null })\n }\n let cancel\n let abort\n const res = new Promise((resolve, reject) => {\n let disposer = _when(predicate, resolve as Lambda, { ...opts, onError: reject })\n cancel = () => {\n disposer()\n reject(new Error(\"WHEN_CANCELLED\"))\n }\n abort = () => {\n disposer()\n reject(new Error(\"WHEN_ABORTED\"))\n }\n opts?.signal?.addEventListener?.(\"abort\", abort)\n }).finally(() => opts?.signal?.removeEventListener?.(\"abort\", abort))\n ;(res as any).cancel = cancel\n return res as any\n}\n","import { Lambda, once, untrackedEnd, untrackedStart, die } from \"../internal\"\n\nexport type IInterceptor = (change: T) => T | null\n\nexport interface IInterceptable {\n interceptors_: IInterceptor[] | undefined\n}\n\nexport function hasInterceptors(interceptable: IInterceptable) {\n return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0\n}\n\nexport function registerInterceptor(\n interceptable: IInterceptable,\n handler: IInterceptor\n): Lambda {\n const interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = [])\n interceptors.push(handler)\n return once(() => {\n const idx = interceptors.indexOf(handler)\n if (idx !== -1) {\n interceptors.splice(idx, 1)\n }\n })\n}\n\nexport function interceptChange(\n interceptable: IInterceptable,\n change: T | null\n): T | null {\n const prevU = untrackedStart()\n try {\n // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n const interceptors = [...(interceptable.interceptors_ || [])]\n for (let i = 0, l = interceptors.length; i < l; i++) {\n change = interceptors[i](change)\n if (change && !(change as any).type) {\n die(14)\n }\n if (!change) {\n break\n }\n }\n return change\n } finally {\n untrackedEnd(prevU)\n }\n}\n","import { Lambda, once, untrackedEnd, untrackedStart } from \"../internal\"\n\nexport interface IListenable {\n changeListeners_: Function[] | undefined\n}\n\nexport function hasListeners(listenable: IListenable) {\n return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0\n}\n\nexport function registerListener(listenable: IListenable, handler: Function): Lambda {\n const listeners = listenable.changeListeners_ || (listenable.changeListeners_ = [])\n listeners.push(handler)\n return once(() => {\n const idx = listeners.indexOf(handler)\n if (idx !== -1) {\n listeners.splice(idx, 1)\n }\n })\n}\n\nexport function notifyListeners(listenable: IListenable, change: T) {\n const prevU = untrackedStart()\n let listeners = listenable.changeListeners_\n if (!listeners) {\n return\n }\n listeners = listeners.slice()\n for (let i = 0, l = listeners.length; i < l; i++) {\n listeners[i](change)\n }\n untrackedEnd(prevU)\n}\n","import {\n $mobx,\n asObservableObject,\n AnnotationsMap,\n CreateObservableOptions,\n ObservableObjectAdministration,\n collectStoredAnnotations,\n isPlainObject,\n isObservableObject,\n die,\n ownKeys,\n extendObservable,\n addHiddenProp,\n storedAnnotationsSymbol,\n initObservable\n} from \"../internal\"\n\n// Hack based on https://github.com/Microsoft/TypeScript/issues/14829#issuecomment-322267089\n// We need this, because otherwise, AdditionalKeys is going to be inferred to be any\n// set of superfluous keys. But, we rather want to get a compile error unless AdditionalKeys is\n// _explicity_ passed as generic argument\n// Fixes: https://github.com/mobxjs/mobx/issues/2325#issuecomment-691070022\ntype NoInfer = [T][T extends any ? 0 : never]\n\ntype MakeObservableOptions = Omit\n\nexport function makeObservable(\n target: T,\n annotations?: AnnotationsMap>,\n options?: MakeObservableOptions\n): T {\n initObservable(() => {\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n if (__DEV__ && annotations && target[storedAnnotationsSymbol]) {\n die(\n `makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.`\n )\n }\n // Default to decorators\n annotations ??= collectStoredAnnotations(target)\n\n // Annotate\n ownKeys(annotations).forEach(key => adm.make_(key, annotations![key]))\n })\n return target\n}\n\n// proto[keysSymbol] = new Set()\nconst keysSymbol = Symbol(\"mobx-keys\")\n\nexport function makeAutoObservable(\n target: T,\n overrides?: AnnotationsMap>,\n options?: MakeObservableOptions\n): T {\n if (__DEV__) {\n if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target))) {\n die(`'makeAutoObservable' can only be used for classes that don't have a superclass`)\n }\n if (isObservableObject(target)) {\n die(`makeAutoObservable can only be used on objects not already made observable`)\n }\n }\n\n // Optimization: avoid visiting protos\n // Assumes that annotation.make_/.extend_ works the same for plain objects\n if (isPlainObject(target)) {\n return extendObservable(target, target, overrides, options)\n }\n\n initObservable(() => {\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n\n // Optimization: cache keys on proto\n // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n if (!target[keysSymbol]) {\n const proto = Object.getPrototypeOf(target)\n const keys = new Set([...ownKeys(target), ...ownKeys(proto)])\n keys.delete(\"constructor\")\n keys.delete($mobx)\n addHiddenProp(proto, keysSymbol, keys)\n }\n\n target[keysSymbol].forEach(key =>\n adm.make_(\n key,\n // must pass \"undefined\" for { key: undefined }\n !overrides ? true : key in overrides ? overrides[key] : true\n )\n )\n })\n\n return target\n}\n","import {\n $mobx,\n Atom,\n EMPTY_ARRAY,\n IAtom,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n Lambda,\n addHiddenFinalProp,\n checkIfStateModificationsAreAllowed,\n createInstanceofPredicate,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isObject,\n isSpyEnabled,\n notifyListeners,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n assertProxies,\n reserveArrayBuffer,\n hasProp,\n die,\n globalState,\n initObservable\n} from \"../internal\"\n\nconst SPLICE = \"splice\"\nexport const UPDATE = \"update\"\nexport const MAX_SPLICE_SIZE = 10000 // See e.g. https://github.com/mobxjs/mobx/issues/859\n\nexport interface IObservableArray extends Array {\n spliceWithArray(index: number, deleteCount?: number, newItems?: T[]): T[]\n clear(): T[]\n replace(newItems: T[]): T[]\n remove(value: T): boolean\n toJSON(): T[]\n}\n\ninterface IArrayBaseChange {\n object: IObservableArray\n observableKind: \"array\"\n debugObjectName: string\n index: number\n}\n\nexport type IArrayDidChange = IArrayUpdate | IArraySplice\n\nexport interface IArrayUpdate extends IArrayBaseChange {\n type: \"update\"\n newValue: T\n oldValue: T\n}\n\nexport interface IArraySplice extends IArrayBaseChange {\n type: \"splice\"\n added: T[]\n addedCount: number\n removed: T[]\n removedCount: number\n}\n\nexport interface IArrayWillChange {\n object: IObservableArray\n index: number\n type: \"update\"\n newValue: T\n}\n\nexport interface IArrayWillSplice {\n object: IObservableArray\n index: number\n type: \"splice\"\n added: T[]\n removedCount: number\n}\n\nconst arrayTraps = {\n get(target, name) {\n const adm: ObservableArrayAdministration = target[$mobx]\n if (name === $mobx) {\n return adm\n }\n if (name === \"length\") {\n return adm.getArrayLength_()\n }\n if (typeof name === \"string\" && !isNaN(name as any)) {\n return adm.get_(parseInt(name))\n }\n if (hasProp(arrayExtensions, name)) {\n return arrayExtensions[name]\n }\n return target[name]\n },\n set(target, name, value): boolean {\n const adm: ObservableArrayAdministration = target[$mobx]\n if (name === \"length\") {\n adm.setArrayLength_(value)\n }\n if (typeof name === \"symbol\" || isNaN(name)) {\n target[name] = value\n } else {\n // numeric string\n adm.set_(parseInt(name), value)\n }\n return true\n },\n preventExtensions() {\n die(15)\n }\n}\n\nexport class ObservableArrayAdministration\n implements IInterceptable | IArrayWillSplice>, IListenable\n{\n atom_: IAtom\n readonly values_: any[] = [] // this is the prop that gets proxied, so can't replace it!\n interceptors_\n changeListeners_\n enhancer_: (newV: any, oldV: any | undefined) => any\n dehancer: any\n proxy_!: IObservableArray\n lastKnownLength_ = 0\n\n constructor(\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n enhancer: IEnhancer,\n public owned_: boolean,\n public legacyMode_: boolean\n ) {\n this.atom_ = new Atom(name)\n this.enhancer_ = (newV, oldV) =>\n enhancer(newV, oldV, __DEV__ ? name + \"[..]\" : \"ObservableArray[..]\")\n }\n\n dehanceValue_(value: any): any {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n dehanceValues_(values: any[]): any[] {\n if (this.dehancer !== undefined && values.length > 0) {\n return values.map(this.dehancer) as any\n }\n return values\n }\n\n intercept_(handler: IInterceptor | IArrayWillSplice>): Lambda {\n return registerInterceptor | IArrayWillSplice>(this, handler)\n }\n\n observe_(\n listener: (changeData: IArrayDidChange) => void,\n fireImmediately = false\n ): Lambda {\n if (fireImmediately) {\n listener(>{\n observableKind: \"array\",\n object: this.proxy_ as any,\n debugObjectName: this.atom_.name_,\n type: \"splice\",\n index: 0,\n added: this.values_.slice(),\n addedCount: this.values_.length,\n removed: [],\n removedCount: 0\n })\n }\n return registerListener(this, listener)\n }\n\n getArrayLength_(): number {\n this.atom_.reportObserved()\n return this.values_.length\n }\n\n setArrayLength_(newLength: number) {\n if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) {\n die(\"Out of range: \" + newLength)\n }\n let currentLength = this.values_.length\n if (newLength === currentLength) {\n return\n } else if (newLength > currentLength) {\n const newItems = new Array(newLength - currentLength)\n for (let i = 0; i < newLength - currentLength; i++) {\n newItems[i] = undefined\n } // No Array.fill everywhere...\n this.spliceWithArray_(currentLength, 0, newItems)\n } else {\n this.spliceWithArray_(newLength, currentLength - newLength)\n }\n }\n\n updateArrayLength_(oldLength: number, delta: number) {\n if (oldLength !== this.lastKnownLength_) {\n die(16)\n }\n this.lastKnownLength_ += delta\n if (this.legacyMode_ && delta > 0) {\n reserveArrayBuffer(oldLength + delta + 1)\n }\n }\n\n spliceWithArray_(index: number, deleteCount?: number, newItems?: any[]): any[] {\n checkIfStateModificationsAreAllowed(this.atom_)\n const length = this.values_.length\n\n if (index === undefined) {\n index = 0\n } else if (index > length) {\n index = length\n } else if (index < 0) {\n index = Math.max(0, length + index)\n }\n\n if (arguments.length === 1) {\n deleteCount = length - index\n } else if (deleteCount === undefined || deleteCount === null) {\n deleteCount = 0\n } else {\n deleteCount = Math.max(0, Math.min(deleteCount, length - index))\n }\n\n if (newItems === undefined) {\n newItems = EMPTY_ARRAY\n }\n\n if (hasInterceptors(this)) {\n const change = interceptChange>(this as any, {\n object: this.proxy_ as any,\n type: SPLICE,\n index,\n removedCount: deleteCount,\n added: newItems\n })\n if (!change) {\n return EMPTY_ARRAY\n }\n deleteCount = change.removedCount\n newItems = change.added\n }\n\n newItems =\n newItems.length === 0 ? newItems : newItems.map(v => this.enhancer_(v, undefined))\n if (this.legacyMode_ || __DEV__) {\n const lengthDelta = newItems.length - deleteCount\n this.updateArrayLength_(length, lengthDelta) // checks if internal array wasn't modified\n }\n const res = this.spliceItemsIntoValues_(index, deleteCount, newItems)\n\n if (deleteCount !== 0 || newItems.length !== 0) {\n this.notifyArraySplice_(index, newItems, res)\n }\n return this.dehanceValues_(res)\n }\n\n spliceItemsIntoValues_(index: number, deleteCount: number, newItems: any[]): any[] {\n if (newItems.length < MAX_SPLICE_SIZE) {\n return this.values_.splice(index, deleteCount, ...newItems)\n } else {\n // The items removed by the splice\n const res = this.values_.slice(index, index + deleteCount)\n // The items that that should remain at the end of the array\n let oldItems = this.values_.slice(index + deleteCount)\n // New length is the previous length + addition count - deletion count\n this.values_.length += newItems.length - deleteCount\n for (let i = 0; i < newItems.length; i++) {\n this.values_[index + i] = newItems[i]\n }\n for (let i = 0; i < oldItems.length; i++) {\n this.values_[index + newItems.length + i] = oldItems[i]\n }\n return res\n }\n }\n\n notifyArrayChildUpdate_(index: number, newValue: any, oldValue: any) {\n const notifySpy = !this.owned_ && isSpyEnabled()\n const notify = hasListeners(this)\n const change: IArrayDidChange | null =\n notify || notifySpy\n ? ({\n observableKind: \"array\",\n object: this.proxy_,\n type: UPDATE,\n debugObjectName: this.atom_.name_,\n index,\n newValue,\n oldValue\n } as const)\n : null\n\n // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n // cause any runtime overhead in development mode without NODE_ENV set, unless spying is enabled\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n this.atom_.reportChanged()\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n notifyArraySplice_(index: number, added: any[], removed: any[]) {\n const notifySpy = !this.owned_ && isSpyEnabled()\n const notify = hasListeners(this)\n const change: IArraySplice | null =\n notify || notifySpy\n ? ({\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: SPLICE,\n index,\n removed,\n added,\n removedCount: removed.length,\n addedCount: added.length\n } as const)\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n this.atom_.reportChanged()\n // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n get_(index: number): any | undefined {\n if (this.legacyMode_ && index >= this.values_.length) {\n console.warn(\n __DEV__\n ? `[mobx.array] Attempt to read an array index (${index}) that is out of bounds (${this.values_.length}). Please check length first. Out of bound indices will not be tracked by MobX`\n : `[mobx] Out of bounds read: ${index}`\n )\n return undefined\n }\n this.atom_.reportObserved()\n return this.dehanceValue_(this.values_[index])\n }\n\n set_(index: number, newValue: any) {\n const values = this.values_\n if (this.legacyMode_ && index > values.length) {\n // out of bounds\n die(17, index, values.length)\n }\n if (index < values.length) {\n // update at index in range\n checkIfStateModificationsAreAllowed(this.atom_)\n const oldValue = values[index]\n if (hasInterceptors(this)) {\n const change = interceptChange>(this as any, {\n type: UPDATE,\n object: this.proxy_ as any, // since \"this\" is the real array we need to pass its proxy\n index,\n newValue\n })\n if (!change) {\n return\n }\n newValue = change.newValue\n }\n newValue = this.enhancer_(newValue, oldValue)\n const changed = newValue !== oldValue\n if (changed) {\n values[index] = newValue\n this.notifyArrayChildUpdate_(index, newValue, oldValue)\n }\n } else {\n // For out of bound index, we don't create an actual sparse array,\n // but rather fill the holes with undefined (same as setArrayLength_).\n // This could be considered a bug.\n const newItems = new Array(index + 1 - values.length)\n for (let i = 0; i < newItems.length - 1; i++) {\n newItems[i] = undefined\n } // No Array.fill everywhere...\n newItems[newItems.length - 1] = newValue\n this.spliceWithArray_(values.length, 0, newItems)\n }\n }\n}\n\nexport function createObservableArray(\n initialValues: T[] | undefined,\n enhancer: IEnhancer,\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n owned = false\n): IObservableArray {\n assertProxies()\n return initObservable(() => {\n const adm = new ObservableArrayAdministration(name, enhancer, owned, false)\n addHiddenFinalProp(adm.values_, $mobx, adm)\n const proxy = new Proxy(adm.values_, arrayTraps) as any\n adm.proxy_ = proxy\n if (initialValues && initialValues.length) {\n adm.spliceWithArray_(0, 0, initialValues)\n }\n return proxy\n })\n}\n\n// eslint-disable-next-line\nexport var arrayExtensions = {\n clear(): any[] {\n return this.splice(0)\n },\n\n replace(newItems: any[]) {\n const adm: ObservableArrayAdministration = this[$mobx]\n return adm.spliceWithArray_(0, adm.values_.length, newItems)\n },\n\n // Used by JSON.stringify\n toJSON(): any[] {\n return this.slice()\n },\n\n /*\n * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\n * since these functions alter the inner structure of the array, the have side effects.\n * Because the have side effects, they should not be used in computed function,\n * and for that reason the do not call dependencyState.notifyObserved\n */\n splice(index: number, deleteCount?: number, ...newItems: any[]): any[] {\n const adm: ObservableArrayAdministration = this[$mobx]\n switch (arguments.length) {\n case 0:\n return []\n case 1:\n return adm.spliceWithArray_(index)\n case 2:\n return adm.spliceWithArray_(index, deleteCount)\n }\n return adm.spliceWithArray_(index, deleteCount, newItems)\n },\n\n spliceWithArray(index: number, deleteCount?: number, newItems?: any[]): any[] {\n return (this[$mobx] as ObservableArrayAdministration).spliceWithArray_(\n index,\n deleteCount,\n newItems\n )\n },\n\n push(...items: any[]): number {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.spliceWithArray_(adm.values_.length, 0, items)\n return adm.values_.length\n },\n\n pop() {\n return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0]\n },\n\n shift() {\n return this.splice(0, 1)[0]\n },\n\n unshift(...items: any[]): number {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.spliceWithArray_(0, 0, items)\n return adm.values_.length\n },\n\n reverse(): any[] {\n // reverse by default mutates in place before returning the result\n // which makes it both a 'derivation' and a 'mutation'.\n if (globalState.trackingDerivation) {\n die(37, \"reverse\")\n }\n this.replace(this.slice().reverse())\n return this\n },\n\n sort(): any[] {\n // sort by default mutates in place before returning the result\n // which goes against all good practices. Let's not change the array in place!\n if (globalState.trackingDerivation) {\n die(37, \"sort\")\n }\n const copy = this.slice()\n copy.sort.apply(copy, arguments)\n this.replace(copy)\n return this\n },\n\n remove(value: any): boolean {\n const adm: ObservableArrayAdministration = this[$mobx]\n const idx = adm.dehanceValues_(adm.values_).indexOf(value)\n if (idx > -1) {\n this.splice(idx, 1)\n return true\n }\n return false\n }\n}\n\n/**\n * Wrap function from prototype\n * Without this, everything works as well, but this works\n * faster as everything works on unproxied values\n */\naddArrayExtension(\"at\", simpleFunc)\naddArrayExtension(\"concat\", simpleFunc)\naddArrayExtension(\"flat\", simpleFunc)\naddArrayExtension(\"includes\", simpleFunc)\naddArrayExtension(\"indexOf\", simpleFunc)\naddArrayExtension(\"join\", simpleFunc)\naddArrayExtension(\"lastIndexOf\", simpleFunc)\naddArrayExtension(\"slice\", simpleFunc)\naddArrayExtension(\"toString\", simpleFunc)\naddArrayExtension(\"toLocaleString\", simpleFunc)\naddArrayExtension(\"toSorted\", simpleFunc)\naddArrayExtension(\"toSpliced\", simpleFunc)\naddArrayExtension(\"with\", simpleFunc)\n// map\naddArrayExtension(\"every\", mapLikeFunc)\naddArrayExtension(\"filter\", mapLikeFunc)\naddArrayExtension(\"find\", mapLikeFunc)\naddArrayExtension(\"findIndex\", mapLikeFunc)\naddArrayExtension(\"findLast\", mapLikeFunc)\naddArrayExtension(\"findLastIndex\", mapLikeFunc)\naddArrayExtension(\"flatMap\", mapLikeFunc)\naddArrayExtension(\"forEach\", mapLikeFunc)\naddArrayExtension(\"map\", mapLikeFunc)\naddArrayExtension(\"some\", mapLikeFunc)\naddArrayExtension(\"toReversed\", mapLikeFunc)\n// reduce\naddArrayExtension(\"reduce\", reduceLikeFunc)\naddArrayExtension(\"reduceRight\", reduceLikeFunc)\n\nfunction addArrayExtension(funcName, funcFactory) {\n if (typeof Array.prototype[funcName] === \"function\") {\n arrayExtensions[funcName] = funcFactory(funcName)\n }\n}\n\n// Report and delegate to dehanced array\nfunction simpleFunc(funcName) {\n return function () {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n return dehancedValues[funcName].apply(dehancedValues, arguments)\n }\n}\n\n// Make sure callbacks receive correct array arg #2326\nfunction mapLikeFunc(funcName) {\n return function (callback, thisArg) {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n return dehancedValues[funcName]((element, index) => {\n return callback.call(thisArg, element, index, this)\n })\n }\n}\n\n// Make sure callbacks receive correct array arg #2326\nfunction reduceLikeFunc(funcName) {\n return function () {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n // #2432 - reduce behavior depends on arguments.length\n const callback = arguments[0]\n arguments[0] = (accumulator, currentValue, index) => {\n return callback(accumulator, currentValue, index, this)\n }\n return dehancedValues[funcName].apply(dehancedValues, arguments)\n }\n}\n\nconst isObservableArrayAdministration = createInstanceofPredicate(\n \"ObservableArrayAdministration\",\n ObservableArrayAdministration\n)\n\nexport function isObservableArray(thing): thing is IObservableArray {\n return isObject(thing) && isObservableArrayAdministration(thing[$mobx])\n}\n","import {\n $mobx,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n Lambda,\n ObservableValue,\n checkIfStateModificationsAreAllowed,\n createAtom,\n createInstanceofPredicate,\n deepEnhancer,\n getNextId,\n getPlainObjectKeys,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isES6Map,\n isPlainES6Map,\n isPlainObject,\n isSpyEnabled,\n makeIterable,\n notifyListeners,\n referenceEnhancer,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n stringifyKey,\n transaction,\n untracked,\n onBecomeUnobserved,\n globalState,\n die,\n isFunction,\n UPDATE,\n IAtom,\n PureSpyEvent,\n initObservable\n} from \"../internal\"\n\nexport interface IKeyValueMap {\n [key: string]: V\n}\n\nexport type IMapEntry = [K, V]\nexport type IReadonlyMapEntry = readonly [K, V]\nexport type IMapEntries = IMapEntry[]\nexport type IReadonlyMapEntries = IReadonlyMapEntry[]\n\nexport type IMapDidChange = { observableKind: \"map\"; debugObjectName: string } & (\n | {\n object: ObservableMap\n name: K // actual the key or index, but this is based on the ancient .observe proposal for consistency\n type: \"update\"\n newValue: V\n oldValue: V\n }\n | {\n object: ObservableMap\n name: K\n type: \"add\"\n newValue: V\n }\n | {\n object: ObservableMap\n name: K\n type: \"delete\"\n oldValue: V\n }\n)\n\nexport interface IMapWillChange {\n object: ObservableMap\n type: \"update\" | \"add\" | \"delete\"\n name: K\n newValue?: V\n}\n\nconst ObservableMapMarker = {}\n\nexport const ADD = \"add\"\nexport const DELETE = \"delete\"\n\nexport type IObservableMapInitialValues =\n | IMapEntries\n | IReadonlyMapEntries\n | IKeyValueMap\n | Map\n\n// just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\nexport class ObservableMap\n implements Map, IInterceptable>, IListenable\n{\n [$mobx] = ObservableMapMarker\n data_!: Map>\n hasMap_!: Map> // hasMap, not hashMap >-).\n keysAtom_!: IAtom\n interceptors_\n changeListeners_\n dehancer: any\n\n constructor(\n initialData?: IObservableMapInitialValues,\n public enhancer_: IEnhancer = deepEnhancer,\n public name_ = __DEV__ ? \"ObservableMap@\" + getNextId() : \"ObservableMap\"\n ) {\n if (!isFunction(Map)) {\n die(18)\n }\n initObservable(() => {\n this.keysAtom_ = createAtom(__DEV__ ? `${this.name_}.keys()` : \"ObservableMap.keys()\")\n this.data_ = new Map()\n this.hasMap_ = new Map()\n if (initialData) {\n this.merge(initialData)\n }\n })\n }\n\n private has_(key: K): boolean {\n return this.data_.has(key)\n }\n\n has(key: K): boolean {\n if (!globalState.trackingDerivation) {\n return this.has_(key)\n }\n\n let entry = this.hasMap_.get(key)\n if (!entry) {\n const newEntry = (entry = new ObservableValue(\n this.has_(key),\n referenceEnhancer,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableMap.key?\",\n false\n ))\n this.hasMap_.set(key, newEntry)\n onBecomeUnobserved(newEntry, () => this.hasMap_.delete(key))\n }\n\n return entry.get()\n }\n\n set(key: K, value: V) {\n const hasKey = this.has_(key)\n if (hasInterceptors(this)) {\n const change = interceptChange>(this, {\n type: hasKey ? UPDATE : ADD,\n object: this,\n newValue: value,\n name: key\n })\n if (!change) {\n return this\n }\n value = change.newValue!\n }\n if (hasKey) {\n this.updateValue_(key, value)\n } else {\n this.addValue_(key, value)\n }\n return this\n }\n\n delete(key: K): boolean {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n if (hasInterceptors(this)) {\n const change = interceptChange>(this, {\n type: DELETE,\n object: this,\n name: key\n })\n if (!change) {\n return false\n }\n }\n if (this.has_(key)) {\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: (this.data_.get(key)).value_,\n name: key\n }\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n transaction(() => {\n this.keysAtom_.reportChanged()\n this.hasMap_.get(key)?.setNewValue_(false)\n const observable = this.data_.get(key)!\n observable.setNewValue_(undefined as any)\n this.data_.delete(key)\n })\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n return true\n }\n return false\n }\n\n private updateValue_(key: K, newValue: V | undefined) {\n const observable = this.data_.get(key)!\n newValue = (observable as any).prepareNewValue_(newValue) as V\n if (newValue !== globalState.UNCHANGED) {\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n oldValue: (observable as any).value_,\n name: key,\n newValue\n }\n : null\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n observable.setNewValue_(newValue as V)\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n }\n\n private addValue_(key: K, newValue: V) {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n transaction(() => {\n const observable = new ObservableValue(\n newValue,\n this.enhancer_,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}` : \"ObservableMap.key\",\n false\n )\n this.data_.set(key, observable)\n newValue = (observable as any).value_ // value might have been changed\n this.hasMap_.get(key)?.setNewValue_(true)\n this.keysAtom_.reportChanged()\n })\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n name: key,\n newValue\n }\n : null\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n get(key: K): V | undefined {\n if (this.has(key)) {\n return this.dehanceValue_(this.data_.get(key)!.get())\n }\n return this.dehanceValue_(undefined)\n }\n\n private dehanceValue_(value: X): X {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n keys(): IterableIterator {\n this.keysAtom_.reportObserved()\n return this.data_.keys()\n }\n\n values(): IterableIterator {\n const self = this\n const keys = this.keys()\n return makeIterable({\n next() {\n const { done, value } = keys.next()\n return {\n done,\n value: done ? (undefined as any) : self.get(value)\n }\n }\n })\n }\n\n entries(): IterableIterator> {\n const self = this\n const keys = this.keys()\n return makeIterable({\n next() {\n const { done, value } = keys.next()\n return {\n done,\n value: done ? (undefined as any) : ([value, self.get(value)!] as [K, V])\n }\n }\n })\n }\n\n [Symbol.iterator]() {\n return this.entries()\n }\n\n forEach(callback: (value: V, key: K, object: Map) => void, thisArg?) {\n for (const [key, value] of this) {\n callback.call(thisArg, value, key, this)\n }\n }\n\n /** Merge another object into this object, returns this. */\n merge(other?: IObservableMapInitialValues): ObservableMap {\n if (isObservableMap(other)) {\n other = new Map(other)\n }\n transaction(() => {\n if (isPlainObject(other)) {\n getPlainObjectKeys(other).forEach((key: any) =>\n this.set(key as K, (other as IKeyValueMap)[key])\n )\n } else if (Array.isArray(other)) {\n other.forEach(([key, value]) => this.set(key, value))\n } else if (isES6Map(other)) {\n if (!isPlainES6Map(other)) {\n die(19, other)\n }\n other.forEach((value, key) => this.set(key, value))\n } else if (other !== null && other !== undefined) {\n die(20, other)\n }\n })\n return this\n }\n\n clear() {\n transaction(() => {\n untracked(() => {\n for (const key of this.keys()) {\n this.delete(key)\n }\n })\n })\n }\n\n replace(values: IObservableMapInitialValues): ObservableMap {\n // Implementation requirements:\n // - respect ordering of replacement map\n // - allow interceptors to run and potentially prevent individual operations\n // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n // - note that result map may differ from replacement map due to the interceptors\n transaction(() => {\n // Convert to map so we can do quick key lookups\n const replacementMap = convertToMap(values)\n const orderedData = new Map()\n // Used for optimization\n let keysReportChangedCalled = false\n // Delete keys that don't exist in replacement map\n // if the key deletion is prevented by interceptor\n // add entry at the beginning of the result map\n for (const key of this.data_.keys()) {\n // Concurrently iterating/deleting keys\n // iterator should handle this correctly\n if (!replacementMap.has(key)) {\n const deleted = this.delete(key)\n // Was the key removed?\n if (deleted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true\n } else {\n // Delete prevented by interceptor\n const value = this.data_.get(key)\n orderedData.set(key, value)\n }\n }\n }\n // Merge entries\n for (const [key, value] of replacementMap.entries()) {\n // We will want to know whether a new key is added\n const keyExisted = this.data_.has(key)\n // Add or update value\n this.set(key, value)\n // The addition could have been prevent by interceptor\n if (this.data_.has(key)) {\n // The update could have been prevented by interceptor\n // and also we want to preserve existing values\n // so use value from _data map (instead of replacement map)\n const value = this.data_.get(key)\n orderedData.set(key, value)\n // Was a new key added?\n if (!keyExisted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true\n }\n }\n }\n // Check for possible key order change\n if (!keysReportChangedCalled) {\n if (this.data_.size !== orderedData.size) {\n // If size differs, keys are definitely modified\n this.keysAtom_.reportChanged()\n } else {\n const iter1 = this.data_.keys()\n const iter2 = orderedData.keys()\n let next1 = iter1.next()\n let next2 = iter2.next()\n while (!next1.done) {\n if (next1.value !== next2.value) {\n this.keysAtom_.reportChanged()\n break\n }\n next1 = iter1.next()\n next2 = iter2.next()\n }\n }\n }\n // Use correctly ordered map\n this.data_ = orderedData\n })\n return this\n }\n\n get size(): number {\n this.keysAtom_.reportObserved()\n return this.data_.size\n }\n\n toString(): string {\n return \"[object ObservableMap]\"\n }\n\n toJSON(): [K, V][] {\n return Array.from(this)\n }\n\n get [Symbol.toStringTag]() {\n return \"Map\"\n }\n\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n observe_(listener: (changes: IMapDidChange) => void, fireImmediately?: boolean): Lambda {\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with maps.\")\n }\n return registerListener(this, listener)\n }\n\n intercept_(handler: IInterceptor>): Lambda {\n return registerInterceptor(this, handler)\n }\n}\n\n// eslint-disable-next-line\nexport var isObservableMap = createInstanceofPredicate(\"ObservableMap\", ObservableMap) as (\n thing: any\n) => thing is ObservableMap\n\nfunction convertToMap(dataStructure: any): Map {\n if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n return dataStructure\n } else if (Array.isArray(dataStructure)) {\n return new Map(dataStructure)\n } else if (isPlainObject(dataStructure)) {\n const map = new Map()\n for (const key in dataStructure) {\n map.set(key, dataStructure[key])\n }\n return map\n } else {\n return die(21, dataStructure)\n }\n}\n","import {\n $mobx,\n createAtom,\n deepEnhancer,\n getNextId,\n IEnhancer,\n isSpyEnabled,\n hasListeners,\n IListenable,\n registerListener,\n Lambda,\n spyReportStart,\n notifyListeners,\n spyReportEnd,\n createInstanceofPredicate,\n hasInterceptors,\n interceptChange,\n IInterceptable,\n IInterceptor,\n registerInterceptor,\n checkIfStateModificationsAreAllowed,\n untracked,\n makeIterable,\n transaction,\n isES6Set,\n IAtom,\n DELETE,\n ADD,\n die,\n isFunction,\n initObservable\n} from \"../internal\"\n\nconst ObservableSetMarker = {}\n\nexport type IObservableSetInitialValues = Set | readonly T[]\n\nexport type ISetDidChange =\n | {\n object: ObservableSet\n observableKind: \"set\"\n debugObjectName: string\n type: \"add\"\n newValue: T\n }\n | {\n object: ObservableSet\n observableKind: \"set\"\n debugObjectName: string\n type: \"delete\"\n oldValue: T\n }\n\nexport type ISetWillChange =\n | {\n type: \"delete\"\n object: ObservableSet\n oldValue: T\n }\n | {\n type: \"add\"\n object: ObservableSet\n newValue: T\n }\n\nexport class ObservableSet implements Set, IInterceptable, IListenable {\n [$mobx] = ObservableSetMarker\n private data_: Set = new Set()\n atom_!: IAtom\n changeListeners_\n interceptors_\n dehancer: any\n enhancer_: (newV: any, oldV: any | undefined) => any\n\n constructor(\n initialData?: IObservableSetInitialValues,\n enhancer: IEnhancer = deepEnhancer,\n public name_ = __DEV__ ? \"ObservableSet@\" + getNextId() : \"ObservableSet\"\n ) {\n if (!isFunction(Set)) {\n die(22)\n }\n this.enhancer_ = (newV, oldV) => enhancer(newV, oldV, name_)\n initObservable(() => {\n this.atom_ = createAtom(this.name_)\n if (initialData) {\n this.replace(initialData)\n }\n })\n }\n\n private dehanceValue_(value: X): X {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n clear() {\n transaction(() => {\n untracked(() => {\n for (const value of this.data_.values()) {\n this.delete(value)\n }\n })\n })\n }\n\n forEach(callbackFn: (value: T, value2: T, set: Set) => void, thisArg?: any) {\n for (const value of this) {\n callbackFn.call(thisArg, value, value, this)\n }\n }\n\n get size() {\n this.atom_.reportObserved()\n return this.data_.size\n }\n\n add(value: T) {\n checkIfStateModificationsAreAllowed(this.atom_)\n if (hasInterceptors(this)) {\n const change = interceptChange>(this, {\n type: ADD,\n object: this,\n newValue: value\n })\n if (!change) {\n return this\n }\n // ideally, value = change.value would be done here, so that values can be\n // changed by interceptor. Same applies for other Set and Map api's.\n }\n if (!this.has(value)) {\n transaction(() => {\n this.data_.add(this.enhancer_(value, undefined))\n this.atom_.reportChanged()\n })\n const notifySpy = __DEV__ && isSpyEnabled()\n const notify = hasListeners(this)\n const change =\n notify || notifySpy\n ? >{\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n newValue: value\n }\n : null\n if (notifySpy && __DEV__) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (notifySpy && __DEV__) {\n spyReportEnd()\n }\n }\n\n return this\n }\n\n delete(value: T) {\n if (hasInterceptors(this)) {\n const change = interceptChange>(this, {\n type: DELETE,\n object: this,\n oldValue: value\n })\n if (!change) {\n return false\n }\n }\n if (this.has(value)) {\n const notifySpy = __DEV__ && isSpyEnabled()\n const notify = hasListeners(this)\n const change =\n notify || notifySpy\n ? >{\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: value\n }\n : null\n\n if (notifySpy && __DEV__) {\n spyReportStart(change!)\n }\n transaction(() => {\n this.atom_.reportChanged()\n this.data_.delete(value)\n })\n if (notify) {\n notifyListeners(this, change)\n }\n if (notifySpy && __DEV__) {\n spyReportEnd()\n }\n return true\n }\n return false\n }\n\n has(value: T) {\n this.atom_.reportObserved()\n return this.data_.has(this.dehanceValue_(value))\n }\n\n entries() {\n let nextIndex = 0\n const keys = Array.from(this.keys())\n const values = Array.from(this.values())\n return makeIterable<[T, T]>({\n next() {\n const index = nextIndex\n nextIndex += 1\n return index < values.length\n ? { value: [keys[index], values[index]], done: false }\n : { done: true }\n }\n } as any)\n }\n\n keys(): IterableIterator {\n return this.values()\n }\n\n values(): IterableIterator {\n this.atom_.reportObserved()\n const self = this\n let nextIndex = 0\n const observableValues = Array.from(this.data_.values())\n return makeIterable({\n next() {\n return nextIndex < observableValues.length\n ? { value: self.dehanceValue_(observableValues[nextIndex++]), done: false }\n : { done: true }\n }\n } as any)\n }\n\n intersection(otherSet: ReadonlySetLike | Set): Set {\n if (isES6Set(otherSet)) {\n return otherSet.intersection(this)\n } else {\n const dehancedSet = new Set(this)\n return dehancedSet.intersection(otherSet)\n }\n }\n\n union(otherSet: ReadonlySetLike | Set): Set {\n if (isES6Set(otherSet)) {\n return otherSet.union(this)\n } else {\n const dehancedSet = new Set(this)\n return dehancedSet.union(otherSet)\n }\n }\n\n difference(otherSet: ReadonlySetLike): Set {\n return new Set(this).difference(otherSet)\n }\n\n symmetricDifference(otherSet: ReadonlySetLike | Set): Set {\n if (isES6Set(otherSet)) {\n return otherSet.symmetricDifference(this)\n } else {\n const dehancedSet = new Set(this)\n return dehancedSet.symmetricDifference(otherSet)\n }\n }\n\n isSubsetOf(otherSet: ReadonlySetLike): boolean {\n return new Set(this).isSubsetOf(otherSet)\n }\n\n isSupersetOf(otherSet: ReadonlySetLike): boolean {\n return new Set(this).isSupersetOf(otherSet)\n }\n\n isDisjointFrom(otherSet: ReadonlySetLike | Set): boolean {\n if (isES6Set(otherSet)) {\n return otherSet.isDisjointFrom(this)\n } else {\n const dehancedSet = new Set(this)\n return dehancedSet.isDisjointFrom(otherSet)\n }\n }\n\n replace(other: ObservableSet | IObservableSetInitialValues): ObservableSet {\n if (isObservableSet(other)) {\n other = new Set(other)\n }\n\n transaction(() => {\n if (Array.isArray(other)) {\n this.clear()\n other.forEach(value => this.add(value))\n } else if (isES6Set(other)) {\n this.clear()\n other.forEach(value => this.add(value))\n } else if (other !== null && other !== undefined) {\n die(\"Cannot initialize set from \" + other)\n }\n })\n\n return this\n }\n observe_(listener: (changes: ISetDidChange) => void, fireImmediately?: boolean): Lambda {\n // ... 'fireImmediately' could also be true?\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with sets.\")\n }\n return registerListener(this, listener)\n }\n\n intercept_(handler: IInterceptor>): Lambda {\n return registerInterceptor(this, handler)\n }\n\n toJSON(): T[] {\n return Array.from(this)\n }\n\n toString(): string {\n return \"[object ObservableSet]\"\n }\n\n [Symbol.iterator]() {\n return this.values()\n }\n\n get [Symbol.toStringTag]() {\n return \"Set\"\n }\n}\n\n// eslint-disable-next-line\nexport var isObservableSet = createInstanceofPredicate(\"ObservableSet\", ObservableSet) as (\n thing: any\n) => thing is ObservableSet\n","import {\n CreateObservableOptions,\n getAnnotationFromOptions,\n propagateChanged,\n isAnnotation,\n $mobx,\n Atom,\n Annotation,\n ComputedValue,\n IAtom,\n IComputedValueOptions,\n IEnhancer,\n IInterceptable,\n IListenable,\n Lambda,\n ObservableValue,\n addHiddenProp,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isObject,\n isPlainObject,\n isSpyEnabled,\n notifyListeners,\n referenceEnhancer,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n startBatch,\n stringifyKey,\n globalState,\n ADD,\n UPDATE,\n die,\n hasProp,\n getDescriptor,\n storedAnnotationsSymbol,\n ownKeys,\n isOverride,\n defineProperty,\n autoAnnotation,\n getAdministration,\n getDebugName,\n objectPrototype,\n MakeResult,\n checkIfStateModificationsAreAllowed\n} from \"../internal\"\n\nconst descriptorCache = Object.create(null)\n\nexport type IObjectDidChange = {\n observableKind: \"object\"\n name: PropertyKey\n object: T\n debugObjectName: string\n} & (\n | {\n type: \"add\"\n newValue: any\n }\n | {\n type: \"update\"\n oldValue: any\n newValue: any\n }\n | {\n type: \"remove\"\n oldValue: any\n }\n)\n\nexport type IObjectWillChange =\n | {\n object: T\n type: \"update\" | \"add\"\n name: PropertyKey\n newValue: any\n }\n | {\n object: T\n type: \"remove\"\n name: PropertyKey\n }\n\nconst REMOVE = \"remove\"\n\nexport class ObservableObjectAdministration\n implements IInterceptable, IListenable\n{\n keysAtom_: IAtom\n changeListeners_\n interceptors_\n proxy_: any\n isPlainObject_: boolean\n appliedAnnotations_?: object\n private pendingKeys_: undefined | Map>\n\n constructor(\n public target_: any,\n public values_ = new Map | ComputedValue>(),\n public name_: string,\n // Used anytime annotation is not explicitely provided\n public defaultAnnotation_: Annotation = autoAnnotation\n ) {\n this.keysAtom_ = new Atom(__DEV__ ? `${this.name_}.keys` : \"ObservableObject.keys\")\n // Optimization: we use this frequently\n this.isPlainObject_ = isPlainObject(this.target_)\n if (__DEV__ && !isAnnotation(this.defaultAnnotation_)) {\n die(`defaultAnnotation must be valid annotation`)\n }\n if (__DEV__) {\n // Prepare structure for tracking which fields were already annotated\n this.appliedAnnotations_ = {}\n }\n }\n\n getObservablePropValue_(key: PropertyKey): any {\n return this.values_.get(key)!.get()\n }\n\n setObservablePropValue_(key: PropertyKey, newValue): boolean | null {\n const observable = this.values_.get(key)\n if (observable instanceof ComputedValue) {\n observable.set(newValue)\n return true\n }\n\n // intercept\n if (hasInterceptors(this)) {\n const change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_ || this.target_,\n name: key,\n newValue\n })\n if (!change) {\n return null\n }\n newValue = (change as any).newValue\n }\n newValue = (observable as any).prepareNewValue_(newValue)\n\n // notify spy & observers\n if (newValue !== globalState.UNCHANGED) {\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n const change: IObjectDidChange | null =\n notify || notifySpy\n ? {\n type: UPDATE,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n oldValue: (observable as any).value_,\n name: key,\n newValue\n }\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n ;(observable as ObservableValue).setNewValue_(newValue)\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n return true\n }\n\n get_(key: PropertyKey): any {\n if (globalState.trackingDerivation && !hasProp(this.target_, key)) {\n // Key doesn't exist yet, subscribe for it in case it's added later\n this.has_(key)\n }\n return this.target_[key]\n }\n\n /**\n * @param {PropertyKey} key\n * @param {any} value\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n set_(key: PropertyKey, value: any, proxyTrap: boolean = false): boolean | null {\n // Don't use .has(key) - we care about own\n if (hasProp(this.target_, key)) {\n // Existing prop\n if (this.values_.has(key)) {\n // Observable (can be intercepted)\n return this.setObservablePropValue_(key, value)\n } else if (proxyTrap) {\n // Non-observable - proxy\n return Reflect.set(this.target_, key, value)\n } else {\n // Non-observable\n this.target_[key] = value\n return true\n }\n } else {\n // New prop\n return this.extend_(\n key,\n { value, enumerable: true, writable: true, configurable: true },\n this.defaultAnnotation_,\n proxyTrap\n )\n }\n }\n\n // Trap for \"in\"\n has_(key: PropertyKey): boolean {\n if (!globalState.trackingDerivation) {\n // Skip key subscription outside derivation\n return key in this.target_\n }\n this.pendingKeys_ ||= new Map()\n let entry = this.pendingKeys_.get(key)\n if (!entry) {\n entry = new ObservableValue(\n key in this.target_,\n referenceEnhancer,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableObject.key?\",\n false\n )\n this.pendingKeys_.set(key, entry)\n }\n return entry.get()\n }\n\n /**\n * @param {PropertyKey} key\n * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\n */\n make_(key: PropertyKey, annotation: Annotation | boolean): void {\n if (annotation === true) {\n annotation = this.defaultAnnotation_\n }\n if (annotation === false) {\n return\n }\n assertAnnotable(this, annotation, key)\n if (!(key in this.target_)) {\n // Throw on missing key, except for decorators:\n // Decorator annotations are collected from whole prototype chain.\n // When called from super() some props may not exist yet.\n // However we don't have to worry about missing prop,\n // because the decorator must have been applied to something.\n if (this.target_[storedAnnotationsSymbol]?.[key]) {\n return // will be annotated by subclass constructor\n } else {\n die(1, annotation.annotationType_, `${this.name_}.${key.toString()}`)\n }\n }\n let source = this.target_\n while (source && source !== objectPrototype) {\n const descriptor = getDescriptor(source, key)\n if (descriptor) {\n const outcome = annotation.make_(this, key, descriptor, source)\n if (outcome === MakeResult.Cancel) {\n return\n }\n if (outcome === MakeResult.Break) {\n break\n }\n }\n source = Object.getPrototypeOf(source)\n }\n recordAnnotationApplied(this, annotation, key)\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n extend_(\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n annotation: Annotation | boolean,\n proxyTrap: boolean = false\n ): boolean | null {\n if (annotation === true) {\n annotation = this.defaultAnnotation_\n }\n if (annotation === false) {\n return this.defineProperty_(key, descriptor, proxyTrap)\n }\n assertAnnotable(this, annotation, key)\n const outcome = annotation.extend_(this, key, descriptor, proxyTrap)\n if (outcome) {\n recordAnnotationApplied(this, annotation, key)\n }\n return outcome\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n defineProperty_(\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean = false\n ): boolean | null {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: descriptor.value\n })\n if (!change) {\n return null\n }\n const { newValue } = change as any\n if (descriptor.value !== newValue) {\n descriptor = {\n ...descriptor,\n value: newValue\n }\n }\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n // Notify\n this.notifyPropertyAddition_(key, descriptor.value)\n } finally {\n endBatch()\n }\n return true\n }\n\n // If original descriptor becomes relevant, move this to annotation directly\n defineObservableProperty_(\n key: PropertyKey,\n value: any,\n enhancer: IEnhancer,\n proxyTrap: boolean = false\n ): boolean | null {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: value\n })\n if (!change) {\n return null\n }\n value = (change as any).newValue\n }\n\n const cachedDescriptor = getCachedObservablePropDescriptor(key)\n const descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: true,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n const observable = new ObservableValue(\n value,\n enhancer,\n __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\",\n false\n )\n\n this.values_.set(key, observable)\n\n // Notify (value possibly changed by ObservableValue)\n this.notifyPropertyAddition_(key, observable.value_)\n } finally {\n endBatch()\n }\n return true\n }\n\n // If original descriptor becomes relevant, move this to annotation directly\n defineComputedProperty_(\n key: PropertyKey,\n options: IComputedValueOptions,\n proxyTrap: boolean = false\n ): boolean | null {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: undefined\n })\n if (!change) {\n return null\n }\n }\n options.name ||= __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\"\n options.context = this.proxy_ || this.target_\n const cachedDescriptor = getCachedObservablePropDescriptor(key)\n const descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: false,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n this.values_.set(key, new ComputedValue(options))\n\n // Notify\n this.notifyPropertyAddition_(key, undefined)\n } finally {\n endBatch()\n }\n return true\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n delete_(key: PropertyKey, proxyTrap: boolean = false): boolean | null {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n // No such prop\n if (!hasProp(this.target_, key)) {\n return true\n }\n\n // Intercept\n if (hasInterceptors(this)) {\n const change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: REMOVE\n })\n // Cancelled\n if (!change) {\n return null\n }\n }\n\n // Delete\n try {\n startBatch()\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n const observable = this.values_.get(key)\n // Value needed for spies/listeners\n let value = undefined\n // Optimization: don't pull the value unless we will need it\n if (!observable && (notify || notifySpy)) {\n value = getDescriptor(this.target_, key)?.value\n }\n // delete prop (do first, may fail)\n if (proxyTrap) {\n if (!Reflect.deleteProperty(this.target_, key)) {\n return false\n }\n } else {\n delete this.target_[key]\n }\n // Allow re-annotating this field\n if (__DEV__) {\n delete this.appliedAnnotations_![key]\n }\n // Clear observable\n if (observable) {\n this.values_.delete(key)\n // for computed, value is undefined\n if (observable instanceof ObservableValue) {\n value = observable.value_\n }\n // Notify: autorun(() => obj[key]), see #1796\n propagateChanged(observable)\n }\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged()\n\n // Notify \"has\" observers\n // \"in\" as it may still exist in proto\n this.pendingKeys_?.get(key)?.set(key in this.target_)\n\n // Notify spies/listeners\n if (notify || notifySpy) {\n const change: IObjectDidChange = {\n type: REMOVE,\n observableKind: \"object\",\n object: this.proxy_ || this.target_,\n debugObjectName: this.name_,\n oldValue: value,\n name: key\n }\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n } finally {\n endBatch()\n }\n return true\n }\n\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n observe_(callback: (changes: IObjectDidChange) => void, fireImmediately?: boolean): Lambda {\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support the fire immediately property for observable objects.\")\n }\n return registerListener(this, callback)\n }\n\n intercept_(handler): Lambda {\n return registerInterceptor(this, handler)\n }\n\n notifyPropertyAddition_(key: PropertyKey, value: any) {\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n if (notify || notifySpy) {\n const change: IObjectDidChange | null =\n notify || notifySpy\n ? ({\n type: ADD,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: value\n } as const)\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n this.pendingKeys_?.get(key)?.set(true)\n\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged()\n }\n\n ownKeys_(): Array {\n this.keysAtom_.reportObserved()\n return ownKeys(this.target_)\n }\n\n keys_(): PropertyKey[] {\n // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n // We choose to over-report in Object.keys(object), because:\n // - typically it's used with simple data objects\n // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n this.keysAtom_.reportObserved()\n return Object.keys(this.target_)\n }\n}\n\nexport interface IIsObservableObject {\n [$mobx]: ObservableObjectAdministration\n}\n\nexport function asObservableObject(\n target: any,\n options?: CreateObservableOptions\n): IIsObservableObject {\n if (__DEV__ && options && isObservableObject(target)) {\n die(`Options can't be provided for already observable objects.`)\n }\n\n if (hasProp(target, $mobx)) {\n if (__DEV__ && !(getAdministration(target) instanceof ObservableObjectAdministration)) {\n die(\n `Cannot convert '${getDebugName(target)}' into observable object:` +\n `\\nThe target is already observable of different type.` +\n `\\nExtending builtins is not supported.`\n )\n }\n return target\n }\n\n if (__DEV__ && !Object.isExtensible(target)) {\n die(\"Cannot make the designated object observable; it is not extensible\")\n }\n\n const name =\n options?.name ??\n (__DEV__\n ? `${\n isPlainObject(target) ? \"ObservableObject\" : target.constructor.name\n }@${getNextId()}`\n : \"ObservableObject\")\n\n const adm = new ObservableObjectAdministration(\n target,\n new Map(),\n String(name),\n getAnnotationFromOptions(options)\n )\n\n addHiddenProp(target, $mobx, adm)\n\n return target\n}\n\nconst isObservableObjectAdministration = createInstanceofPredicate(\n \"ObservableObjectAdministration\",\n ObservableObjectAdministration\n)\n\nfunction getCachedObservablePropDescriptor(key) {\n return (\n descriptorCache[key] ||\n (descriptorCache[key] = {\n get() {\n return this[$mobx].getObservablePropValue_(key)\n },\n set(value) {\n return this[$mobx].setObservablePropValue_(key, value)\n }\n })\n )\n}\n\nexport function isObservableObject(thing: any): boolean {\n if (isObject(thing)) {\n return isObservableObjectAdministration((thing as any)[$mobx])\n }\n return false\n}\n\nexport function recordAnnotationApplied(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey\n) {\n if (__DEV__) {\n adm.appliedAnnotations_![key] = annotation\n }\n // Remove applied decorator annotation so we don't try to apply it again in subclass constructor\n delete adm.target_[storedAnnotationsSymbol]?.[key]\n}\n\nfunction assertAnnotable(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey\n) {\n // Valid annotation\n if (__DEV__ && !isAnnotation(annotation)) {\n die(`Cannot annotate '${adm.name_}.${key.toString()}': Invalid annotation.`)\n }\n\n /*\n // Configurable, not sealed, not frozen\n // Possibly not needed, just a little better error then the one thrown by engine.\n // Cases where this would be useful the most (subclass field initializer) are not interceptable by this.\n if (__DEV__) {\n const configurable = getDescriptor(adm.target_, key)?.configurable\n const frozen = Object.isFrozen(adm.target_)\n const sealed = Object.isSealed(adm.target_)\n if (!configurable || frozen || sealed) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const requestedAnnotationType = annotation.annotationType_\n let error = `Cannot apply '${requestedAnnotationType}' to '${fieldName}':`\n if (frozen) {\n error += `\\nObject is frozen.`\n }\n if (sealed) {\n error += `\\nObject is sealed.`\n }\n if (!configurable) {\n error += `\\nproperty is not configurable.`\n // Mention only if caused by us to avoid confusion\n if (hasProp(adm.appliedAnnotations!, key)) {\n error += `\\nTo prevent accidental re-definition of a field by a subclass, `\n error += `all annotated fields of non-plain objects (classes) are not configurable.`\n }\n }\n die(error)\n }\n }\n */\n\n // Not annotated\n if (__DEV__ && !isOverride(annotation) && hasProp(adm.appliedAnnotations_!, key)) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const currentAnnotationType = adm.appliedAnnotations_![key].annotationType_\n const requestedAnnotationType = annotation.annotationType_\n die(\n `Cannot apply '${requestedAnnotationType}' to '${fieldName}':` +\n `\\nThe field is already annotated with '${currentAnnotationType}'.` +\n `\\nRe-annotating fields is not allowed.` +\n `\\nUse 'override' annotation for methods overridden by subclass.`\n )\n }\n}\n","import {\n getNextId,\n addHiddenFinalProp,\n makeIterable,\n addHiddenProp,\n ObservableArrayAdministration,\n $mobx,\n arrayExtensions,\n IEnhancer,\n isObservableArray,\n IObservableArray,\n defineProperty,\n initObservable\n} from \"../internal\"\n\n// Bug in safari 9.* (or iOS 9 safari mobile). See #364\nconst ENTRY_0 = createArrayEntryDescriptor(0)\n\nconst safariPrototypeSetterInheritanceBug = (() => {\n let v = false\n const p = {}\n Object.defineProperty(p, \"0\", {\n set: () => {\n v = true\n }\n })\n Object.create(p)[\"0\"] = 1\n return v === false\n})()\n\n/**\n * This array buffer contains two lists of properties, so that all arrays\n * can recycle their property definitions, which significantly improves performance of creating\n * properties on the fly.\n */\nlet OBSERVABLE_ARRAY_BUFFER_SIZE = 0\n\n// Typescript workaround to make sure ObservableArray extends Array\nclass StubArray {}\nfunction inherit(ctor, proto) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ctor.prototype, proto)\n } else if (ctor.prototype.__proto__ !== undefined) {\n ctor.prototype.__proto__ = proto\n } else {\n ctor.prototype = proto\n }\n}\ninherit(StubArray, Array.prototype)\n\n// Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\n\nexport class LegacyObservableArray extends StubArray {\n constructor(\n initialValues: T[] | undefined,\n enhancer: IEnhancer,\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n owned = false\n ) {\n super()\n initObservable(() => {\n const adm = new ObservableArrayAdministration(name, enhancer, owned, true)\n adm.proxy_ = this as any\n addHiddenFinalProp(this, $mobx, adm)\n\n if (initialValues && initialValues.length) {\n // @ts-ignore\n this.spliceWithArray(0, 0, initialValues)\n }\n\n if (safariPrototypeSetterInheritanceBug) {\n // Seems that Safari won't use numeric prototype setter until any * numeric property is\n // defined on the instance. After that it works fine, even if this property is deleted.\n Object.defineProperty(this, \"0\", ENTRY_0)\n }\n })\n }\n\n concat(...arrays: T[][]): T[] {\n ;(this[$mobx] as ObservableArrayAdministration).atom_.reportObserved()\n return Array.prototype.concat.apply(\n (this as any).slice(),\n //@ts-ignore\n arrays.map(a => (isObservableArray(a) ? a.slice() : a))\n )\n }\n\n get length(): number {\n return (this[$mobx] as ObservableArrayAdministration).getArrayLength_()\n }\n\n set length(newLength: number) {\n ;(this[$mobx] as ObservableArrayAdministration).setArrayLength_(newLength)\n }\n\n get [Symbol.toStringTag]() {\n return \"Array\"\n }\n\n [Symbol.iterator]() {\n const self = this\n let nextIndex = 0\n return makeIterable({\n next() {\n return nextIndex < self.length\n ? { value: self[nextIndex++], done: false }\n : { done: true, value: undefined }\n }\n })\n }\n}\n\nObject.entries(arrayExtensions).forEach(([prop, fn]) => {\n if (prop !== \"concat\") {\n addHiddenProp(LegacyObservableArray.prototype, prop, fn)\n }\n})\n\nfunction createArrayEntryDescriptor(index: number) {\n return {\n enumerable: false,\n configurable: true,\n get: function () {\n return this[$mobx].get_(index)\n },\n set: function (value) {\n this[$mobx].set_(index, value)\n }\n }\n}\n\nfunction createArrayBufferItem(index: number) {\n defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index))\n}\n\nexport function reserveArrayBuffer(max: number) {\n if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n for (let index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++) {\n createArrayBufferItem(index)\n }\n OBSERVABLE_ARRAY_BUFFER_SIZE = max\n }\n}\n\nreserveArrayBuffer(1000)\n\nexport function createLegacyArray(\n initialValues: T[] | undefined,\n enhancer: IEnhancer,\n name?: string\n): IObservableArray {\n return new LegacyObservableArray(initialValues, enhancer, name) as any\n}\n","import { isAction } from \"../api/action\"\nimport {\n $mobx,\n IDepTreeNode,\n isAtom,\n isComputedValue,\n isObservableArray,\n isObservableMap,\n isObservableObject,\n isReaction,\n isObservableSet,\n die,\n isFunction,\n allowStateChangesStart,\n untrackedStart,\n allowStateChangesEnd,\n untrackedEnd,\n startBatch,\n endBatch\n} from \"../internal\"\n\nexport function getAtom(thing: any, property?: PropertyKey): IDepTreeNode {\n if (typeof thing === \"object\" && thing !== null) {\n if (isObservableArray(thing)) {\n if (property !== undefined) {\n die(23)\n }\n return (thing as any)[$mobx].atom_\n }\n if (isObservableSet(thing)) {\n return thing.atom_\n }\n if (isObservableMap(thing)) {\n if (property === undefined) {\n return thing.keysAtom_\n }\n const observable = thing.data_.get(property) || thing.hasMap_.get(property)\n if (!observable) {\n die(25, property, getDebugName(thing))\n }\n return observable\n }\n if (property && !thing[$mobx]) {\n thing[property]\n } // See #1072\n if (isObservableObject(thing)) {\n if (!property) {\n return die(26)\n }\n const observable = (thing as any)[$mobx].values_.get(property)\n if (!observable) {\n die(27, property, getDebugName(thing))\n }\n return observable\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing\n }\n } else if (isFunction(thing)) {\n if (isReaction(thing[$mobx])) {\n // disposer function\n return thing[$mobx]\n }\n }\n die(28)\n}\n\nexport function getAdministration(thing: any, property?: string) {\n if (!thing) {\n die(29)\n }\n if (property !== undefined) {\n return getAdministration(getAtom(thing, property))\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing\n }\n if (isObservableMap(thing) || isObservableSet(thing)) {\n return thing\n }\n if (thing[$mobx]) {\n return thing[$mobx]\n }\n die(24, thing)\n}\n\nexport function getDebugName(thing: any, property?: string): string {\n let named\n if (property !== undefined) {\n named = getAtom(thing, property)\n } else if (isAction(thing)) {\n return thing.name\n } else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) {\n named = getAdministration(thing)\n } else {\n // valid for arrays as well\n named = getAtom(thing)\n }\n return named.name_\n}\n\n/**\n * Helper function for initializing observable structures, it applies:\n * 1. allowStateChanges so we don't violate enforceActions.\n * 2. untracked so we don't accidentaly subscribe to anything observable accessed during init in case the observable is created inside derivation.\n * 3. batch to avoid state version updates\n */\nexport function initObservable(cb: () => T): T {\n const derivation = untrackedStart()\n const allowStateChanges = allowStateChangesStart(true)\n startBatch()\n try {\n return cb()\n } finally {\n endBatch()\n allowStateChangesEnd(allowStateChanges)\n untrackedEnd(derivation)\n }\n}\n","import {\n isES6Map,\n isObservableArray,\n isObservableMap,\n isES6Set,\n isObservableSet,\n hasProp,\n isFunction,\n objectPrototype\n} from \"../internal\"\n\ndeclare const Symbol\nconst toString = objectPrototype.toString\n\nexport function deepEqual(a: any, b: any, depth: number = -1): boolean {\n return eq(a, b, depth)\n}\n\n// Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a: any, b: any, depth: number, aStack?: any[], bStack?: any[]) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) {\n return a !== 0 || 1 / a === 1 / b\n }\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) {\n return false\n }\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) {\n return b !== b\n }\n // Exhaust primitive checks\n const type = typeof a\n if (type !== \"function\" && type !== \"object\" && typeof b != \"object\") {\n return false\n }\n\n // Compare `[[Class]]` names.\n const className = toString.call(a)\n if (className !== toString.call(b)) {\n return false\n }\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case \"[object RegExp]\":\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case \"[object String]\":\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return \"\" + a === \"\" + b\n case \"[object Number]\":\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) {\n return +b !== +b\n }\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b\n case \"[object Date]\":\n case \"[object Boolean]\":\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b\n case \"[object Symbol]\":\n return (\n typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b)\n )\n case \"[object Map]\":\n case \"[object Set]\":\n // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n // Hide this extra level by increasing the depth.\n if (depth >= 0) {\n depth++\n }\n break\n }\n // Unwrap any wrapped objects.\n a = unwrap(a)\n b = unwrap(b)\n\n const areArrays = className === \"[object Array]\"\n if (!areArrays) {\n if (typeof a != \"object\" || typeof b != \"object\") {\n return false\n }\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n const aCtor = a.constructor,\n bCtor = b.constructor\n if (\n aCtor !== bCtor &&\n !(\n isFunction(aCtor) &&\n aCtor instanceof aCtor &&\n isFunction(bCtor) &&\n bCtor instanceof bCtor\n ) &&\n \"constructor\" in a &&\n \"constructor\" in b\n ) {\n return false\n }\n }\n\n if (depth === 0) {\n return false\n } else if (depth < 0) {\n depth = -1\n }\n\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || []\n bStack = bStack || []\n let length = aStack.length\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) {\n return bStack[length] === b\n }\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a)\n bStack.push(b)\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length\n if (length !== b.length) {\n return false\n }\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], depth - 1, aStack, bStack)) {\n return false\n }\n }\n } else {\n // Deep compare objects.\n const keys = Object.keys(a)\n let key\n length = keys.length\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object.keys(b).length !== length) {\n return false\n }\n while (length--) {\n // Deep compare each member\n key = keys[length]\n if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) {\n return false\n }\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop()\n bStack.pop()\n return true\n}\n\nfunction unwrap(a: any) {\n if (isObservableArray(a)) {\n return a.slice()\n }\n if (isES6Map(a) || isObservableMap(a)) {\n return Array.from(a.entries())\n }\n if (isES6Set(a) || isObservableSet(a)) {\n return Array.from(a.entries())\n }\n return a\n}\n","export function makeIterable(iterator: Iterator): IterableIterator {\n iterator[Symbol.iterator] = getSelf\n return iterator as any\n}\n\nfunction getSelf() {\n return this\n}\n","/**\n * (c) Michel Weststrate 2015 - 2020\n * MIT Licensed\n *\n * Welcome to the mobx sources! To get a global overview of how MobX internally works,\n * this is a good place to start:\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n *\n * Source folders:\n * ===============\n *\n * - api/ Most of the public static methods exposed by the module can be found here.\n * - core/ Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\n * - types/ All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\n * - utils/ Utility stuff.\n *\n */\nimport { die } from \"./errors\"\nimport { getGlobal } from \"./utils/global\"\n;[\"Symbol\", \"Map\", \"Set\"].forEach(m => {\n let g = getGlobal()\n if (typeof g[m] === \"undefined\") {\n die(`MobX requires global '${m}' to be available or polyfilled`)\n }\n})\n\nimport { spy, getDebugName, $mobx } from \"./internal\"\n\nexport {\n IObservable,\n IDepTreeNode,\n Reaction,\n IReactionPublic,\n IReactionDisposer,\n untracked,\n IAtom,\n createAtom,\n spy,\n IComputedValue,\n IEqualsComparer,\n comparer,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n IObjectWillChange,\n IObjectDidChange,\n isObservableObject,\n IValueDidChange,\n IValueWillChange,\n IObservableValue,\n isObservableValue as isBoxedObservable,\n IObservableArray,\n IArrayWillChange,\n IArrayWillSplice,\n IArraySplice,\n IArrayUpdate,\n IArrayDidChange,\n isObservableArray,\n IKeyValueMap,\n ObservableMap,\n IMapEntries,\n IMapEntry,\n IMapWillChange,\n IMapDidChange,\n isObservableMap,\n IObservableMapInitialValues,\n ObservableSet,\n isObservableSet,\n ISetDidChange,\n ISetWillChange,\n IObservableSetInitialValues,\n transaction,\n observable,\n IObservableFactory,\n CreateObservableOptions,\n computed,\n IComputedFactory,\n isObservable,\n isObservableProp,\n isComputed,\n isComputedProp,\n extendObservable,\n observe,\n intercept,\n autorun,\n IAutorunOptions,\n reaction,\n IReactionOptions,\n when,\n IWhenOptions,\n action,\n isAction,\n runInAction,\n IActionFactory,\n keys,\n values,\n entries,\n set,\n remove,\n has,\n get,\n apiOwnKeys as ownKeys,\n apiDefineProperty as defineProperty,\n configure,\n onBecomeObserved,\n onBecomeUnobserved,\n flow,\n isFlow,\n flowResult,\n FlowCancellationError,\n isFlowCancellationError,\n toJS,\n trace,\n IObserverTree,\n IDependencyTree,\n getDependencyTree,\n getObserverTree,\n resetGlobalState as _resetGlobalState,\n getGlobalState as _getGlobalState,\n getDebugName,\n getAtom,\n getAdministration as _getAdministration,\n allowStateChanges as _allowStateChanges,\n runInAction as _allowStateChangesInsideComputed, // This has become the default behavior in Mobx 6\n Lambda,\n $mobx,\n isComputingDerivation as _isComputingDerivation,\n onReactionError,\n interceptReads as _interceptReads,\n IComputedValueOptions,\n IActionRunInfo,\n _startAction,\n _endAction,\n allowStateReadsStart as _allowStateReadsStart,\n allowStateReadsEnd as _allowStateReadsEnd,\n makeObservable,\n makeAutoObservable,\n autoAction as _autoAction,\n AnnotationsMap,\n AnnotationMapEntry,\n override\n} from \"./internal\"\n\n// Devtools support\ndeclare const __MOBX_DEVTOOLS_GLOBAL_HOOK__: { injectMobx: (any) => void }\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n // See: https://github.com/andykog/mobx-devtools/\n __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n spy,\n extras: {\n getDebugName\n },\n $mobx\n })\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/** @license React v17.0.2\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\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(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 D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(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){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(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(oa,\npa);D[b]=new B(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(oa,pa);D[b]=new B(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(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(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 ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function 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 m({},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 $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(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\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(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 bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!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,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({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 vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(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}}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(y(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;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&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=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){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 Oe(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)}\nvar Pe=fa&&\"documentMode\"in document&&11>=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&&Oe(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&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;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}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)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=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(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&64))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 jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"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[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,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=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\n\nvar unescapeHtmlEntity = function unescapeHtmlEntity(m) {\n return htmlEntities[m];\n};\n\nexport var unescape = function unescape(text) {\n return text.replace(matchHtmlEntity, unescapeHtmlEntity);\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { createContext } from 'react';\nimport { unescape } from './unescape';\nvar defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape: unescape\n};\nvar i18nInstance;\nexport var I18nContext = createContext();\nexport function setDefaults() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options);\n}\nexport function getDefaults() {\n return defaultOptions;\n}\nexport var ReportNamespaces = function () {\n function ReportNamespaces() {\n _classCallCheck(this, ReportNamespaces);\n\n this.usedNamespaces = {};\n }\n\n _createClass(ReportNamespaces, [{\n key: \"addUsedNamespaces\",\n value: function addUsedNamespaces(namespaces) {\n var _this = this;\n\n namespaces.forEach(function (ns) {\n if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n });\n }\n }, {\n key: \"getUsedNamespaces\",\n value: function getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n }]);\n\n return ReportNamespaces;\n}();\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}\nexport var initReactI18next = {\n type: '3rdParty',\n init: function init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};\nexport function composeInitialProps(ForComponent) {\n return function (ctx) {\n return new Promise(function (resolve) {\n var i18nInitialProps = getInitialProps();\n\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n resolve(_objectSpread(_objectSpread({}, componentsInitialProps), i18nInitialProps));\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n };\n}\nexport function getInitialProps() {\n var i18n = getI18n();\n var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n var ret = {};\n var initialI18nStore = {};\n i18n.languages.forEach(function (l) {\n initialI18nStore[l] = {};\n namespaces.forEach(function (ns) {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","export function warn() {\n if (console && console.warn) {\n var _console;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'string') args[0] = \"react-i18next:: \".concat(args[0]);\n\n (_console = console).warn.apply(_console, args);\n }\n}\nvar alreadyWarned = {};\nexport function warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn.apply(void 0, args);\n}\nexport function loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, function () {\n if (i18n.isInitialized) {\n cb();\n } else {\n var initialized = function initialized() {\n setTimeout(function () {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n\n i18n.on('initialized', initialized);\n }\n });\n}\n\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var lng = i18n.languages[0];\n var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n var lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = i18n.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\n\nexport function hasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n\n var isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n\n if (!isNewerI18next) {\n return oldI18nextHasLoadedNamespace(ns, i18n, options);\n }\n\n return i18n.hasLoadedNamespace(ns, {\n precheck: function precheck(i18nInstance, loadNotPending) {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n}\nexport function getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { useState, useEffect, useContext, useRef } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context';\nimport { warnOnce, loadNamespaces, hasLoadedNamespace } from './utils';\n\nvar usePrevious = function usePrevious(value, ignore) {\n var ref = useRef();\n useEffect(function () {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\n\nexport function useTranslation(ns) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nFromProps = props.i18n;\n\n var _ref = useContext(I18nContext) || {},\n i18nFromContext = _ref.i18n,\n defaultNSFromContext = _ref.defaultNS;\n\n var i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n\n var notReadyT = function notReadyT(k) {\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n\n var retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n\n if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n\n var i18nOptions = _objectSpread(_objectSpread(_objectSpread({}, getDefaults()), i18n.options.react), props);\n\n var useSuspense = i18nOptions.useSuspense,\n keyPrefix = i18nOptions.keyPrefix;\n var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(function (n) {\n return hasLoadedNamespace(n, i18n, i18nOptions);\n });\n\n function getT() {\n return i18n.getFixedT(null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n }\n\n var _useState = useState(getT),\n _useState2 = _slicedToArray(_useState, 2),\n t = _useState2[0],\n setT = _useState2[1];\n\n var joinedNS = namespaces.join();\n var previousJoinedNS = usePrevious(joinedNS);\n var isMounted = useRef(true);\n useEffect(function () {\n var bindI18n = i18nOptions.bindI18n,\n bindI18nStore = i18nOptions.bindI18nStore;\n isMounted.current = true;\n\n if (!ready && !useSuspense) {\n loadNamespaces(i18n, namespaces, function () {\n if (isMounted.current) setT(getT);\n });\n }\n\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getT);\n }\n\n function boundReset() {\n if (isMounted.current) setT(getT);\n }\n\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n return function () {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {\n return i18n.off(e, boundReset);\n });\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(function (e) {\n return i18n.store.off(e, boundReset);\n });\n };\n }, [i18n, joinedNS]);\n var isInitial = useRef(true);\n useEffect(function () {\n if (isMounted.current && !isInitial.current) {\n setT(getT);\n }\n\n isInitial.current = false;\n }, [i18n, keyPrefix]);\n var ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(function (resolve) {\n loadNamespaces(i18n, namespaces, function () {\n resolve();\n });\n });\n}","import type {\n FormEncType,\n HTMLFormMethod,\n RelativeRoutingType,\n} from \"@remix-run/router\";\nimport { stripBasename, UNSAFE_warning as warning } from \"@remix-run/router\";\n\nexport const defaultMethod: HTMLFormMethod = \"get\";\nconst defaultEncType: FormEncType = \"application/x-www-form-urlencoded\";\n\nexport function isHtmlElement(object: any): object is HTMLElement {\n return object != null && typeof object.tagName === \"string\";\n}\n\nexport function isButtonElement(object: any): object is HTMLButtonElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\n\nexport function isFormElement(object: any): object is HTMLFormElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\n\nexport function isInputElement(object: any): object is HTMLInputElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\n\ntype LimitedMouseEvent = Pick<\n MouseEvent,\n \"button\" | \"metaKey\" | \"altKey\" | \"ctrlKey\" | \"shiftKey\"\n>;\n\nfunction isModifiedEvent(event: LimitedMouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport function shouldProcessLinkClick(\n event: LimitedMouseEvent,\n target?: string\n) {\n return (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n );\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n\nexport function getSearchParamsForLocation(\n locationSearch: string,\n defaultSearchParams: URLSearchParams | null\n) {\n let searchParams = createSearchParams(locationSearch);\n\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n });\n }\n\n return searchParams;\n}\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\nexport type SubmitTarget =\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | JsonValue\n | null;\n\n// One-time check for submitter support\nlet _formDataSupportsSubmitter: boolean | null = null;\n\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(\n document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0\n );\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\n\n/**\n * Submit options shared by both navigations and fetchers\n */\ninterface SharedSubmitOptions {\n /**\n * The HTTP method used to submit the form. Overrides ``.\n * Defaults to \"GET\".\n */\n method?: HTMLFormMethod;\n\n /**\n * The action URL path used to submit the form. Overrides ``.\n * Defaults to the path of the current route.\n */\n action?: string;\n\n /**\n * The encoding used to submit the form. Overrides ``.\n * Defaults to \"application/x-www-form-urlencoded\".\n */\n encType?: FormEncType;\n\n /**\n * Determines whether the form action is relative to the route hierarchy or\n * the pathname. Use this if you want to opt out of navigating the route\n * hierarchy and want to instead route based on /-delimited URL segments\n */\n relative?: RelativeRoutingType;\n\n /**\n * In browser-based environments, prevent resetting scroll after this\n * navigation when using the component\n */\n preventScrollReset?: boolean;\n\n /**\n * Enable flushSync for this submission's state updates\n */\n unstable_flushSync?: boolean;\n}\n\n/**\n * Submit options available to fetchers\n */\nexport interface FetcherSubmitOptions extends SharedSubmitOptions {}\n\n/**\n * Submit options available to navigations\n */\nexport interface SubmitOptions extends FetcherSubmitOptions {\n /**\n * Set `true` to replace the current entry in the browser's history stack\n * instead of creating a new one (i.e. stay on \"the same page\"). Defaults\n * to `false`.\n */\n replace?: boolean;\n\n /**\n * State object to add to the history stack entry for this navigation\n */\n state?: any;\n\n /**\n * Indicate a specific fetcherKey to use when using navigate=false\n */\n fetcherKey?: string;\n\n /**\n * navigate=false will use a fetcher instead of a navigation\n */\n navigate?: boolean;\n\n /**\n * Enable view transitions on this submission navigation\n */\n unstable_viewTransition?: boolean;\n}\n\nconst supportedFormEncTypes: Set = new Set([\n \"application/x-www-form-urlencoded\",\n \"multipart/form-data\",\n \"text/plain\",\n]);\n\nfunction getFormEncType(encType: string | null) {\n if (encType != null && !supportedFormEncTypes.has(encType as FormEncType)) {\n warning(\n false,\n `\"${encType}\" is not a valid \\`encType\\` for \\`\\`/\\`\\` ` +\n `and will default to \"${defaultEncType}\"`\n );\n\n return null;\n }\n return encType;\n}\n\nexport function getFormSubmissionInfo(\n target: SubmitTarget,\n basename: string\n): {\n action: string | null;\n method: string;\n encType: string;\n formData: FormData | undefined;\n body: any;\n} {\n let method: string;\n let action: string | null;\n let encType: string;\n let formData: FormData | undefined;\n let body: any;\n\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n\n formData = new FormData(target);\n } else if (\n isButtonElement(target) ||\n (isInputElement(target) &&\n (target.type === \"submit\" || target.type === \"image\"))\n ) {\n let form = target.form;\n\n if (form == null) {\n throw new Error(\n `Cannot submit a