@veecode-platform/plugin-veecode-homepage-dynamic 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/components/VeeCodeHomePage.esm.js +0 -2
  2. package/dist/components/VeeCodeHomePage.esm.js.map +1 -1
  3. package/dist-scalprum/plugin-manifest.json +3 -3
  4. package/dist-scalprum/static/{1213.412457e8.chunk.js → 1213.aff960fc.chunk.js} +3 -3
  5. package/dist-scalprum/static/1213.aff960fc.chunk.js.map +1 -0
  6. package/dist-scalprum/static/2211.f5266f49.chunk.js +29 -0
  7. package/dist-scalprum/static/2211.f5266f49.chunk.js.map +1 -0
  8. package/dist-scalprum/static/3837.e9b60659.chunk.js +2 -0
  9. package/dist-scalprum/static/3837.e9b60659.chunk.js.map +1 -0
  10. package/dist-scalprum/static/41.53c70bd6.chunk.js +2 -0
  11. package/dist-scalprum/static/41.53c70bd6.chunk.js.map +1 -0
  12. package/dist-scalprum/static/{4197.8a8b877f.chunk.js → 4197.0e023080.chunk.js} +2 -2
  13. package/dist-scalprum/static/{4197.8a8b877f.chunk.js.map → 4197.0e023080.chunk.js.map} +1 -1
  14. package/dist-scalprum/static/{4864.0a352dc6.chunk.js → 4864.3cede332.chunk.js} +2 -2
  15. package/dist-scalprum/static/{4864.0a352dc6.chunk.js.map → 4864.3cede332.chunk.js.map} +1 -1
  16. package/dist-scalprum/static/{5255.21365d93.chunk.js → 5255.31f4471a.chunk.js} +2 -2
  17. package/dist-scalprum/static/{5255.21365d93.chunk.js.map → 5255.31f4471a.chunk.js.map} +1 -1
  18. package/dist-scalprum/static/5749.9f83e5fe.chunk.js +179 -0
  19. package/dist-scalprum/static/5749.9f83e5fe.chunk.js.map +1 -0
  20. package/dist-scalprum/static/{5888.d5ff87d6.chunk.js → 5888.39088266.chunk.js} +1 -1
  21. package/dist-scalprum/static/{5888.d5ff87d6.chunk.js.map → 5888.39088266.chunk.js.map} +1 -1
  22. package/dist-scalprum/static/6123.b8f54e25.chunk.js +2 -0
  23. package/dist-scalprum/static/6123.b8f54e25.chunk.js.map +1 -0
  24. package/dist-scalprum/static/{6356.0690b575.chunk.js → 6356.a59d5e2e.chunk.js} +2 -2
  25. package/dist-scalprum/static/{6356.0690b575.chunk.js.map → 6356.a59d5e2e.chunk.js.map} +1 -1
  26. package/dist-scalprum/static/{6700.f2dbf122.chunk.js → 6700.8ab31ec1.chunk.js} +1 -1
  27. package/dist-scalprum/static/{6700.f2dbf122.chunk.js.map → 6700.8ab31ec1.chunk.js.map} +1 -1
  28. package/dist-scalprum/static/8692.8ab75fef.chunk.js +2 -0
  29. package/dist-scalprum/static/8692.8ab75fef.chunk.js.map +1 -0
  30. package/dist-scalprum/static/9541.dde4bd87.chunk.js +3 -0
  31. package/dist-scalprum/static/9541.dde4bd87.chunk.js.map +1 -0
  32. package/dist-scalprum/static/{9633.d7b4641e.chunk.js → 9633.47d13d21.chunk.js} +2 -2
  33. package/dist-scalprum/static/{9633.d7b4641e.chunk.js.map → 9633.47d13d21.chunk.js.map} +1 -1
  34. package/dist-scalprum/static/{exposed-PluginRoot.bf5e0b03.chunk.js → exposed-PluginRoot.221d8f69.chunk.js} +2 -2
  35. package/dist-scalprum/static/{exposed-PluginRoot.bf5e0b03.chunk.js.map → exposed-PluginRoot.221d8f69.chunk.js.map} +1 -1
  36. package/dist-scalprum/{veecode-platform.plugin-veecode-homepage.52a7b0ce89460aa40ee1.js → veecode-platform.plugin-veecode-homepage.ea406b87d3dc1c912550.js} +2 -2
  37. package/dist-scalprum/veecode-platform.plugin-veecode-homepage.ea406b87d3dc1c912550.js.map +1 -0
  38. package/package.json +1 -1
  39. package/dist/components/headerComponent/HeaderComponent.esm.js +0 -67
  40. package/dist/components/headerComponent/HeaderComponent.esm.js.map +0 -1
  41. package/dist/components/headerComponent/iconButtonComponent/IconButtonComponent.esm.js +0 -35
  42. package/dist/components/headerComponent/iconButtonComponent/IconButtonComponent.esm.js.map +0 -1
  43. package/dist/components/headerComponent/logout/Logout.esm.js +0 -30
  44. package/dist/components/headerComponent/logout/Logout.esm.js.map +0 -1
  45. package/dist/components/headerComponent/menuItems/MenuItems.esm.js +0 -134
  46. package/dist/components/headerComponent/menuItems/MenuItems.esm.js.map +0 -1
  47. package/dist/components/headerComponent/notifications/Notifications.esm.js +0 -72
  48. package/dist/components/headerComponent/notifications/Notifications.esm.js.map +0 -1
  49. package/dist/components/headerComponent/profile/Profle.esm.js +0 -19
  50. package/dist/components/headerComponent/profile/Profle.esm.js.map +0 -1
  51. package/dist/components/headerComponent/searchComponent/SearchBar.esm.js +0 -113
  52. package/dist/components/headerComponent/searchComponent/SearchBar.esm.js.map +0 -1
  53. package/dist/components/headerComponent/searchComponent/SearchComponent.esm.js +0 -13
  54. package/dist/components/headerComponent/searchComponent/SearchComponent.esm.js.map +0 -1
  55. package/dist/components/headerComponent/searchComponent/SearchInput.esm.js +0 -32
  56. package/dist/components/headerComponent/searchComponent/SearchInput.esm.js.map +0 -1
  57. package/dist/components/headerComponent/searchComponent/SearchOption.esm.js +0 -50
  58. package/dist/components/headerComponent/searchComponent/SearchOption.esm.js.map +0 -1
  59. package/dist/components/headerComponent/searchComponent/SearchResultItem.esm.js +0 -44
  60. package/dist/components/headerComponent/searchComponent/SearchResultItem.esm.js.map +0 -1
  61. package/dist/components/headerComponent/toggleTheme/ToggleTheme.esm.js +0 -37
  62. package/dist/components/headerComponent/toggleTheme/ToggleTheme.esm.js.map +0 -1
  63. package/dist/hooks/useDebouncedCallback.esm.js +0 -26
  64. package/dist/hooks/useDebouncedCallback.esm.js.map +0 -1
  65. package/dist/utils/stringUtils.esm.js +0 -35
  66. package/dist/utils/stringUtils.esm.js.map +0 -1
  67. package/dist-scalprum/static/1213.412457e8.chunk.js.map +0 -1
  68. package/dist-scalprum/static/1853.9c4997f9.chunk.js +0 -2
  69. package/dist-scalprum/static/1853.9c4997f9.chunk.js.map +0 -1
  70. package/dist-scalprum/static/41.a129355f.chunk.js +0 -2
  71. package/dist-scalprum/static/41.a129355f.chunk.js.map +0 -1
  72. package/dist-scalprum/static/5211.b1dc9542.chunk.js +0 -3
  73. package/dist-scalprum/static/5211.b1dc9542.chunk.js.map +0 -1
  74. package/dist-scalprum/static/5571.73942ff6.chunk.js +0 -206
  75. package/dist-scalprum/static/5571.73942ff6.chunk.js.map +0 -1
  76. package/dist-scalprum/static/6123.94c2f019.chunk.js +0 -2
  77. package/dist-scalprum/static/6123.94c2f019.chunk.js.map +0 -1
  78. package/dist-scalprum/static/6460.86145f5a.chunk.js +0 -2
  79. package/dist-scalprum/static/6460.86145f5a.chunk.js.map +0 -1
  80. package/dist-scalprum/static/6921.efadb98d.chunk.js +0 -2
  81. package/dist-scalprum/static/6921.efadb98d.chunk.js.map +0 -1
  82. package/dist-scalprum/veecode-platform.plugin-veecode-homepage.52a7b0ce89460aa40ee1.js.map +0 -1
  83. /package/dist-scalprum/static/{1213.412457e8.chunk.js.LICENSE.txt → 1213.aff960fc.chunk.js.LICENSE.txt} +0 -0
  84. /package/dist-scalprum/static/{5571.73942ff6.chunk.js.LICENSE.txt → 5749.9f83e5fe.chunk.js.LICENSE.txt} +0 -0
  85. /package/dist-scalprum/static/{5211.b1dc9542.chunk.js.LICENSE.txt → 9541.dde4bd87.chunk.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"static/4864.0a352dc6.chunk.js","mappings":"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","sources":["webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/system/ApiAggregator.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/system/ApiProvider.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/system/ApiResolver.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/system/ApiFactoryRegistry.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/loginPopup.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/AuthConnector/DefaultAuthConnector.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/AuthSessionManager/common.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/subjects.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/AuthSessionManager/SessionStateTracker.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/AuthSessionManager/RefreshingAuthSessionManager.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/oauth2/OAuth2.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/github/GithubAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/gitlab/GitlabAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/google/GoogleAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/okta/OktaAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/AuthConnector/DirectAuthConnector.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/AuthSessionManager/StaticAuthSessionManager.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/AuthSessionManager/AuthSessionStore.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/saml/types.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/saml/SamlAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/microsoft/MicrosoftAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/onelogin/OneLoginAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/bitbucket/BitbucketAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/bitbucketServer/BitbucketServerAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/atlassian/AtlassianAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/vmwareCloud/VMwareCloudAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/openshift/OpenShiftAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/AlertApi/AlertApiForwarder.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/AnalyticsApi/MultipleAnalyticsApi.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/AnalyticsApi/NoOpAnalyticsApi.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/AppThemeApi/AppThemeSelector.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/config/dist/reader.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/DiscoveryApi/UrlPatternDiscovery.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/DiscoveryApi/FrontendHostDiscovery.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/ErrorApi/ErrorAlerter.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/ErrorApi/ErrorApiForwarder.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/ErrorApi/UnhandledErrorForwarder.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/FetchApi/createFetchApi.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/FetchApi/IdentityAuthInjectorFetchMiddleware.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/FetchApi/PluginProtocolResolverFetchMiddleware.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/FetchApi/FetchMiddlewares.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/OAuthRequestApi/OAuthPendingRequests.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/OAuthRequestApi/OAuthRequestManager.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/StorageApi/WebStorage.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/InternalAppContext.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/isReactRouterBeta.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/RouteTracker.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/AppRouter.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-plugin-api/dist/apis/definitions/AppLanguageApi.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/extensions/traversal.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/plugins/collectors.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/FeatureFlagged.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/collectors.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/types.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/helpers.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/RouteResolver.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/RoutingProvider.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/AppContext.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/IdentityApi/AppIdentityProxy.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/IdentityApi/startCookieAuthRefresh.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/AppThemeProvider.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/defaultConfigLoader.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/system/ApiRegistry.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/resolveRouteBindings.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/AppLanguageApi/AppLanguageSelector.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/i18next/dist/esm/i18next.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/core-plugin-api/src/translation/TranslationRef.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/TranslationApi/I18nextTranslationApi.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/core-plugin-api/src/translation/TranslationResource.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/overrideBaseUrlConfigs.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/AppManager.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/validation.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/isProtectedApp.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/createSpecializedApp.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/FlatRoutes.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/lodash/mapValues.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/process/browser.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/zen-observable/index.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/zen-observable/lib/Observable.js"],"sourcesContent":["class ApiAggregator {\n holders;\n constructor(...holders) {\n this.holders = holders;\n }\n get(apiRef) {\n for (const holder of this.holders) {\n const api = holder.get(apiRef);\n if (api) {\n return api;\n }\n }\n return void 0;\n }\n}\n\nexport { ApiAggregator };\n//# sourceMappingURL=ApiAggregator.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { ApiAggregator } from './ApiAggregator.esm.js';\nimport { createVersionedContext, createVersionedValueMap } from '@backstage/version-bridge';\n\nconst ApiContext = createVersionedContext(\"api-context\");\nconst ApiProvider = (props) => {\n const { apis, children } = props;\n const parentHolder = useContext(ApiContext)?.atVersion(1);\n const holder = parentHolder ? new ApiAggregator(apis, parentHolder) : apis;\n return /* @__PURE__ */ jsx(\n ApiContext.Provider,\n {\n value: createVersionedValueMap({ 1: holder }),\n children\n }\n );\n};\nApiProvider.propTypes = {\n apis: PropTypes.shape({ get: PropTypes.func.isRequired }).isRequired,\n children: PropTypes.node\n};\n\nexport { ApiProvider };\n//# sourceMappingURL=ApiProvider.esm.js.map\n","class ApiResolver {\n constructor(factories) {\n this.factories = factories;\n }\n /**\n * Validate factories by making sure that each of the apis can be created\n * without hitting any circular dependencies.\n */\n static validateFactories(factories, apis) {\n for (const api of apis) {\n const heap = [api];\n const allDeps = /* @__PURE__ */ new Set();\n while (heap.length) {\n const apiRef = heap.shift();\n const factory = factories.get(apiRef);\n if (!factory) {\n continue;\n }\n for (const dep of Object.values(factory.deps)) {\n if (dep.id === api.id) {\n throw new Error(`Circular dependency of api factory for ${api}`);\n }\n if (!allDeps.has(dep)) {\n allDeps.add(dep);\n heap.push(dep);\n }\n }\n }\n }\n }\n apis = /* @__PURE__ */ new Map();\n get(ref) {\n return this.load(ref);\n }\n load(ref, loading = []) {\n const impl = this.apis.get(ref.id);\n if (impl) {\n return impl;\n }\n const factory = this.factories.get(ref);\n if (!factory) {\n return void 0;\n }\n if (loading.includes(factory.api)) {\n throw new Error(`Circular dependency of api factory for ${factory.api}`);\n }\n const deps = this.loadDeps(ref, factory.deps, [...loading, factory.api]);\n const api = factory.factory(deps);\n this.apis.set(ref.id, api);\n return api;\n }\n loadDeps(dependent, apis, loading) {\n const impls = {};\n for (const key in apis) {\n if (apis.hasOwnProperty(key)) {\n const ref = apis[key];\n const api = this.load(ref, loading);\n if (!api) {\n throw new Error(\n `No API factory available for dependency ${ref} of dependent ${dependent}`\n );\n }\n impls[key] = api;\n }\n }\n return impls;\n }\n}\n\nexport { ApiResolver };\n//# sourceMappingURL=ApiResolver.esm.js.map\n","var ScopePriority = /* @__PURE__ */ ((ScopePriority2) => {\n ScopePriority2[ScopePriority2[\"default\"] = 10] = \"default\";\n ScopePriority2[ScopePriority2[\"app\"] = 50] = \"app\";\n ScopePriority2[ScopePriority2[\"static\"] = 100] = \"static\";\n return ScopePriority2;\n})(ScopePriority || {});\nclass ApiFactoryRegistry {\n factories = /* @__PURE__ */ new Map();\n /**\n * Register a new API factory. Returns true if the factory was added\n * to the registry.\n *\n * A factory will not be added to the registry if there is already\n * an existing factory with the same or higher priority.\n */\n register(scope, factory) {\n const priority = ScopePriority[scope];\n const existing = this.factories.get(factory.api.id);\n if (existing && existing.priority >= priority) {\n return false;\n }\n this.factories.set(factory.api.id, { priority, factory });\n return true;\n }\n get(api) {\n const tuple = this.factories.get(api.id);\n if (!tuple) {\n return void 0;\n }\n return tuple.factory;\n }\n getAllApis() {\n const refs = /* @__PURE__ */ new Set();\n for (const { factory } of this.factories.values()) {\n refs.add(factory.api);\n }\n return refs;\n }\n}\n\nexport { ApiFactoryRegistry };\n//# sourceMappingURL=ApiFactoryRegistry.esm.js.map\n","function openLoginPopup(options) {\n return new Promise((resolve, reject) => {\n const width = options.width || 500;\n const height = options.height || 700;\n const left = window.screen.width / 2 - width / 2;\n const top = window.screen.height / 2 - height / 2;\n const origin = new URL(options.url).origin;\n const popup = window.open(\n options.url,\n options.name,\n `menubar=no,location=no,resizable=no,scrollbars=no,status=no,width=${width},height=${height},top=${top},left=${left}`\n );\n let targetOrigin = \"\";\n if (!popup || typeof popup.closed === \"undefined\" || popup.closed) {\n const error = new Error(\"Failed to open auth popup.\");\n error.name = \"PopupRejectedError\";\n reject(error);\n return;\n }\n const messageListener = (event) => {\n if (event.source !== popup) {\n return;\n }\n if (event.origin !== origin) {\n return;\n }\n const { data } = event;\n if (data.type === \"config_info\") {\n targetOrigin = data.targetOrigin;\n return;\n }\n if (data.type !== \"authorization_response\") {\n return;\n }\n const authResult = data;\n if (\"error\" in authResult) {\n const error = new Error(authResult.error.message);\n error.name = authResult.error.name;\n reject(error);\n } else {\n resolve(authResult.response);\n }\n done();\n };\n const intervalId = setInterval(() => {\n if (popup.closed) {\n const errMessage = `Login failed, ${targetOrigin && targetOrigin !== window.location.origin ? `Incorrect app origin, expected ${targetOrigin}` : \"popup was closed\"}`;\n const error = new Error(errMessage);\n error.name = \"PopupClosedError\";\n reject(error);\n done();\n }\n }, 100);\n function done() {\n window.removeEventListener(\"message\", messageListener);\n clearInterval(intervalId);\n }\n window.addEventListener(\"message\", messageListener);\n });\n}\n\nexport { openLoginPopup };\n//# sourceMappingURL=loginPopup.esm.js.map\n","import { openLoginPopup } from '../loginPopup.esm.js';\n\nlet warned = false;\nfunction defaultJoinScopes(scopes) {\n return [...scopes].join(\" \");\n}\nclass DefaultAuthConnector {\n discoveryApi;\n environment;\n provider;\n joinScopesFunc;\n authRequester;\n sessionTransform;\n enableExperimentalRedirectFlow;\n popupOptions;\n constructor(options) {\n const {\n configApi,\n discoveryApi,\n environment,\n provider,\n joinScopes = defaultJoinScopes,\n oauthRequestApi,\n sessionTransform = (id) => id,\n popupOptions\n } = options;\n if (!warned && !configApi) {\n console.warn(\n \"DEPRECATION WARNING: Authentication providers require a configApi instance to configure the authentication flow. Please provide one to the authentication provider constructor.\"\n );\n warned = true;\n }\n this.enableExperimentalRedirectFlow = configApi ? configApi.getOptionalBoolean(\"enableExperimentalRedirectFlow\") ?? false : false;\n this.authRequester = oauthRequestApi.createAuthRequester({\n provider,\n onAuthRequest: async (scopes) => {\n if (!this.enableExperimentalRedirectFlow) {\n return this.showPopup(scopes);\n }\n return this.executeRedirect(scopes);\n }\n });\n this.discoveryApi = discoveryApi;\n this.environment = environment;\n this.provider = provider;\n this.joinScopesFunc = joinScopes;\n this.sessionTransform = sessionTransform;\n this.popupOptions = popupOptions;\n }\n async createSession(options) {\n if (options.instantPopup) {\n if (this.enableExperimentalRedirectFlow) {\n return this.executeRedirect(options.scopes);\n }\n return this.showPopup(options.scopes);\n }\n return this.authRequester(options.scopes);\n }\n async refreshSession(options) {\n const res = await fetch(\n await this.buildUrl(\"/refresh\", {\n optional: true,\n ...options && { scope: this.joinScopesFunc(options.scopes) }\n }),\n {\n headers: {\n \"x-requested-with\": \"XMLHttpRequest\"\n },\n credentials: \"include\"\n }\n ).catch((error) => {\n throw new Error(`Auth refresh request failed, ${error}`);\n });\n if (!res.ok) {\n const error = new Error(\n `Auth refresh request failed, ${res.statusText}`\n );\n error.status = res.status;\n throw error;\n }\n const authInfo = await res.json();\n if (authInfo.error) {\n const error = new Error(authInfo.error.message);\n if (authInfo.error.name) {\n error.name = authInfo.error.name;\n }\n throw error;\n }\n return await this.sessionTransform(authInfo);\n }\n async removeSession() {\n const res = await fetch(await this.buildUrl(\"/logout\"), {\n method: \"POST\",\n headers: {\n \"x-requested-with\": \"XMLHttpRequest\"\n },\n credentials: \"include\"\n }).catch((error) => {\n throw new Error(`Logout request failed, ${error}`);\n });\n if (!res.ok) {\n const error = new Error(`Logout request failed, ${res.statusText}`);\n error.status = res.status;\n throw error;\n }\n }\n async showPopup(scopes) {\n const scope = this.joinScopesFunc(scopes);\n const popupUrl = await this.buildUrl(\"/start\", {\n scope,\n origin: window.location.origin,\n flow: \"popup\"\n });\n const width = this.popupOptions?.size?.fullscreen ? window.screen.width : this.popupOptions?.size?.width || 450;\n const height = this.popupOptions?.size?.fullscreen ? window.screen.height : this.popupOptions?.size?.height || 730;\n const payload = await openLoginPopup({\n url: popupUrl,\n name: `${this.provider.title} Login`,\n width,\n height\n });\n return await this.sessionTransform(payload);\n }\n async executeRedirect(scopes) {\n const scope = this.joinScopesFunc(scopes);\n window.location.href = await this.buildUrl(\"/start\", {\n scope,\n origin: window.location.origin,\n redirectUrl: window.location.href,\n flow: \"redirect\"\n });\n return new Promise(() => {\n });\n }\n async buildUrl(path, query) {\n const baseUrl = await this.discoveryApi.getBaseUrl(\"auth\");\n const queryString = this.buildQueryString({\n ...query,\n env: this.environment\n });\n return `${baseUrl}/${this.provider.id}${path}${queryString}`;\n }\n buildQueryString(query) {\n if (!query) {\n return \"\";\n }\n const queryString = Object.entries(query).map(([key, value]) => {\n if (typeof value === \"string\") {\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n } else if (value) {\n return encodeURIComponent(key);\n }\n return void 0;\n }).filter(Boolean).join(\"&\");\n if (!queryString) {\n return \"\";\n }\n return `?${queryString}`;\n }\n}\n\nexport { DefaultAuthConnector };\n//# sourceMappingURL=DefaultAuthConnector.esm.js.map\n","function hasScopes(searched, searchFor) {\n for (const scope of searchFor) {\n if (!searched.has(scope)) {\n return false;\n }\n }\n return true;\n}\nclass SessionScopeHelper {\n constructor(options) {\n this.options = options;\n }\n sessionExistsAndHasScope(session, scopes) {\n if (!session) {\n return false;\n }\n if (!scopes) {\n return true;\n }\n if (this.options.sessionScopes === void 0) {\n return true;\n }\n const sessionScopes = this.options.sessionScopes(session);\n return hasScopes(sessionScopes, scopes);\n }\n getExtendedScope(session, scopes) {\n const newScope = new Set(this.options.defaultScopes);\n if (session && this.options.sessionScopes !== void 0) {\n const sessionScopes = this.options.sessionScopes(session);\n for (const scope of sessionScopes) {\n newScope.add(scope);\n }\n }\n if (scopes) {\n for (const scope of scopes) {\n newScope.add(scope);\n }\n }\n return newScope;\n }\n}\n\nexport { SessionScopeHelper, hasScopes };\n//# sourceMappingURL=common.esm.js.map\n","import ObservableImpl from 'zen-observable';\n\nclass PublishSubject {\n isClosed = false;\n terminatingError;\n observable = new ObservableImpl((subscriber) => {\n if (this.isClosed) {\n if (this.terminatingError) {\n subscriber.error(this.terminatingError);\n } else {\n subscriber.complete();\n }\n return () => {\n };\n }\n this.subscribers.add(subscriber);\n return () => {\n this.subscribers.delete(subscriber);\n };\n });\n subscribers = /* @__PURE__ */ new Set();\n [Symbol.observable]() {\n return this;\n }\n get closed() {\n return this.isClosed;\n }\n next(value) {\n if (this.isClosed) {\n throw new Error(\"PublishSubject is closed\");\n }\n this.subscribers.forEach((subscriber) => subscriber.next(value));\n }\n error(error) {\n if (this.isClosed) {\n throw new Error(\"PublishSubject is closed\");\n }\n this.isClosed = true;\n this.terminatingError = error;\n this.subscribers.forEach((subscriber) => subscriber.error(error));\n }\n complete() {\n if (this.isClosed) {\n throw new Error(\"PublishSubject is closed\");\n }\n this.isClosed = true;\n this.subscribers.forEach((subscriber) => subscriber.complete());\n }\n subscribe(onNext, onError, onComplete) {\n const observer = typeof onNext === \"function\" ? {\n next: onNext,\n error: onError,\n complete: onComplete\n } : onNext;\n return this.observable.subscribe(observer);\n }\n}\nclass BehaviorSubject {\n isClosed;\n currentValue;\n terminatingError;\n observable;\n constructor(value) {\n this.isClosed = false;\n this.currentValue = value;\n this.terminatingError = void 0;\n this.observable = new ObservableImpl((subscriber) => {\n if (this.isClosed) {\n if (this.terminatingError) {\n subscriber.error(this.terminatingError);\n } else {\n subscriber.complete();\n }\n return () => {\n };\n }\n subscriber.next(this.currentValue);\n this.subscribers.add(subscriber);\n return () => {\n this.subscribers.delete(subscriber);\n };\n });\n }\n subscribers = /* @__PURE__ */ new Set();\n [Symbol.observable]() {\n return this;\n }\n get closed() {\n return this.isClosed;\n }\n next(value) {\n if (this.isClosed) {\n throw new Error(\"BehaviorSubject is closed\");\n }\n this.currentValue = value;\n this.subscribers.forEach((subscriber) => subscriber.next(value));\n }\n error(error) {\n if (this.isClosed) {\n throw new Error(\"BehaviorSubject is closed\");\n }\n this.isClosed = true;\n this.terminatingError = error;\n this.subscribers.forEach((subscriber) => subscriber.error(error));\n }\n complete() {\n if (this.isClosed) {\n throw new Error(\"BehaviorSubject is closed\");\n }\n this.isClosed = true;\n this.subscribers.forEach((subscriber) => subscriber.complete());\n }\n subscribe(onNext, onError, onComplete) {\n const observer = typeof onNext === \"function\" ? {\n next: onNext,\n error: onError,\n complete: onComplete\n } : onNext;\n return this.observable.subscribe(observer);\n }\n}\n\nexport { BehaviorSubject, PublishSubject };\n//# sourceMappingURL=subjects.esm.js.map\n","import { BehaviorSubject } from '../subjects.esm.js';\nimport { SessionState } from '@backstage/core-plugin-api';\n\nclass SessionStateTracker {\n subject = new BehaviorSubject(\n SessionState.SignedOut\n );\n signedIn = false;\n setIsSignedIn(isSignedIn) {\n if (this.signedIn !== isSignedIn) {\n this.signedIn = isSignedIn;\n this.subject.next(\n this.signedIn ? SessionState.SignedIn : SessionState.SignedOut\n );\n }\n }\n sessionState$() {\n return this.subject;\n }\n}\n\nexport { SessionStateTracker };\n//# sourceMappingURL=SessionStateTracker.esm.js.map\n","import { SessionScopeHelper, hasScopes } from './common.esm.js';\nimport { SessionStateTracker } from './SessionStateTracker.esm.js';\n\nclass RefreshingAuthSessionManager {\n connector;\n helper;\n sessionScopesFunc;\n sessionShouldRefreshFunc;\n stateTracker = new SessionStateTracker();\n refreshPromise;\n currentSession;\n constructor(options) {\n const {\n connector,\n defaultScopes = /* @__PURE__ */ new Set(),\n sessionScopes,\n sessionShouldRefresh\n } = options;\n this.connector = connector;\n this.sessionScopesFunc = sessionScopes;\n this.sessionShouldRefreshFunc = sessionShouldRefresh;\n this.helper = new SessionScopeHelper({ sessionScopes, defaultScopes });\n }\n async getSession(options) {\n let alreadyTriedToRefreshSession = false;\n if (this.helper.sessionExistsAndHasScope(this.currentSession, options.scopes)) {\n const shouldRefresh = this.sessionShouldRefreshFunc(this.currentSession);\n if (!shouldRefresh) {\n return this.currentSession;\n }\n alreadyTriedToRefreshSession = true;\n try {\n const refreshedSession = await this.collapsedSessionRefresh(\n options.scopes\n );\n const currentScopes = this.sessionScopesFunc(this.currentSession);\n const refreshedScopes = this.sessionScopesFunc(refreshedSession);\n if (hasScopes(refreshedScopes, currentScopes)) {\n this.currentSession = refreshedSession;\n }\n return refreshedSession;\n } catch (error) {\n this.removeLocalSession();\n if (options.optional) {\n return void 0;\n }\n }\n }\n if (!alreadyTriedToRefreshSession) {\n try {\n const newSession = await this.collapsedSessionRefresh(options.scopes);\n this.currentSession = newSession;\n return this.getSession(options);\n } catch {\n this.removeLocalSession();\n }\n }\n if (options.optional) {\n return void 0;\n }\n this.currentSession = await this.connector.createSession({\n ...options,\n scopes: this.helper.getExtendedScope(this.currentSession, options.scopes)\n });\n this.stateTracker.setIsSignedIn(true);\n return this.currentSession;\n }\n /**\n * Sets `undefined` to this.{@link currentSession} and tells this.{@link stateTracker}, session state tracker,\n * that a user has signed out.\n *\n * Does not propagate session removal to the connector like {@link removeSession}().\n *\n */\n removeLocalSession() {\n this.currentSession = void 0;\n this.stateTracker.setIsSignedIn(false);\n }\n async removeSession() {\n this.currentSession = void 0;\n await this.connector.removeSession();\n this.stateTracker.setIsSignedIn(false);\n }\n sessionState$() {\n return this.stateTracker.sessionState$();\n }\n async collapsedSessionRefresh(scopes) {\n if (this.refreshPromise) {\n return this.refreshPromise;\n }\n this.refreshPromise = this.connector.refreshSession({\n scopes: this.helper.getExtendedScope(this.currentSession, scopes)\n });\n try {\n const session = await this.refreshPromise;\n if (!this.helper.sessionExistsAndHasScope(session, scopes)) {\n throw new Error(\n \"Refreshed session did not receive the required scopes\"\n );\n }\n this.stateTracker.setIsSignedIn(true);\n return session;\n } finally {\n delete this.refreshPromise;\n }\n }\n}\n\nexport { RefreshingAuthSessionManager };\n//# sourceMappingURL=RefreshingAuthSessionManager.esm.js.map\n","import { DefaultAuthConnector } from '../../../../lib/AuthConnector/DefaultAuthConnector.esm.js';\nimport { RefreshingAuthSessionManager } from '../../../../lib/AuthSessionManager/RefreshingAuthSessionManager.esm.js';\nimport 'zen-observable';\nimport '@backstage/core-plugin-api';\n\nconst DEFAULT_PROVIDER = {\n id: \"oauth2\",\n title: \"Your Identity Provider\",\n icon: () => null\n};\nclass OAuth2 {\n static createAuthConnector(options) {\n if (\"authConnector\" in options) {\n return options.authConnector;\n }\n const {\n scopeTransform = (x) => x,\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi,\n popupOptions\n } = options;\n return new DefaultAuthConnector({\n configApi,\n discoveryApi,\n environment,\n provider,\n oauthRequestApi,\n sessionTransform({\n backstageIdentity,\n ...res\n }) {\n const session = {\n ...res,\n providerInfo: {\n idToken: res.providerInfo.idToken,\n accessToken: res.providerInfo.accessToken,\n scopes: OAuth2.normalizeScopes(res.providerInfo.scope, {\n scopeTransform\n }),\n expiresAt: res.providerInfo.expiresInSeconds ? new Date(Date.now() + res.providerInfo.expiresInSeconds * 1e3) : void 0\n }\n };\n if (backstageIdentity) {\n session.backstageIdentity = {\n token: backstageIdentity.token,\n identity: backstageIdentity.identity,\n expiresAt: backstageIdentity.expiresInSeconds ? new Date(Date.now() + backstageIdentity.expiresInSeconds * 1e3) : void 0\n };\n }\n return session;\n },\n popupOptions\n });\n }\n static create(options) {\n const { defaultScopes = [], scopeTransform = (x) => x } = options;\n const connector = OAuth2.createAuthConnector(options);\n const sessionManager = new RefreshingAuthSessionManager({\n connector,\n defaultScopes: new Set(defaultScopes),\n sessionScopes: (session) => session.providerInfo.scopes,\n sessionShouldRefresh: (session) => {\n let min = Infinity;\n if (session.providerInfo?.expiresAt) {\n min = Math.min(\n min,\n (session.providerInfo.expiresAt.getTime() - Date.now()) / 1e3\n );\n }\n if (session.backstageIdentity?.expiresAt) {\n min = Math.min(\n min,\n (session.backstageIdentity.expiresAt.getTime() - Date.now()) / 1e3\n );\n }\n return min < 60 * 3;\n }\n });\n return new OAuth2({ sessionManager, scopeTransform });\n }\n sessionManager;\n scopeTransform;\n constructor(options) {\n this.sessionManager = options.sessionManager;\n this.scopeTransform = options.scopeTransform;\n }\n async signIn() {\n await this.getAccessToken();\n }\n async signOut() {\n await this.sessionManager.removeSession();\n }\n sessionState$() {\n return this.sessionManager.sessionState$();\n }\n async getAccessToken(scope, options) {\n const normalizedScopes = OAuth2.normalizeScopes(scope, {\n scopeTransform: this.scopeTransform\n });\n const session = await this.sessionManager.getSession({\n ...options,\n scopes: normalizedScopes\n });\n return session?.providerInfo.accessToken ?? \"\";\n }\n async getIdToken(options = {}) {\n const session = await this.sessionManager.getSession({\n ...options,\n scopes: /* @__PURE__ */ new Set([\"openid\"])\n });\n return session?.providerInfo.idToken ?? \"\";\n }\n async getBackstageIdentity(options = {}) {\n const session = await this.sessionManager.getSession(options);\n return session?.backstageIdentity;\n }\n async getProfile(options = {}) {\n const session = await this.sessionManager.getSession(options);\n return session?.profile;\n }\n /**\n * @public\n */\n static normalizeScopes(scopes, options) {\n if (!scopes) {\n return /* @__PURE__ */ new Set();\n }\n const scopeList = Array.isArray(scopes) ? scopes : scopes.split(/[\\s|,]/).filter(Boolean);\n const transformedScopes = options ? options.scopeTransform(scopeList) : scopeList;\n return new Set(transformedScopes);\n }\n}\n\nexport { OAuth2 as default };\n//# sourceMappingURL=OAuth2.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"github\",\n title: \"GitHub\",\n icon: () => null\n};\nclass GithubAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi,\n defaultScopes = [\"read:user\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes\n });\n }\n}\n\nexport { GithubAuth as default };\n//# sourceMappingURL=GithubAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"gitlab\",\n title: \"GitLab\",\n icon: () => null\n};\nclass GitlabAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi,\n defaultScopes = [\"read_user\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes\n });\n }\n}\n\nexport { GitlabAuth as default };\n//# sourceMappingURL=GitlabAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"google\",\n title: \"Google\",\n icon: () => null\n};\nconst SCOPE_PREFIX = \"https://www.googleapis.com/auth/\";\nclass GoogleAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n defaultScopes = [\n \"openid\",\n `${SCOPE_PREFIX}userinfo.email`,\n `${SCOPE_PREFIX}userinfo.profile`\n ]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes,\n scopeTransform(scopes) {\n return scopes.map((scope) => {\n if (scope === \"openid\") {\n return scope;\n }\n if (scope === \"profile\" || scope === \"email\") {\n return `${SCOPE_PREFIX}userinfo.${scope}`;\n }\n if (scope.startsWith(SCOPE_PREFIX)) {\n return scope;\n }\n return `${SCOPE_PREFIX}${scope}`;\n });\n }\n });\n }\n}\n\nexport { GoogleAuth as default };\n//# sourceMappingURL=GoogleAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"okta\",\n title: \"Okta\",\n icon: () => null\n};\nconst OKTA_OIDC_SCOPES = /* @__PURE__ */ new Set([\n \"openid\",\n \"profile\",\n \"email\",\n \"phone\",\n \"address\",\n \"groups\",\n \"offline_access\"\n]);\nconst OKTA_SCOPE_PREFIX = \"okta.\";\nclass OktaAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi,\n defaultScopes = [\"openid\", \"email\", \"profile\", \"offline_access\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes,\n scopeTransform(scopes) {\n return scopes.map((scope) => {\n if (OKTA_OIDC_SCOPES.has(scope)) {\n return scope;\n }\n if (scope.startsWith(OKTA_SCOPE_PREFIX)) {\n return scope;\n }\n return `${OKTA_SCOPE_PREFIX}${scope}`;\n });\n }\n });\n }\n}\n\nexport { OktaAuth as default };\n//# sourceMappingURL=OktaAuth.esm.js.map\n","import { openLoginPopup } from '../loginPopup.esm.js';\n\nclass DirectAuthConnector {\n discoveryApi;\n environment;\n provider;\n constructor(options) {\n const { discoveryApi, environment, provider } = options;\n this.discoveryApi = discoveryApi;\n this.environment = environment;\n this.provider = provider;\n }\n async createSession() {\n const popupUrl = await this.buildUrl(\"/start\");\n const payload = await openLoginPopup({\n url: popupUrl,\n name: `${this.provider.title} Login`,\n width: 450,\n height: 730\n });\n return {\n ...payload,\n id: payload.profile.email\n };\n }\n async refreshSession() {\n }\n async removeSession() {\n const res = await fetch(await this.buildUrl(\"/logout\"), {\n method: \"POST\",\n headers: {\n \"x-requested-with\": \"XMLHttpRequest\"\n },\n credentials: \"include\"\n }).catch((error) => {\n throw new Error(`Logout request failed, ${error}`);\n });\n if (!res.ok) {\n const error = new Error(`Logout request failed, ${res.statusText}`);\n error.status = res.status;\n throw error;\n }\n }\n async buildUrl(path) {\n const baseUrl = await this.discoveryApi.getBaseUrl(\"auth\");\n return `${baseUrl}/${this.provider.id}${path}?env=${this.environment}`;\n }\n}\n\nexport { DirectAuthConnector };\n//# sourceMappingURL=DirectAuthConnector.esm.js.map\n","import { SessionScopeHelper } from './common.esm.js';\nimport { SessionStateTracker } from './SessionStateTracker.esm.js';\n\nclass StaticAuthSessionManager {\n connector;\n helper;\n stateTracker = new SessionStateTracker();\n currentSession;\n constructor(options) {\n const { connector, defaultScopes = /* @__PURE__ */ new Set(), sessionScopes } = options;\n this.connector = connector;\n this.helper = new SessionScopeHelper({ sessionScopes, defaultScopes });\n }\n setSession(session) {\n this.currentSession = session;\n this.stateTracker.setIsSignedIn(Boolean(session));\n }\n async getSession(options) {\n if (this.helper.sessionExistsAndHasScope(this.currentSession, options.scopes)) {\n return this.currentSession;\n }\n if (options.optional) {\n return void 0;\n }\n this.currentSession = await this.connector.createSession({\n ...options,\n scopes: this.helper.getExtendedScope(this.currentSession, options.scopes)\n });\n this.stateTracker.setIsSignedIn(true);\n return this.currentSession;\n }\n /**\n * We don't call this.connector.removeSession here, since this session manager\n * is intended to be static. As such there's no need to hit the remote logout\n * endpoint - simply discarding the local session state when signing out is\n * enough.\n */\n async removeSession() {\n this.currentSession = void 0;\n this.stateTracker.setIsSignedIn(false);\n }\n sessionState$() {\n return this.stateTracker.sessionState$();\n }\n}\n\nexport { StaticAuthSessionManager };\n//# sourceMappingURL=StaticAuthSessionManager.esm.js.map\n","import { SessionScopeHelper } from './common.esm.js';\n\nclass AuthSessionStore {\n manager;\n storageKey;\n schema;\n sessionShouldRefreshFunc;\n helper;\n constructor(options) {\n const {\n manager,\n storageKey,\n schema,\n sessionScopes,\n sessionShouldRefresh = () => false\n } = options;\n this.manager = manager;\n this.storageKey = storageKey;\n this.schema = schema;\n this.sessionShouldRefreshFunc = sessionShouldRefresh;\n this.helper = new SessionScopeHelper({\n sessionScopes,\n defaultScopes: /* @__PURE__ */ new Set()\n });\n }\n setSession(session) {\n this.manager.setSession(session);\n this.saveSession(session);\n }\n async getSession(options) {\n const { scopes } = options;\n const session = this.loadSession();\n if (this.helper.sessionExistsAndHasScope(session, scopes)) {\n const shouldRefresh = this.sessionShouldRefreshFunc(session);\n if (!shouldRefresh) {\n this.manager.setSession(session);\n return session;\n }\n }\n const newSession = await this.manager.getSession(options);\n this.saveSession(newSession);\n return newSession;\n }\n async removeSession() {\n localStorage.removeItem(this.storageKey);\n await this.manager.removeSession();\n }\n sessionState$() {\n return this.manager.sessionState$();\n }\n loadSession() {\n try {\n const sessionJson = localStorage.getItem(this.storageKey);\n if (sessionJson) {\n const session = JSON.parse(sessionJson, (_key, value) => {\n if (value?.__type === \"Set\") {\n return new Set(value.__value);\n }\n return value;\n });\n try {\n return this.schema.parse(session);\n } catch (e) {\n console.log(\n `Failed to load session from local storage because it did not conform to the expected schema, ${e}`\n );\n throw e;\n }\n }\n return void 0;\n } catch (error) {\n localStorage.removeItem(this.storageKey);\n return void 0;\n }\n }\n saveSession(session) {\n if (session === void 0) {\n localStorage.removeItem(this.storageKey);\n return;\n }\n try {\n this.schema.parse(session);\n } catch (e) {\n console.warn(\n `Failed to save session to local storage because it did not conform to the expected schema, ${e}`\n );\n return;\n }\n localStorage.setItem(\n this.storageKey,\n JSON.stringify(session, (_key, value) => {\n if (value instanceof Set) {\n return {\n __type: \"Set\",\n __value: Array.from(value)\n };\n }\n return value;\n })\n );\n }\n}\n\nexport { AuthSessionStore };\n//# sourceMappingURL=AuthSessionStore.esm.js.map\n","import { z } from 'zod';\n\nconst samlSessionSchema = z.object({\n profile: z.object({\n email: z.string().optional(),\n displayName: z.string().optional(),\n picture: z.string().optional()\n }),\n backstageIdentity: z.object({\n token: z.string(),\n identity: z.object({\n type: z.literal(\"user\"),\n userEntityRef: z.string(),\n ownershipEntityRefs: z.array(z.string())\n })\n })\n});\n\nexport { samlSessionSchema };\n//# sourceMappingURL=types.esm.js.map\n","import { DirectAuthConnector } from '../../../../lib/AuthConnector/DirectAuthConnector.esm.js';\nimport 'zen-observable';\nimport '@backstage/core-plugin-api';\nimport { StaticAuthSessionManager } from '../../../../lib/AuthSessionManager/StaticAuthSessionManager.esm.js';\nimport { AuthSessionStore } from '../../../../lib/AuthSessionManager/AuthSessionStore.esm.js';\nimport { samlSessionSchema } from './types.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"saml\",\n title: \"SAML\",\n icon: () => null\n};\nclass SamlAuth {\n constructor(sessionManager) {\n this.sessionManager = sessionManager;\n }\n static create(options) {\n const {\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER\n } = options;\n const connector = new DirectAuthConnector({\n discoveryApi,\n environment,\n provider\n });\n const sessionManager = new StaticAuthSessionManager({\n connector\n });\n const authSessionStore = new AuthSessionStore({\n manager: sessionManager,\n storageKey: `${provider.id}Session`,\n schema: samlSessionSchema\n });\n return new SamlAuth(authSessionStore);\n }\n sessionState$() {\n return this.sessionManager.sessionState$();\n }\n async signIn() {\n await this.getBackstageIdentity({});\n }\n async signOut() {\n await this.sessionManager.removeSession();\n }\n async getBackstageIdentity(options = {}) {\n const session = await this.sessionManager.getSession(options);\n return session?.backstageIdentity;\n }\n async getProfile(options = {}) {\n const session = await this.sessionManager.getSession(options);\n return session?.profile;\n }\n}\n\nexport { SamlAuth as default };\n//# sourceMappingURL=SamlAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"microsoft\",\n title: \"Microsoft\",\n icon: () => null\n};\nclass MicrosoftAuth {\n oauth2;\n configApi;\n environment;\n provider;\n oauthRequestApi;\n discoveryApi;\n scopeTransform;\n static MicrosoftGraphID = \"00000003-0000-0000-c000-000000000000\";\n static create(options) {\n return new MicrosoftAuth(options);\n }\n constructor(options) {\n const {\n configApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi,\n discoveryApi,\n defaultScopes = [\n \"openid\",\n \"offline_access\",\n \"profile\",\n \"email\",\n \"User.Read\"\n ],\n scopeTransform = (scopes) => scopes.concat(\"offline_access\")\n } = options;\n this.configApi = configApi;\n this.environment = environment;\n this.provider = provider;\n this.oauthRequestApi = oauthRequestApi;\n this.discoveryApi = discoveryApi;\n this.scopeTransform = scopeTransform;\n this.oauth2 = {\n [MicrosoftAuth.MicrosoftGraphID]: OAuth2.create({\n configApi: this.configApi,\n discoveryApi: this.discoveryApi,\n oauthRequestApi: this.oauthRequestApi,\n provider: this.provider,\n environment: this.environment,\n scopeTransform: this.scopeTransform,\n defaultScopes\n })\n };\n }\n microsoftGraph() {\n return this.oauth2[MicrosoftAuth.MicrosoftGraphID];\n }\n static resourceForScopes(scope) {\n const audiences = [\n ...new Set(\n scope.split(\" \").map(MicrosoftAuth.resourceForScope).filter((aud) => aud !== \"openid\")\n )\n ];\n if (audiences.length > 1) {\n return Promise.reject(\n new Error(\n `Requested access token with scopes from multiple Azure resources: ${audiences.join(\n \", \"\n )}. Access tokens can only have a single audience.`\n )\n );\n }\n const audience = audiences[0] ?? MicrosoftAuth.MicrosoftGraphID;\n return Promise.resolve(audience);\n }\n static resourceForScope(scope) {\n const groups = scope.match(/^(?<resourceURI>.*)\\/(?<scp>[^\\/]*)$/)?.groups;\n if (groups) {\n const { resourceURI } = groups;\n const aud = resourceURI.replace(/^api:\\/\\//, \"\");\n return aud;\n }\n switch (scope) {\n case \"email\":\n case \"openid\":\n case \"offline_access\":\n case \"profile\": {\n return \"openid\";\n }\n default:\n return MicrosoftAuth.MicrosoftGraphID;\n }\n }\n async getAccessToken(scope, options) {\n const aud = scope === void 0 ? MicrosoftAuth.MicrosoftGraphID : await MicrosoftAuth.resourceForScopes(\n Array.isArray(scope) ? scope.join(\" \") : scope\n );\n if (!(aud in this.oauth2)) {\n this.oauth2[aud] = OAuth2.create({\n configApi: this.configApi,\n discoveryApi: this.discoveryApi,\n oauthRequestApi: this.oauthRequestApi,\n provider: this.provider,\n environment: this.environment,\n scopeTransform: this.scopeTransform\n });\n }\n return this.oauth2[aud].getAccessToken(scope, options);\n }\n getIdToken(options) {\n return this.microsoftGraph().getIdToken(options);\n }\n getProfile(options) {\n return this.microsoftGraph().getProfile(options);\n }\n getBackstageIdentity(options) {\n return this.microsoftGraph().getBackstageIdentity(options);\n }\n signIn() {\n return this.microsoftGraph().signIn();\n }\n signOut() {\n return this.microsoftGraph().signOut();\n }\n sessionState$() {\n return this.microsoftGraph().sessionState$();\n }\n}\n\nexport { MicrosoftAuth as default };\n//# sourceMappingURL=MicrosoftAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"onelogin\",\n title: \"onelogin\",\n icon: () => null\n};\nconst OIDC_SCOPES = /* @__PURE__ */ new Set([\n \"openid\",\n \"profile\",\n \"email\",\n \"phone\",\n \"address\",\n \"groups\",\n \"offline_access\"\n]);\nconst SCOPE_PREFIX = \"onelogin.\";\nclass OneLoginAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes: [\"openid\", \"email\", \"profile\", \"offline_access\"],\n scopeTransform(scopes) {\n return scopes.map((scope) => {\n if (OIDC_SCOPES.has(scope)) {\n return scope;\n }\n if (scope.startsWith(SCOPE_PREFIX)) {\n return scope;\n }\n return `${SCOPE_PREFIX}${scope}`;\n });\n }\n });\n }\n}\n\nexport { OneLoginAuth as default };\n//# sourceMappingURL=OneLoginAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"bitbucket\",\n title: \"Bitbucket\",\n icon: () => null\n};\nclass BitbucketAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi,\n defaultScopes = [\"account\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes\n });\n }\n}\n\nexport { BitbucketAuth as default };\n//# sourceMappingURL=BitbucketAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"bitbucketServer\",\n title: \"Bitbucket Server\",\n icon: () => null\n};\nclass BitbucketServerAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi,\n defaultScopes = [\"PROJECT_ADMIN\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes\n });\n }\n}\n\nexport { BitbucketServerAuth as default };\n//# sourceMappingURL=BitbucketServerAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"atlassian\",\n title: \"Atlassian\",\n icon: () => null\n};\nclass AtlassianAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment\n });\n }\n}\n\nexport { AtlassianAuth as default };\n//# sourceMappingURL=AtlassianAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"vmwareCloudServices\",\n title: \"VMware Cloud\",\n icon: () => null\n};\nclass VMwareCloudAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n defaultScopes = [\"openid\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes\n });\n }\n}\n\nexport { VMwareCloudAuth as default };\n//# sourceMappingURL=VMwareCloudAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"openshift\",\n title: \"OpenShift\",\n icon: () => null\n};\nclass OpenShiftAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi,\n defaultScopes = [\"user:info\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes\n });\n }\n}\n\nexport { OpenShiftAuth as default };\n//# sourceMappingURL=OpenShiftAuth.esm.js.map\n","import { PublishSubject } from '../../../lib/subjects.esm.js';\n\nclass AlertApiForwarder {\n subject = new PublishSubject();\n post(alert) {\n this.subject.next(alert);\n }\n alert$() {\n return this.subject;\n }\n}\n\nexport { AlertApiForwarder };\n//# sourceMappingURL=AlertApiForwarder.esm.js.map\n","class MultipleAnalyticsApi {\n constructor(actualApis) {\n this.actualApis = actualApis;\n }\n /**\n * Create an AnalyticsApi implementation from an array of concrete\n * implementations.\n *\n * @example\n *\n * ```jsx\n * MultipleAnalyticsApi.fromApis([\n * SomeAnalyticsApi.fromConfig(configApi),\n * new CustomAnalyticsApi(),\n * ]);\n * ```\n */\n static fromApis(actualApis) {\n return new MultipleAnalyticsApi(actualApis);\n }\n /**\n * Forward the event to all configured analytics API implementations.\n */\n captureEvent(event) {\n this.actualApis.forEach((analyticsApi) => {\n try {\n analyticsApi.captureEvent(event);\n } catch {\n }\n });\n }\n}\n\nexport { MultipleAnalyticsApi };\n//# sourceMappingURL=MultipleAnalyticsApi.esm.js.map\n","class NoOpAnalyticsApi {\n captureEvent(_event) {\n }\n}\n\nexport { NoOpAnalyticsApi };\n//# sourceMappingURL=NoOpAnalyticsApi.esm.js.map\n","import { BehaviorSubject } from '../../../lib/subjects.esm.js';\n\nconst STORAGE_KEY = \"theme\";\nclass AppThemeSelector {\n constructor(themes) {\n this.themes = themes;\n }\n static createWithStorage(themes) {\n const selector = new AppThemeSelector(themes);\n if (!window.localStorage) {\n return selector;\n }\n const initialThemeId = window.localStorage.getItem(STORAGE_KEY) ?? void 0;\n selector.setActiveThemeId(initialThemeId);\n selector.activeThemeId$().subscribe((themeId) => {\n if (themeId) {\n window.localStorage.setItem(STORAGE_KEY, themeId);\n } else {\n window.localStorage.removeItem(STORAGE_KEY);\n }\n });\n window.addEventListener(\"storage\", (event) => {\n if (event.key === STORAGE_KEY) {\n const themeId = localStorage.getItem(STORAGE_KEY) ?? void 0;\n selector.setActiveThemeId(themeId);\n }\n });\n return selector;\n }\n activeThemeId;\n subject = new BehaviorSubject(void 0);\n getInstalledThemes() {\n return this.themes.slice();\n }\n activeThemeId$() {\n return this.subject;\n }\n getActiveThemeId() {\n return this.activeThemeId;\n }\n setActiveThemeId(themeId) {\n this.activeThemeId = themeId;\n this.subject.next(themeId);\n }\n}\n\nexport { AppThemeSelector };\n//# sourceMappingURL=AppThemeSelector.esm.js.map\n","const CONFIG_KEY_PART_PATTERN = /^[a-z][a-z0-9]*(?:[-_][a-z0-9]+)*$/i;\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction cloneDeep(value) {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(cloneDeep);\n }\n return Object.fromEntries(\n Object.entries(value).map(([k, v]) => [k, cloneDeep(v)])\n );\n}\nfunction merge(into, from) {\n if (into === null) {\n return void 0;\n }\n if (into === void 0) {\n return from === void 0 ? void 0 : merge(from);\n }\n if (typeof into !== \"object\" || Array.isArray(into)) {\n return into;\n }\n const fromObj = isObject(from) ? from : {};\n const out = {};\n for (const key of /* @__PURE__ */ new Set([...Object.keys(into), ...Object.keys(fromObj)])) {\n const val = merge(into[key], fromObj[key]);\n if (val !== void 0) {\n out[key] = val;\n }\n }\n return out;\n}\nfunction typeOf(value) {\n if (value === null) {\n return \"null\";\n } else if (Array.isArray(value)) {\n return \"array\";\n }\n const type = typeof value;\n if (type === \"number\" && isNaN(value)) {\n return \"nan\";\n }\n if (type === \"string\" && value === \"\") {\n return \"empty-string\";\n }\n return type;\n}\nconst errors = {\n type(key, context, typeName, expected) {\n return `Invalid type in config for key '${key}' in '${context}', got ${typeName}, wanted ${expected}`;\n },\n missing(key, context) {\n return `Missing required config value at '${key}' in '${context}'`;\n },\n convert(key, context, expected) {\n return `Unable to convert config value for key '${key}' in '${context}' to a ${expected}`;\n }\n};\nclass ConfigReader {\n constructor(data, context = \"mock-config\", fallback, prefix = \"\") {\n this.data = data;\n this.context = context;\n this.fallback = fallback;\n this.prefix = prefix;\n }\n /**\n * A set of key paths that where removed from the config due to not being visible.\n *\n * This was added as a mutable private member to avoid changes to the public API.\n * Its only purpose of this is to warn users of missing visibility when running\n * the frontend in development mode.\n */\n filteredKeys;\n notifiedFilteredKeys = /* @__PURE__ */ new Set();\n /**\n * Instantiates the config reader from a list of application config objects.\n */\n static fromConfigs(configs) {\n if (configs.length === 0) {\n return new ConfigReader(void 0);\n }\n return configs.reduce(\n (previousReader, { data, context, filteredKeys, deprecatedKeys }) => {\n const reader = new ConfigReader(data, context, previousReader);\n reader.filteredKeys = filteredKeys;\n if (deprecatedKeys) {\n for (const { key, description } of deprecatedKeys) {\n console.warn(\n `The configuration key '${key}' of ${context} is deprecated and may be removed soon. ${description || \"\"}`\n );\n }\n }\n return reader;\n },\n void 0\n );\n }\n /** {@inheritdoc Config.has} */\n has(key) {\n const value = this.readValue(key);\n if (value === null) {\n return false;\n }\n if (value !== void 0) {\n return true;\n }\n return this.fallback?.has(key) ?? false;\n }\n /** {@inheritdoc Config.keys} */\n keys() {\n const localKeys = this.data ? Object.keys(this.data) : [];\n const fallbackKeys = this.fallback?.keys() ?? [];\n return [.../* @__PURE__ */ new Set([...localKeys, ...fallbackKeys])].filter(\n (k) => this.data?.[k] !== null\n );\n }\n /** {@inheritdoc Config.get} */\n get(key) {\n const value = this.getOptional(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key ?? \"\"), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptional} */\n getOptional(key) {\n const value = cloneDeep(this.readValue(key));\n const fallbackValue = this.fallback?.getOptional(key);\n if (value === null) {\n return void 0;\n }\n if (value === void 0) {\n if (process.env.NODE_ENV === \"development\") {\n if (fallbackValue === void 0 && key) {\n const fullKey = this.fullKey(key);\n if (this.filteredKeys?.includes(fullKey) && !this.notifiedFilteredKeys.has(fullKey)) {\n this.notifiedFilteredKeys.add(fullKey);\n console.warn(\n `Failed to read configuration value at '${fullKey}' as it is not visible. See https://backstage.io/docs/conf/defining#visibility for instructions on how to make it visible.`\n );\n }\n }\n }\n return merge(fallbackValue);\n } else if (fallbackValue === void 0) {\n return merge(value);\n }\n return merge(value, fallbackValue);\n }\n /** {@inheritdoc Config.getConfig} */\n getConfig(key) {\n const value = this.getOptionalConfig(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalConfig} */\n getOptionalConfig(key) {\n const value = this.readValue(key);\n const fallbackConfig = this.fallback?.getOptionalConfig(key);\n if (isObject(value)) {\n return this.copy(value, key, fallbackConfig);\n }\n if (value === null) {\n return void 0;\n }\n if (value !== void 0) {\n throw new TypeError(\n errors.type(this.fullKey(key), this.context, typeOf(value), \"object\")\n );\n }\n return fallbackConfig;\n }\n /** {@inheritdoc Config.getConfigArray} */\n getConfigArray(key) {\n const value = this.getOptionalConfigArray(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalConfigArray} */\n getOptionalConfigArray(key) {\n const configs = this.readConfigValue(key, (values) => {\n if (!Array.isArray(values)) {\n return { expected: \"object-array\" };\n }\n for (const [index, value] of values.entries()) {\n if (!isObject(value)) {\n return { expected: \"object-array\", value, key: `${key}[${index}]` };\n }\n }\n return true;\n });\n if (!configs) {\n if (process.env.NODE_ENV === \"development\") {\n const fullKey = this.fullKey(key);\n if (this.filteredKeys?.some((k) => k.startsWith(fullKey)) && !this.notifiedFilteredKeys.has(key)) {\n this.notifiedFilteredKeys.add(key);\n console.warn(\n `Failed to read configuration array at '${key}' as it does not have any visible elements. See https://backstage.io/docs/conf/defining#visibility for instructions on how to make it visible.`\n );\n }\n }\n return void 0;\n }\n return configs.map((obj, index) => this.copy(obj, `${key}[${index}]`));\n }\n /** {@inheritdoc Config.getNumber} */\n getNumber(key) {\n const value = this.getOptionalNumber(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalNumber} */\n getOptionalNumber(key) {\n const value = this.readConfigValue(\n key,\n (val) => typeof val === \"number\" || typeof val === \"string\" || { expected: \"number\" }\n );\n if (typeof value === \"number\" || value === void 0) {\n return value;\n }\n const number = Number(value);\n if (!Number.isFinite(number)) {\n throw new Error(\n errors.convert(this.fullKey(key), this.context, \"number\")\n );\n }\n return number;\n }\n /** {@inheritdoc Config.getBoolean} */\n getBoolean(key) {\n const value = this.getOptionalBoolean(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalBoolean} */\n getOptionalBoolean(key) {\n const value = this.readConfigValue(\n key,\n (val) => typeof val === \"boolean\" || typeof val === \"number\" || typeof val === \"string\" || { expected: \"boolean\" }\n );\n if (typeof value === \"boolean\" || value === void 0) {\n return value;\n }\n const valueString = String(value).trim();\n if (/^(?:y|yes|true|1|on)$/i.test(valueString)) {\n return true;\n }\n if (/^(?:n|no|false|0|off)$/i.test(valueString)) {\n return false;\n }\n throw new Error(errors.convert(this.fullKey(key), this.context, \"boolean\"));\n }\n /** {@inheritdoc Config.getString} */\n getString(key) {\n const value = this.getOptionalString(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalString} */\n getOptionalString(key) {\n return this.readConfigValue(\n key,\n (value) => typeof value === \"string\" && value !== \"\" || { expected: \"string\" }\n );\n }\n /** {@inheritdoc Config.getStringArray} */\n getStringArray(key) {\n const value = this.getOptionalStringArray(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalStringArray} */\n getOptionalStringArray(key) {\n return this.readConfigValue(key, (values) => {\n if (!Array.isArray(values)) {\n return { expected: \"string-array\" };\n }\n for (const [index, value] of values.entries()) {\n if (typeof value !== \"string\" || value === \"\") {\n return { expected: \"string-array\", value, key: `${key}[${index}]` };\n }\n }\n return true;\n });\n }\n fullKey(key) {\n return `${this.prefix}${this.prefix ? \".\" : \"\"}${key}`;\n }\n copy(data, key, fallback) {\n const reader = new ConfigReader(\n data,\n this.context,\n fallback,\n this.fullKey(key)\n );\n reader.filteredKeys = this.filteredKeys;\n return reader;\n }\n readConfigValue(key, validate) {\n const value = this.readValue(key);\n if (value === void 0) {\n if (process.env.NODE_ENV === \"development\") {\n const fullKey = this.fullKey(key);\n if (this.filteredKeys?.includes(fullKey) && !this.notifiedFilteredKeys.has(fullKey)) {\n this.notifiedFilteredKeys.add(fullKey);\n console.warn(\n `Failed to read configuration value at '${fullKey}' as it is not visible. See https://backstage.io/docs/conf/defining#visibility for instructions on how to make it visible.`\n );\n }\n }\n return this.fallback?.readConfigValue(key, validate);\n }\n if (value === null) {\n return void 0;\n }\n const result = validate(value);\n if (result !== true) {\n const { key: keyName = key, value: theValue = value, expected } = result;\n throw new TypeError(\n errors.type(\n this.fullKey(keyName),\n this.context,\n typeOf(theValue),\n expected\n )\n );\n }\n return value;\n }\n readValue(key) {\n const parts = key ? key.split(\".\") : [];\n for (const part of parts) {\n if (!CONFIG_KEY_PART_PATTERN.test(part)) {\n throw new TypeError(`Invalid config key '${key}'`);\n }\n }\n if (this.data === void 0) {\n return void 0;\n }\n let value = this.data;\n for (const [index, part] of parts.entries()) {\n if (isObject(value)) {\n value = value[part];\n } else if (value !== void 0 && value !== null) {\n const badKey = this.fullKey(parts.slice(0, index).join(\".\"));\n throw new TypeError(\n errors.type(badKey, this.context, typeOf(value), \"object\")\n );\n }\n }\n return value;\n }\n}\n\nexport { ConfigReader };\n//# sourceMappingURL=reader.esm.js.map\n","const ERROR_PREFIX = \"Invalid discovery URL pattern,\";\nclass UrlPatternDiscovery {\n constructor(parts) {\n this.parts = parts;\n }\n /**\n * Creates a new UrlPatternDiscovery given a template. The only\n * interpolation done for the template is to replace instances of `{{pluginId}}`\n * with the ID of the plugin being requested.\n *\n * Example pattern: `http://localhost:7007/api/{{ pluginId }}`\n */\n static compile(pattern) {\n const parts = pattern.split(/\\{\\{\\s*pluginId\\s*\\}\\}/);\n const urlStr = parts.join(\"pluginId\");\n let url;\n try {\n url = new URL(urlStr);\n } catch {\n throw new Error(`${ERROR_PREFIX} URL '${urlStr}' is invalid`);\n }\n if (url.hash) {\n throw new Error(`${ERROR_PREFIX} URL must not have a hash`);\n }\n if (url.search) {\n throw new Error(`${ERROR_PREFIX} URL must not have a query`);\n }\n if (urlStr.endsWith(\"/\")) {\n throw new Error(`${ERROR_PREFIX} URL must not end with a slash`);\n }\n return new UrlPatternDiscovery(parts);\n }\n async getBaseUrl(pluginId) {\n return this.parts.join(encodeURIComponent(pluginId));\n }\n}\n\nexport { UrlPatternDiscovery };\n//# sourceMappingURL=UrlPatternDiscovery.esm.js.map\n","import { UrlPatternDiscovery } from './UrlPatternDiscovery.esm.js';\n\nclass FrontendHostDiscovery {\n constructor(endpoints, defaultEndpoint) {\n this.endpoints = endpoints;\n this.defaultEndpoint = defaultEndpoint;\n }\n /**\n * Creates a new FrontendHostDiscovery discovery instance by reading\n * the external target URL from the `discovery.endpoints` config section.\n *\n * eg.\n * ```yaml\n * discovery:\n * endpoints:\n * - target: https://internal.example.com/internal-catalog\n * plugins: [catalog]\n * - target: https://internal.example.com/secure/api/{{pluginId}}\n * plugins: [auth, permissions]\n * - target:\n * internal: https://internal.example.com/search\n * external: https://example.com/search\n * plugins: [search]\n * ```\n *\n * If a plugin is not declared in the config, the discovery will fall back to using the baseUrl with\n * the provided `pathPattern` appended. The default path pattern is `\"/api/{{ pluginId }}\"`.\n */\n static fromConfig(config, options) {\n const path = options?.pathPattern ?? \"/api/{{ pluginId }}\";\n const baseUrl = config.getString(\"backend.baseUrl\");\n const endpoints = config.getOptionalConfigArray(\"discovery.endpoints\")?.flatMap((e) => {\n const target = typeof e.get(\"target\") === \"object\" ? e.getOptionalString(\"target.external\") : e.getString(\"target\");\n if (!target) {\n return [];\n }\n const discovery = UrlPatternDiscovery.compile(target);\n return e.getStringArray(\"plugins\").map((pluginId) => [pluginId, discovery]);\n });\n return new FrontendHostDiscovery(\n new Map(endpoints),\n UrlPatternDiscovery.compile(`${baseUrl}${path}`)\n );\n }\n async getBaseUrl(pluginId) {\n const endpoint = this.endpoints.get(pluginId);\n if (endpoint) {\n return endpoint.getBaseUrl(pluginId);\n }\n return this.defaultEndpoint.getBaseUrl(pluginId);\n }\n}\n\nexport { FrontendHostDiscovery };\n//# sourceMappingURL=FrontendHostDiscovery.esm.js.map\n","class ErrorAlerter {\n constructor(alertApi, errorApi) {\n this.alertApi = alertApi;\n this.errorApi = errorApi;\n }\n post(error, context) {\n if (!context?.hidden) {\n this.alertApi.post({ message: error.message, severity: \"error\" });\n }\n return this.errorApi.post(error, context);\n }\n error$() {\n return this.errorApi.error$();\n }\n}\n\nexport { ErrorAlerter };\n//# sourceMappingURL=ErrorAlerter.esm.js.map\n","import { PublishSubject } from '../../../lib/subjects.esm.js';\n\nclass ErrorApiForwarder {\n subject = new PublishSubject();\n post(error, context) {\n this.subject.next({ error, context });\n }\n error$() {\n return this.subject;\n }\n}\n\nexport { ErrorApiForwarder };\n//# sourceMappingURL=ErrorApiForwarder.esm.js.map\n","class UnhandledErrorForwarder {\n /**\n * Add event listener, such that unhandled errors can be forwarded using an given `ErrorApi` instance\n */\n static forward(errorApi, errorContext) {\n window.addEventListener(\n \"unhandledrejection\",\n (e) => {\n errorApi.post(e.reason, errorContext);\n }\n );\n }\n}\n\nexport { UnhandledErrorForwarder };\n//# sourceMappingURL=UnhandledErrorForwarder.esm.js.map\n","import { FeatureFlagState } from '@backstage/core-plugin-api';\n\nfunction validateFlagName(name) {\n if (name.length < 3) {\n throw new Error(\n `The '${name}' feature flag must have a minimum length of three characters.`\n );\n }\n if (name.length > 150) {\n throw new Error(\n `The '${name}' feature flag must not exceed 150 characters.`\n );\n }\n if (!name.match(/^[a-z]+[a-z0-9-]+$/)) {\n throw new Error(\n `The '${name}' feature flag must start with a lowercase letter and only contain lowercase letters, numbers and hyphens. Examples: feature-flag-one, alpha, release-2020`\n );\n }\n}\nclass LocalStorageFeatureFlags {\n registeredFeatureFlags = [];\n flags;\n registerFlag(flag) {\n validateFlagName(flag.name);\n this.registeredFeatureFlags.push(flag);\n }\n getRegisteredFlags() {\n return this.registeredFeatureFlags.slice();\n }\n isActive(name) {\n if (!this.flags) {\n this.flags = this.load();\n }\n return this.flags.get(name) === FeatureFlagState.Active;\n }\n save(options) {\n if (!this.flags) {\n this.flags = this.load();\n }\n if (!options.merge) {\n this.flags.clear();\n }\n for (const [name, state] of Object.entries(options.states)) {\n this.flags.set(name, state);\n }\n const enabled = Array.from(this.flags.entries()).filter(\n ([, state]) => state === FeatureFlagState.Active\n );\n window.localStorage.setItem(\n \"featureFlags\",\n JSON.stringify(Object.fromEntries(enabled))\n );\n }\n load() {\n try {\n const jsonStr = window.localStorage.getItem(\"featureFlags\");\n if (!jsonStr) {\n return /* @__PURE__ */ new Map();\n }\n const json = JSON.parse(jsonStr);\n if (typeof json !== \"object\" || json === null || Array.isArray(json)) {\n return /* @__PURE__ */ new Map();\n }\n const entries = Object.entries(json).filter(([name, value]) => {\n validateFlagName(name);\n return value === FeatureFlagState.Active;\n });\n return new Map(entries);\n } catch {\n return /* @__PURE__ */ new Map();\n }\n }\n}\n\nexport { LocalStorageFeatureFlags, validateFlagName };\n//# sourceMappingURL=LocalStorageFeatureFlags.esm.js.map\n","function createFetchApi(options) {\n let result = options.baseImplementation || global.fetch;\n const middleware = [options.middleware ?? []].flat().reverse();\n for (const m of middleware) {\n result = m.apply(result);\n }\n return {\n fetch: result\n };\n}\n\nexport { createFetchApi };\n//# sourceMappingURL=createFetchApi.esm.js.map\n","class IdentityAuthInjectorFetchMiddleware {\n constructor(identityApi, allowUrl, headerName, headerValue) {\n this.identityApi = identityApi;\n this.allowUrl = allowUrl;\n this.headerName = headerName;\n this.headerValue = headerValue;\n }\n static create(options) {\n const matcher = buildMatcher(options);\n const headerName = options.header?.name || \"authorization\";\n const headerValue = options.header?.value || ((token) => `Bearer ${token}`);\n return new IdentityAuthInjectorFetchMiddleware(\n options.identityApi,\n matcher,\n headerName,\n headerValue\n );\n }\n /**\n * Returns an array of plugin URL prefixes derived from the static `discovery`\n * configuration, to be used as `urlPrefixAllowlist` option of {@link create}.\n */\n static getDiscoveryUrlPrefixes(config) {\n const endpointConfigs = config.getOptionalConfigArray(\"discovery.endpoints\") || [];\n return endpointConfigs.flatMap((c) => {\n const target = typeof c.get(\"target\") === \"object\" ? c.getString(\"target.external\") : c.getString(\"target\");\n const plugins = c.getStringArray(\"plugins\");\n return plugins.map(\n (pluginId) => target.replace(/\\{\\{\\s*pluginId\\s*\\}\\}/g, pluginId)\n );\n });\n }\n apply(next) {\n return async (input, init) => {\n const request = new Request(input, init);\n const { token } = await this.identityApi.getCredentials();\n if (request.headers.get(this.headerName) || typeof token !== \"string\" || !token || !this.allowUrl(request.url)) {\n return next(input, init);\n }\n request.headers.set(this.headerName, this.headerValue(token));\n return next(request);\n };\n }\n}\nfunction buildMatcher(options) {\n if (options.allowUrl) {\n return options.allowUrl;\n } else if (options.urlPrefixAllowlist) {\n return buildPrefixMatcher(options.urlPrefixAllowlist);\n } else if (options.config) {\n return buildPrefixMatcher([\n options.config.getString(\"backend.baseUrl\"),\n ...IdentityAuthInjectorFetchMiddleware.getDiscoveryUrlPrefixes(\n options.config\n )\n ]);\n }\n return () => false;\n}\nfunction buildPrefixMatcher(prefixes) {\n const trimmedPrefixes = prefixes.map((prefix) => prefix.replace(/\\/$/, \"\"));\n return (url) => trimmedPrefixes.some(\n (prefix) => url === prefix || url.startsWith(`${prefix}/`)\n );\n}\n\nexport { IdentityAuthInjectorFetchMiddleware };\n//# sourceMappingURL=IdentityAuthInjectorFetchMiddleware.esm.js.map\n","function join(left, right) {\n if (!right || right === \"/\") {\n return left;\n }\n return `${left.replace(/\\/$/, \"\")}/${right.replace(/^\\//, \"\")}`;\n}\nclass PluginProtocolResolverFetchMiddleware {\n constructor(discoveryApi) {\n this.discoveryApi = discoveryApi;\n }\n apply(next) {\n return async (input, init) => {\n const request = new Request(input, init);\n const prefix = \"plugin://\";\n if (!request.url.startsWith(prefix)) {\n return next(input, init);\n }\n const { hostname, pathname, search, hash, username, password } = new URL(\n `http://${request.url.substring(prefix.length)}`\n );\n let base = await this.discoveryApi.getBaseUrl(hostname);\n if (username || password) {\n const baseUrl = new URL(base);\n const authority = `${username}${password ? `:${password}` : \"\"}@`;\n base = `${baseUrl.protocol}//${authority}${baseUrl.host}${baseUrl.pathname}`;\n }\n const target = `${join(base, pathname)}${search}${hash}`;\n return next(\n target,\n typeof input === \"string\" || isUrl(input) ? init : input\n );\n };\n }\n}\nfunction isUrl(a) {\n return typeof a === \"object\" && a?.constructor === URL;\n}\n\nexport { PluginProtocolResolverFetchMiddleware };\n//# sourceMappingURL=PluginProtocolResolverFetchMiddleware.esm.js.map\n","import { IdentityAuthInjectorFetchMiddleware } from './IdentityAuthInjectorFetchMiddleware.esm.js';\nimport { PluginProtocolResolverFetchMiddleware } from './PluginProtocolResolverFetchMiddleware.esm.js';\n\nclass FetchMiddlewares {\n /**\n * Handles translation from `plugin://` URLs to concrete http(s) URLs based on\n * the discovery API.\n *\n * @remarks\n *\n * If the request is for `plugin://catalog/entities?filter=x=y`, the discovery\n * API will be queried for `'catalog'`. If it returned\n * `https://backstage.example.net/api/catalog`, the resulting query would be\n * `https://backstage.example.net/api/catalog/entities?filter=x=y`.\n *\n * If the incoming URL protocol was not `plugin`, the request is just passed\n * through verbatim to the underlying implementation.\n */\n static resolvePluginProtocol(options) {\n return new PluginProtocolResolverFetchMiddleware(options.discoveryApi);\n }\n /**\n * Injects a Backstage token header when the user is signed in.\n *\n * @remarks\n *\n * Per default, an `Authorization: Bearer <token>` is generated. This can be\n * customized using the `header` option.\n *\n * The header injection only happens on allowlisted URLs. Per default, if the\n * `config` option is passed in, the `backend.baseUrl` is allowlisted, unless\n * the `urlPrefixAllowlist` or `allowUrl` options are passed in, in which case\n * they take precedence. If you pass in neither config nor an\n * allowlist/callback, the middleware will have no effect since effectively no\n * request will match the (nonexistent) rules.\n */\n static injectIdentityAuth(options) {\n return IdentityAuthInjectorFetchMiddleware.create(options);\n }\n constructor() {\n }\n}\n\nexport { FetchMiddlewares };\n//# sourceMappingURL=FetchMiddlewares.esm.js.map\n","import { BehaviorSubject } from '../../../lib/subjects.esm.js';\n\nfunction hasScopes(searched, searchFor) {\n for (const scope of searchFor) {\n if (!searched.has(scope)) {\n return false;\n }\n }\n return true;\n}\nfunction joinScopes(scopes, ...moreScopess) {\n const result = new Set(scopes);\n for (const moreScopes of moreScopess) {\n for (const scope of moreScopes) {\n result.add(scope);\n }\n }\n return result;\n}\nclass OAuthPendingRequests {\n requests = [];\n subject = new BehaviorSubject(\n this.getCurrentPending()\n );\n request(scopes) {\n return new Promise((resolve, reject) => {\n this.requests.push({ scopes, resolve, reject });\n this.subject.next(this.getCurrentPending());\n });\n }\n resolve(scopes, result) {\n this.requests = this.requests.filter((request) => {\n if (hasScopes(scopes, request.scopes)) {\n request.resolve(result);\n return false;\n }\n return true;\n });\n this.subject.next(this.getCurrentPending());\n }\n reject(error) {\n this.requests.forEach((request) => request.reject(error));\n this.requests = [];\n this.subject.next(this.getCurrentPending());\n }\n pending() {\n return this.subject;\n }\n getCurrentPending() {\n const currentScopes = this.requests.length === 0 ? void 0 : this.requests.slice(1).reduce(\n (acc, current) => joinScopes(acc, current.scopes),\n this.requests[0].scopes\n );\n return {\n scopes: currentScopes,\n resolve: (value) => {\n if (currentScopes) {\n this.resolve(currentScopes, value);\n }\n },\n reject: (reason) => {\n if (currentScopes) {\n this.reject(reason);\n }\n }\n };\n }\n}\n\nexport { OAuthPendingRequests, hasScopes, joinScopes };\n//# sourceMappingURL=OAuthPendingRequests.esm.js.map\n","import { OAuthPendingRequests } from './OAuthPendingRequests.esm.js';\nimport { PublishSubject } from '../../../lib/subjects.esm.js';\n\nclass OAuthRequestManager {\n subject = new PublishSubject();\n currentRequests = [];\n handlerCount = 0;\n createAuthRequester(options) {\n const handler = new OAuthPendingRequests();\n const index = this.handlerCount;\n this.handlerCount++;\n handler.pending().subscribe({\n next: (scopeRequest) => {\n const newRequests = this.currentRequests.slice();\n const request = this.makeAuthRequest(scopeRequest, options);\n if (!request) {\n delete newRequests[index];\n } else {\n newRequests[index] = request;\n }\n this.currentRequests = newRequests;\n this.subject.next(newRequests.filter(Boolean));\n }\n });\n return (scopes) => {\n return handler.request(scopes);\n };\n }\n // Converts the pending request and popup options into a popup request that we can forward to subscribers.\n makeAuthRequest(request, options) {\n const { scopes } = request;\n if (!scopes) {\n return void 0;\n }\n return {\n provider: options.provider,\n trigger: async () => {\n const result = await options.onAuthRequest(scopes);\n request.resolve(result);\n },\n reject: () => {\n const error = new Error(\"Login failed, rejected by user\");\n error.name = \"RejectedError\";\n request.reject(error);\n }\n };\n }\n authRequest$() {\n return this.subject;\n }\n}\n\nexport { OAuthRequestManager };\n//# sourceMappingURL=OAuthRequestManager.esm.js.map\n","import ObservableImpl from 'zen-observable';\n\nconst buckets = /* @__PURE__ */ new Map();\nclass WebStorage {\n constructor(namespace, errorApi) {\n this.namespace = namespace;\n this.errorApi = errorApi;\n }\n static hasSubscribed = false;\n static create(options) {\n return new WebStorage(options.namespace ?? \"\", options.errorApi);\n }\n static addStorageEventListener() {\n window.addEventListener(\"storage\", (event) => {\n for (const [bucketPath, webStorage] of buckets.entries()) {\n if (event.key?.startsWith(bucketPath)) {\n webStorage.handleStorageChange(event.key);\n }\n }\n });\n }\n get(key) {\n return this.snapshot(key).value;\n }\n snapshot(key) {\n let value = void 0;\n let presence = \"absent\";\n try {\n const item = localStorage.getItem(this.getKeyName(key));\n if (item) {\n value = JSON.parse(item, (_key, val) => {\n if (typeof val === \"object\" && val !== null) {\n Object.freeze(val);\n }\n return val;\n });\n presence = \"present\";\n }\n } catch (e) {\n this.errorApi.post(\n new Error(`Error when parsing JSON config from storage for: ${key}`)\n );\n }\n return { key, value, presence };\n }\n forBucket(name) {\n const bucketPath = `${this.namespace}/${name}`;\n if (!buckets.has(bucketPath)) {\n buckets.set(bucketPath, new WebStorage(bucketPath, this.errorApi));\n }\n return buckets.get(bucketPath);\n }\n async set(key, data) {\n localStorage.setItem(this.getKeyName(key), JSON.stringify(data));\n this.notifyChanges(key);\n }\n async remove(key) {\n localStorage.removeItem(this.getKeyName(key));\n this.notifyChanges(key);\n }\n observe$(key) {\n if (!WebStorage.hasSubscribed) {\n WebStorage.addStorageEventListener();\n WebStorage.hasSubscribed = true;\n }\n return this.observable.filter(({ key: messageKey }) => messageKey === key);\n }\n handleStorageChange(eventKey) {\n if (!eventKey?.startsWith(this.namespace)) {\n return;\n }\n const trimmedKey = eventKey?.slice(`${this.namespace}/`.length);\n if (!trimmedKey.includes(\"/\")) {\n this.notifyChanges(decodeURIComponent(trimmedKey));\n }\n }\n getKeyName(key) {\n return `${this.namespace}/${encodeURIComponent(key)}`;\n }\n notifyChanges(key) {\n const snapshot = this.snapshot(key);\n for (const subscription of this.subscribers) {\n subscription.next(snapshot);\n }\n }\n subscribers = /* @__PURE__ */ new Set();\n observable = new ObservableImpl((subscriber) => {\n this.subscribers.add(subscriber);\n return () => {\n this.subscribers.delete(subscriber);\n };\n });\n}\n\nexport { WebStorage, buckets };\n//# sourceMappingURL=WebStorage.esm.js.map\n","import { createContext } from 'react';\n\nconst InternalAppContext = createContext(void 0);\n\nexport { InternalAppContext };\n//# sourceMappingURL=InternalAppContext.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { createRoutesFromChildren, Route } from 'react-router-dom';\n\nfunction isReactRouterBeta() {\n const [obj] = createRoutesFromChildren(/* @__PURE__ */ jsx(Route, { index: true, element: /* @__PURE__ */ jsx(\"div\", {}) }));\n return !obj.index;\n}\n\nexport { isReactRouterBeta };\n//# sourceMappingURL=isReactRouterBeta.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { useEffect } from 'react';\nimport { useLocation, matchRoutes } from 'react-router-dom';\nimport { AnalyticsContext, useAnalytics } from '@backstage/core-plugin-api';\n\nconst getExtensionContext = (pathname, routes) => {\n try {\n const matches = matchRoutes(routes, { pathname });\n const routeMatch = matches?.filter((match) => match?.route.routeRefs?.size > 0).pop();\n const routeObject = routeMatch?.route;\n if (!routeObject) {\n return void 0;\n }\n if (routeObject.path === \"\" && pathname !== \"/\") {\n return void 0;\n }\n let routeRef;\n if (routeObject.routeRefs.size === 1) {\n routeRef = routeObject.routeRefs.values().next().value;\n }\n let plugin;\n if (routeObject.plugins.size === 1) {\n plugin = routeObject.plugins.values().next().value;\n }\n const params = Object.entries(\n routeMatch?.params || {}\n ).reduce((acc, [key, value]) => {\n if (value !== void 0 && key !== \"*\") {\n acc[key] = value;\n }\n return acc;\n }, {});\n return {\n extension: \"App\",\n pluginId: plugin?.getId() || \"root\",\n ...routeRef ? { routeRef: routeRef.id } : {},\n _routeNodeType: routeObject.element,\n params\n };\n } catch {\n return void 0;\n }\n};\nconst TrackNavigation = ({\n pathname,\n search,\n hash,\n attributes\n}) => {\n const analytics = useAnalytics();\n useEffect(() => {\n analytics.captureEvent(\"navigate\", `${pathname}${search}${hash}`, {\n attributes\n });\n }, [analytics, pathname, search, hash, attributes]);\n return null;\n};\nconst RouteTracker = ({\n routeObjects\n}) => {\n const { pathname, search, hash } = useLocation();\n const { params, ...attributes } = getExtensionContext(\n pathname,\n routeObjects\n ) || { params: {} };\n return /* @__PURE__ */ jsx(AnalyticsContext, { attributes, children: /* @__PURE__ */ jsx(\n TrackNavigation,\n {\n pathname,\n search,\n hash,\n attributes: params\n }\n ) });\n};\n\nexport { RouteTracker };\n//# sourceMappingURL=RouteTracker.esm.js.map\n","import { jsxs, jsx, Fragment } from 'react/jsx-runtime';\nimport { useContext, useState } from 'react';\nimport { attachComponentData, useApp, useApi, configApiRef } from '@backstage/core-plugin-api';\nimport { InternalAppContext } from './InternalAppContext.esm.js';\nimport { isReactRouterBeta } from './isReactRouterBeta.esm.js';\nimport { RouteTracker } from '../routing/RouteTracker.esm.js';\nimport { Routes, Route } from 'react-router-dom';\n\nfunction getBasePath(configApi) {\n if (!isReactRouterBeta()) {\n return \"\";\n }\n return readBasePath(configApi);\n}\nfunction readBasePath(configApi) {\n let { pathname } = new URL(\n configApi.getOptionalString(\"app.baseUrl\") ?? \"/\",\n \"http://sample.dev\"\n // baseUrl can be specified as just a path\n );\n pathname = pathname.replace(/\\/*$/, \"\");\n return pathname;\n}\nfunction SignInPageWrapper({\n component: Component,\n appIdentityProxy,\n children\n}) {\n const [identityApi, setIdentityApi] = useState();\n const configApi = useApi(configApiRef);\n const basePath = readBasePath(configApi);\n if (!identityApi) {\n return /* @__PURE__ */ jsx(Component, { onSignInSuccess: setIdentityApi });\n }\n appIdentityProxy.setTarget(identityApi, {\n signOutTargetUrl: basePath || \"/\"\n });\n return /* @__PURE__ */ jsx(Fragment, { children });\n}\nfunction AppRouter(props) {\n const { Router: RouterComponent, SignInPage: SignInPageComponent } = useApp().getComponents();\n const configApi = useApi(configApiRef);\n const basePath = readBasePath(configApi);\n const mountPath = `${basePath}/*`;\n const internalAppContext = useContext(InternalAppContext);\n if (!internalAppContext) {\n throw new Error(\"AppRouter must be rendered within the AppProvider\");\n }\n const { routeObjects, appIdentityProxy } = internalAppContext;\n if (!SignInPageComponent) {\n appIdentityProxy.setTarget(\n {\n getUserId: () => \"guest\",\n getIdToken: async () => void 0,\n getProfile: () => ({\n email: \"guest@example.com\",\n displayName: \"Guest\"\n }),\n getProfileInfo: async () => ({\n email: \"guest@example.com\",\n displayName: \"Guest\"\n }),\n getBackstageIdentity: async () => ({\n type: \"user\",\n userEntityRef: \"user:default/guest\",\n ownershipEntityRefs: [\"user:default/guest\"]\n }),\n getCredentials: async () => ({}),\n signOut: async () => {\n }\n },\n { signOutTargetUrl: basePath || \"/\" }\n );\n if (isReactRouterBeta()) {\n return /* @__PURE__ */ jsxs(RouterComponent, { children: [\n /* @__PURE__ */ jsx(RouteTracker, { routeObjects }),\n /* @__PURE__ */ jsx(Routes, { children: /* @__PURE__ */ jsx(Route, { path: mountPath, element: /* @__PURE__ */ jsx(Fragment, { children: props.children }) }) })\n ] });\n }\n return /* @__PURE__ */ jsxs(RouterComponent, { basename: basePath, children: [\n /* @__PURE__ */ jsx(RouteTracker, { routeObjects }),\n props.children\n ] });\n }\n if (isReactRouterBeta()) {\n return /* @__PURE__ */ jsxs(RouterComponent, { children: [\n /* @__PURE__ */ jsx(RouteTracker, { routeObjects }),\n /* @__PURE__ */ jsx(\n SignInPageWrapper,\n {\n component: SignInPageComponent,\n appIdentityProxy,\n children: /* @__PURE__ */ jsx(Routes, { children: /* @__PURE__ */ jsx(Route, { path: mountPath, element: /* @__PURE__ */ jsx(Fragment, { children: props.children }) }) })\n }\n )\n ] });\n }\n return /* @__PURE__ */ jsxs(RouterComponent, { basename: basePath, children: [\n /* @__PURE__ */ jsx(RouteTracker, { routeObjects }),\n /* @__PURE__ */ jsx(\n SignInPageWrapper,\n {\n component: SignInPageComponent,\n appIdentityProxy,\n children: props.children\n }\n )\n ] });\n}\nattachComponentData(AppRouter, \"core.type\", \"AppRouter\");\n\nexport { AppRouter, getBasePath };\n//# sourceMappingURL=AppRouter.esm.js.map\n","import { createApiRef } from '@backstage/core-plugin-api';\n\nconst appLanguageApiRef = createApiRef({\n id: \"core.applanguage\"\n});\n\nexport { appLanguageApiRef };\n//# sourceMappingURL=AppLanguageApi.esm.js.map\n","import { Children, isValidElement } from 'react';\n\nfunction traverseElementTree(options) {\n const collectors = {};\n for (const name in options.collectors) {\n if (options.collectors.hasOwnProperty(name)) {\n collectors[name] = options.collectors[name]();\n }\n }\n const queue = [\n {\n node: Children.toArray(options.root),\n parent: void 0,\n contexts: {}\n }\n ];\n while (queue.length !== 0) {\n const { node, parent, contexts } = queue.shift();\n Children.forEach(node, (element) => {\n if (!isValidElement(element)) {\n return;\n }\n const nextContexts = {};\n for (const name in collectors) {\n if (collectors.hasOwnProperty(name)) {\n const collector = collectors[name];\n nextContexts[name] = collector.visit(\n collector.accumulator,\n element,\n parent,\n contexts[name]\n );\n }\n }\n for (const discoverer of options.discoverers) {\n const children = discoverer(element);\n if (children) {\n queue.push({\n node: children,\n parent: element,\n contexts: nextContexts\n });\n }\n }\n });\n }\n return Object.fromEntries(\n Object.entries(collectors).map(([name, c]) => [name, c.accumulator])\n );\n}\nfunction createCollector(accumulatorFactory, visit) {\n return () => ({ accumulator: accumulatorFactory(), visit });\n}\nfunction childDiscoverer(element) {\n return element.props?.children;\n}\nfunction routeElementDiscoverer(element) {\n if (element.props?.path && element.props?.element) {\n return element.props?.element;\n }\n return void 0;\n}\n\nexport { childDiscoverer, createCollector, routeElementDiscoverer, traverseElementTree };\n//# sourceMappingURL=traversal.esm.js.map\n","import { getComponentData } from '@backstage/core-plugin-api';\nimport { createCollector } from '../extensions/traversal.esm.js';\n\nconst pluginCollector = createCollector(\n () => /* @__PURE__ */ new Set(),\n (acc, node) => {\n const plugin = getComponentData(node, \"core.plugin\");\n if (plugin) {\n acc.add(plugin);\n }\n }\n);\n\nexport { pluginCollector };\n//# sourceMappingURL=collectors.esm.js.map\n","import { jsx, Fragment } from 'react/jsx-runtime';\nimport { attachComponentData, useApi, featureFlagsApiRef } from '@backstage/core-plugin-api';\n\nconst FeatureFlagged = (props) => {\n const { children } = props;\n const featureFlagApi = useApi(featureFlagsApiRef);\n const isEnabled = \"with\" in props ? featureFlagApi.isActive(props.with) : !featureFlagApi.isActive(props.without);\n return /* @__PURE__ */ jsx(Fragment, { children: isEnabled ? children : null });\n};\nattachComponentData(FeatureFlagged, \"core.featureFlagged\", true);\n\nexport { FeatureFlagged };\n//# sourceMappingURL=FeatureFlagged.esm.js.map\n","import { getComponentData } from '@backstage/core-plugin-api';\nimport { isValidElement, Children } from 'react';\nimport { createCollector } from '../extensions/traversal.esm.js';\nimport { FeatureFlagged } from './FeatureFlagged.esm.js';\n\nconst MATCH_ALL_ROUTE = {\n caseSensitive: false,\n path: \"*\",\n element: \"match-all\",\n // These elements aren't used, so we add in a bit of debug information\n routeRefs: /* @__PURE__ */ new Set(),\n plugins: /* @__PURE__ */ new Set()\n};\nfunction stringifyNode(node) {\n const anyNode = node;\n if (anyNode?.type) {\n return anyNode.type.displayName ?? anyNode.type.name ?? String(anyNode.type);\n }\n return String(anyNode);\n}\nconst pluginSet = (plugin) => {\n const set = /* @__PURE__ */ new Set();\n if (plugin) {\n set.add(plugin);\n }\n return set;\n};\nfunction collectSubTree(node, entries = new Array()) {\n Children.forEach(node, (element) => {\n if (!isValidElement(element)) {\n return;\n }\n const routeRef = getComponentData(element, \"core.mountPoint\");\n if (routeRef) {\n const plugin = getComponentData(element, \"core.plugin\");\n entries.push({ routeRef, plugin });\n }\n collectSubTree(element.props.children, entries);\n });\n return entries;\n}\nconst routingV2Collector = createCollector(\n () => ({\n paths: /* @__PURE__ */ new Map(),\n parents: /* @__PURE__ */ new Map(),\n objects: new Array()\n }),\n (acc, node, parent, ctx) => {\n if (ctx?.isElementAncestor) {\n return ctx;\n }\n if (parent?.props.element === node) {\n return { ...ctx, isElementAncestor: true };\n }\n const pathProp = node.props?.path;\n const mountPoint = getComponentData(node, \"core.mountPoint\");\n if (mountPoint && pathProp) {\n throw new Error(\n `Path property may not be set directly on a routable extension \"${stringifyNode(\n node\n )}\"`\n );\n }\n const parentChildren = ctx?.obj?.children ?? acc.objects;\n if (pathProp !== void 0) {\n if (typeof pathProp !== \"string\") {\n throw new Error(\n `Element path must be a string at \"${stringifyNode(node)}\"`\n );\n }\n const path = pathProp.startsWith(\"/\") ? pathProp.slice(1) : pathProp;\n const elementProp = node.props.element;\n if (getComponentData(node, \"core.gatherMountPoints\")) {\n if (elementProp) {\n throw new Error(\n `Mount point gatherers may not have an element prop \"${stringifyNode(\n node\n )}\"`\n );\n }\n const newObj = {\n path,\n element: \"gathered\",\n routeRefs: /* @__PURE__ */ new Set(),\n caseSensitive: Boolean(node.props?.caseSensitive),\n children: [MATCH_ALL_ROUTE],\n plugins: /* @__PURE__ */ new Set()\n };\n parentChildren.push(newObj);\n return {\n obj: newObj,\n gatherPath: path,\n routeRef: ctx?.routeRef,\n gatherRouteRef: ctx?.routeRef\n };\n }\n if (elementProp) {\n const [extension, ...others] = collectSubTree(elementProp);\n if (others.length > 0) {\n throw new Error(\n `Route element with path \"${pathProp}\" may not contain multiple routable extensions`\n );\n }\n if (!extension) {\n return ctx;\n }\n const { routeRef, plugin } = extension;\n const newObj = {\n path,\n element: \"mounted\",\n routeRefs: /* @__PURE__ */ new Set([routeRef]),\n caseSensitive: Boolean(node.props?.caseSensitive),\n children: [MATCH_ALL_ROUTE],\n plugins: pluginSet(plugin)\n };\n parentChildren.push(newObj);\n acc.paths.set(routeRef, path);\n acc.parents.set(routeRef, ctx?.routeRef);\n return {\n obj: newObj,\n routeRef: routeRef ?? ctx?.routeRef,\n gatherPath: path,\n gatherRouteRef: ctx?.gatherRouteRef\n };\n }\n }\n if (mountPoint) {\n if (ctx?.gatherPath === void 0) {\n throw new Error(\n `Routable extension \"${stringifyNode(\n node\n )}\" with mount point \"${mountPoint}\" must be assigned a path`\n );\n }\n ctx?.obj?.routeRefs.add(mountPoint);\n const mountPointPlugin = getComponentData(\n node,\n \"core.plugin\"\n );\n if (mountPointPlugin) {\n ctx?.obj?.plugins.add(mountPointPlugin);\n }\n acc.paths.set(mountPoint, ctx.gatherPath);\n acc.parents.set(mountPoint, ctx?.gatherRouteRef);\n return {\n ...ctx,\n routeRef: mountPoint\n };\n }\n return ctx;\n }\n);\nconst routingV1Collector = createCollector(\n () => ({\n paths: /* @__PURE__ */ new Map(),\n parents: /* @__PURE__ */ new Map(),\n objects: new Array()\n }),\n (acc, node, parent, ctx) => {\n if (parent?.props.element === node) {\n return ctx;\n }\n let currentObj = ctx?.obj;\n let currentParentRouteRef = ctx?.routeRef;\n let sticky = ctx?.sticky;\n const path = node.props?.path;\n const parentChildren = currentObj?.children ?? acc.objects;\n const caseSensitive = Boolean(node.props?.caseSensitive);\n let currentCtxPath = ctx?.path;\n if (getComponentData(node, \"core.gatherMountPoints\")) {\n if (!path) {\n throw new Error(\"Mount point gatherer must have a path\");\n }\n currentCtxPath = path;\n }\n const element = node.props?.element;\n let routeRef = getComponentData(node, \"core.mountPoint\");\n if (!routeRef && isValidElement(element)) {\n routeRef = getComponentData(element, \"core.mountPoint\");\n }\n if (routeRef) {\n let routePath = path;\n if (currentCtxPath) {\n if (routePath) {\n currentCtxPath = void 0;\n } else {\n routePath = currentCtxPath;\n }\n }\n if (!routePath) {\n throw new Error(\"Mounted routable extension must have a path\");\n }\n acc.paths.set(routeRef, routePath);\n if (currentParentRouteRef && sticky) {\n acc.parents.set(routeRef, currentParentRouteRef);\n if (path) {\n currentParentRouteRef = routeRef;\n sticky = false;\n }\n } else {\n acc.parents.set(routeRef, currentParentRouteRef);\n currentParentRouteRef = routeRef;\n }\n if (path) {\n currentObj = {\n caseSensitive,\n path,\n element: \"mounted\",\n routeRefs: /* @__PURE__ */ new Set([routeRef]),\n children: [MATCH_ALL_ROUTE],\n plugins: pluginSet(\n getComponentData(\n node.props.element,\n \"core.plugin\"\n )\n )\n };\n parentChildren.push(currentObj);\n } else {\n currentObj?.routeRefs.add(routeRef);\n }\n }\n if (getComponentData(node, \"core.gatherMountPoints\")) {\n sticky = true;\n }\n const isGatherer = getComponentData(\n node,\n \"core.gatherMountPoints\"\n );\n if (isGatherer) {\n if (!path) {\n throw new Error(\"Mount point gatherer must have a path\");\n }\n if (!routeRef) {\n currentObj = {\n caseSensitive,\n path,\n element: \"gathered\",\n routeRefs: /* @__PURE__ */ new Set(),\n children: [MATCH_ALL_ROUTE],\n plugins: ctx?.obj?.plugins || /* @__PURE__ */ new Set()\n };\n parentChildren.push(currentObj);\n }\n }\n return {\n obj: currentObj,\n path: currentCtxPath,\n routeRef: currentParentRouteRef,\n sticky\n };\n }\n);\nconst featureFlagCollector = createCollector(\n () => /* @__PURE__ */ new Set(),\n (acc, node) => {\n if (node.type === FeatureFlagged) {\n const props = node.props;\n acc.add(\"with\" in props ? props.with : props.without);\n }\n }\n);\n\nexport { MATCH_ALL_ROUTE, featureFlagCollector, routingV1Collector, routingV2Collector };\n//# sourceMappingURL=collectors.esm.js.map\n","import { getOrCreateGlobalSingleton } from '@backstage/version-bridge';\n\nconst routeRefType = getOrCreateGlobalSingleton(\n \"route-ref-type\",\n () => Symbol(\"route-ref-type\")\n);\nfunction isRouteRef(routeRef) {\n return routeRef[routeRefType] === \"absolute\";\n}\nfunction isSubRouteRef(routeRef) {\n return routeRef[routeRefType] === \"sub\";\n}\nfunction isExternalRouteRef(routeRef) {\n return routeRef[routeRefType] === \"external\";\n}\n\nexport { isExternalRouteRef, isRouteRef, isSubRouteRef, routeRefType };\n//# sourceMappingURL=types.esm.js.map\n","function joinPaths(...paths) {\n const normalized = paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n if (normalized !== \"/\" && normalized.endsWith(\"/\")) {\n return normalized.slice(0, -1);\n }\n return normalized;\n}\n\nexport { joinPaths };\n//# sourceMappingURL=helpers.esm.js.map\n","import { generatePath, matchRoutes } from 'react-router-dom';\nimport { isRouteRef, isSubRouteRef, isExternalRouteRef, routeRefType } from './types.esm.js';\nimport { joinPaths } from './helpers.esm.js';\nimport mapValues from 'lodash/mapValues';\n\nfunction resolveTargetRef(anyRouteRef, routePaths, routeBindings) {\n let targetRef;\n let subRoutePath = \"\";\n if (isRouteRef(anyRouteRef)) {\n targetRef = anyRouteRef;\n } else if (isSubRouteRef(anyRouteRef)) {\n targetRef = anyRouteRef.parent;\n subRoutePath = anyRouteRef.path;\n } else if (isExternalRouteRef(anyRouteRef)) {\n const resolvedRoute = routeBindings.get(anyRouteRef);\n if (!resolvedRoute) {\n return [void 0, \"\"];\n }\n if (isRouteRef(resolvedRoute)) {\n targetRef = resolvedRoute;\n } else if (isSubRouteRef(resolvedRoute)) {\n targetRef = resolvedRoute.parent;\n subRoutePath = resolvedRoute.path;\n } else {\n throw new Error(\n `ExternalRouteRef was bound to invalid target, ${resolvedRoute}`\n );\n }\n } else if (anyRouteRef[routeRefType]) {\n throw new Error(\n `Unknown or invalid route ref type, ${anyRouteRef[routeRefType]}`\n );\n } else {\n throw new Error(`Unknown object passed to useRouteRef, got ${anyRouteRef}`);\n }\n if (!targetRef) {\n return [void 0, \"\"];\n }\n const resolvedPath = routePaths.get(targetRef);\n if (resolvedPath === void 0) {\n return [void 0, \"\"];\n }\n const targetPath = joinPaths(resolvedPath, subRoutePath);\n return [targetRef, targetPath];\n}\nfunction resolveBasePath(targetRef, sourceLocation, routePaths, routeParents, routeObjects) {\n const match = matchRoutes(routeObjects, sourceLocation) ?? [];\n const refDiffList = Array();\n let matchIndex = -1;\n for (let targetSearchRef = targetRef; targetSearchRef; targetSearchRef = routeParents.get(targetSearchRef)) {\n matchIndex = match.findIndex(\n (m) => m.route.routeRefs.has(targetSearchRef)\n );\n if (matchIndex !== -1) {\n break;\n }\n refDiffList.unshift(targetSearchRef);\n }\n if (refDiffList.length === 0) {\n matchIndex -= 1;\n }\n const parentPath = matchIndex === -1 ? \"\" : match[matchIndex].pathname;\n const diffPaths = refDiffList.slice(0, -1).map((ref) => {\n const path = routePaths.get(ref);\n if (path === void 0) {\n throw new Error(`No path for ${ref}`);\n }\n if (path.includes(\":\")) {\n throw new Error(\n `Cannot route to ${targetRef} with parent ${ref} as it has parameters`\n );\n }\n return path;\n });\n return `${joinPaths(parentPath, ...diffPaths)}/`;\n}\nclass RouteResolver {\n constructor(routePaths, routeParents, routeObjects, routeBindings, appBasePath) {\n this.routePaths = routePaths;\n this.routeParents = routeParents;\n this.routeObjects = routeObjects;\n this.routeBindings = routeBindings;\n this.appBasePath = appBasePath;\n }\n resolve(anyRouteRef, sourceLocation) {\n const [targetRef, targetPath] = resolveTargetRef(\n anyRouteRef,\n this.routePaths,\n this.routeBindings\n );\n if (!targetRef) {\n return void 0;\n }\n let relativeSourceLocation;\n if (typeof sourceLocation === \"string\") {\n relativeSourceLocation = this.trimPath(sourceLocation);\n } else if (sourceLocation.pathname) {\n relativeSourceLocation = {\n ...sourceLocation,\n pathname: this.trimPath(sourceLocation.pathname)\n };\n } else {\n relativeSourceLocation = sourceLocation;\n }\n const basePath = this.appBasePath + resolveBasePath(\n targetRef,\n relativeSourceLocation,\n this.routePaths,\n this.routeParents,\n this.routeObjects\n );\n const routeFunc = (...[params]) => {\n const encodedParams = params && mapValues(params, (value) => {\n if (typeof value === \"string\") {\n return value.replaceAll(/[&?#;\\/]/g, (c) => encodeURIComponent(c));\n }\n return value;\n });\n return joinPaths(basePath, generatePath(targetPath, encodedParams));\n };\n return routeFunc;\n }\n trimPath(targetPath) {\n if (!targetPath) {\n return targetPath;\n }\n if (targetPath.startsWith(this.appBasePath)) {\n return targetPath.slice(this.appBasePath.length);\n }\n return targetPath;\n }\n}\n\nexport { RouteResolver };\n//# sourceMappingURL=RouteResolver.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { createVersionedContext, createVersionedValueMap } from '@backstage/version-bridge';\nimport { RouteResolver } from './RouteResolver.esm.js';\n\nconst RoutingContext = createVersionedContext(\n \"routing-context\"\n);\nconst RoutingProvider = ({\n routePaths,\n routeParents,\n routeObjects,\n routeBindings,\n basePath = \"\",\n children\n}) => {\n const resolver = new RouteResolver(\n routePaths,\n routeParents,\n routeObjects,\n routeBindings,\n basePath\n );\n const versionedValue = createVersionedValueMap({ 1: resolver });\n return /* @__PURE__ */ jsx(RoutingContext.Provider, { value: versionedValue, children });\n};\n\nexport { RoutingProvider };\n//# sourceMappingURL=RoutingProvider.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { createVersionedContext, createVersionedValueMap } from '@backstage/version-bridge';\n\nconst AppContext = createVersionedContext(\"app-context\");\nconst AppContextProvider = ({\n appContext,\n children\n}) => {\n const versionedValue = createVersionedValueMap({ 1: appContext });\n return /* @__PURE__ */ jsx(AppContext.Provider, { value: versionedValue, children });\n};\n\nexport { AppContextProvider };\n//# sourceMappingURL=AppContext.esm.js.map\n","import { startCookieAuthRefresh } from './startCookieAuthRefresh.esm.js';\n\nfunction mkError(thing) {\n return new Error(\n `Tried to access IdentityApi ${thing} before app was loaded`\n );\n}\nfunction logDeprecation(thing) {\n console.warn(\n `WARNING: Call to ${thing} is deprecated and will break in the future`\n );\n}\nclass AppIdentityProxy {\n target;\n waitForTarget;\n resolveTarget = () => {\n };\n signOutTargetUrl = \"/\";\n #cookieAuthSignOut;\n constructor() {\n this.waitForTarget = new Promise((resolve) => {\n this.resolveTarget = resolve;\n });\n }\n // This is called by the app manager once the sign-in page provides us with an implementation\n setTarget(identityApi, targetOptions) {\n this.target = identityApi;\n this.signOutTargetUrl = targetOptions.signOutTargetUrl;\n this.resolveTarget(identityApi);\n }\n getUserId() {\n if (!this.target) {\n throw mkError(\"getUserId\");\n }\n if (!this.target.getUserId) {\n throw new Error(\"IdentityApi does not implement getUserId\");\n }\n logDeprecation(\"getUserId\");\n return this.target.getUserId();\n }\n getProfile() {\n if (!this.target) {\n throw mkError(\"getProfile\");\n }\n if (!this.target.getProfile) {\n throw new Error(\"IdentityApi does not implement getProfile\");\n }\n logDeprecation(\"getProfile\");\n return this.target.getProfile();\n }\n async getProfileInfo() {\n return this.waitForTarget.then((target) => target.getProfileInfo());\n }\n async getBackstageIdentity() {\n const identity = await this.waitForTarget.then(\n (target) => target.getBackstageIdentity()\n );\n if (!identity.userEntityRef.match(/^.*:.*\\/.*$/)) {\n console.warn(\n `WARNING: The App IdentityApi provided an invalid userEntityRef, '${identity.userEntityRef}'. It must be a full Entity Reference of the form '<kind>:<namespace>/<name>'.`\n );\n }\n return identity;\n }\n async getCredentials() {\n return this.waitForTarget.then((target) => target.getCredentials());\n }\n async getIdToken() {\n return this.waitForTarget.then((target) => {\n if (!target.getIdToken) {\n throw new Error(\"IdentityApi does not implement getIdToken\");\n }\n logDeprecation(\"getIdToken\");\n return target.getIdToken();\n });\n }\n async signOut() {\n await this.waitForTarget.then((target) => target.signOut());\n await this.#cookieAuthSignOut?.();\n window.location.href = this.signOutTargetUrl;\n }\n enableCookieAuth(ctx) {\n if (this.#cookieAuthSignOut) {\n return;\n }\n const stopRefresh = startCookieAuthRefresh(ctx);\n this.#cookieAuthSignOut = async () => {\n stopRefresh();\n const appBaseUrl = await ctx.discoveryApi.getBaseUrl(\"app\");\n try {\n await fetch(`${appBaseUrl}/.backstage/auth/v1/cookie`, {\n method: \"DELETE\",\n credentials: \"include\"\n });\n } catch {\n }\n };\n }\n}\n\nexport { AppIdentityProxy };\n//# sourceMappingURL=AppIdentityProxy.esm.js.map\n","const PLUGIN_ID = \"app\";\nconst CHANNEL_ID = `${PLUGIN_ID}-auth-cookie-expires-at`;\nconst MIN_BASE_DELAY_MS = 5 * 6e4;\nconst ERROR_BACKOFF_START = 5e3;\nconst ERROR_BACKOFF_FACTOR = 2;\nconst ERROR_BACKOFF_MAX = 5 * 6e4;\nfunction startCookieAuthRefresh({\n discoveryApi,\n fetchApi,\n errorApi\n}) {\n let stopped = false;\n let timeout;\n let firstError = true;\n let errorBackoff = ERROR_BACKOFF_START;\n const channel = \"BroadcastChannel\" in window ? new BroadcastChannel(CHANNEL_ID) : void 0;\n const getDelay = (expiresAt) => {\n const margin = (1 + 3 * Math.random()) * 6e4;\n const delay = Math.max(expiresAt - Date.now(), MIN_BASE_DELAY_MS) - margin;\n return delay;\n };\n const refresh = async () => {\n try {\n const baseUrl = await discoveryApi.getBaseUrl(PLUGIN_ID);\n const requestUrl = `${baseUrl}/.backstage/auth/v1/cookie`;\n const res = await fetchApi.fetch(requestUrl, {\n credentials: \"include\"\n });\n if (!res.ok) {\n throw new Error(\n `Request failed with status ${res.status} ${res.statusText}, see request towards ${requestUrl} for more details`\n );\n }\n const data = await res.json();\n if (!data.expiresAt) {\n throw new Error(\"No expiration date in response\");\n }\n const expiresAt = Date.parse(data.expiresAt);\n if (Number.isNaN(expiresAt)) {\n throw new Error(\"Invalid expiration date in response\");\n }\n firstError = true;\n channel?.postMessage({\n action: \"COOKIE_REFRESH_SUCCESS\",\n payload: { expiresAt: new Date(expiresAt).toISOString() }\n });\n scheduleRefresh(getDelay(expiresAt));\n } catch (error) {\n if (firstError) {\n firstError = false;\n errorBackoff = ERROR_BACKOFF_START;\n } else {\n errorBackoff = Math.min(\n ERROR_BACKOFF_MAX,\n errorBackoff * ERROR_BACKOFF_FACTOR\n );\n console.error(\"Session cookie refresh failed\", error);\n errorApi.post(\n new Error(\n `Session refresh failed, see developer console for details`\n )\n );\n }\n scheduleRefresh(errorBackoff);\n }\n };\n const onMessage = (event) => {\n const { data } = event;\n if (data === null || typeof data !== \"object\") {\n return;\n }\n if (\"action\" in data && data.action === \"COOKIE_REFRESH_SUCCESS\") {\n const expiresAt = Date.parse(data.payload.expiresAt);\n if (Number.isNaN(expiresAt)) {\n console.warn(\n \"Received invalid expiration from session refresh channel\"\n );\n return;\n }\n scheduleRefresh(getDelay(expiresAt));\n }\n };\n function scheduleRefresh(delayMs) {\n if (stopped) {\n return;\n }\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(refresh, delayMs);\n }\n channel?.addEventListener(\"message\", onMessage);\n refresh();\n return () => {\n stopped = true;\n if (timeout) {\n clearTimeout(timeout);\n }\n channel?.removeEventListener(\"message\", onMessage);\n channel?.close();\n };\n}\n\nexport { startCookieAuthRefresh };\n//# sourceMappingURL=startCookieAuthRefresh.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { useMemo, useState, useEffect } from 'react';\nimport { useApi, appThemeApiRef } from '@backstage/core-plugin-api';\nimport useObservable from 'react-use/esm/useObservable';\n\nfunction resolveTheme(themeId, shouldPreferDark, themes) {\n if (themeId !== void 0) {\n const selectedTheme = themes.find((theme) => theme.id === themeId);\n if (selectedTheme) {\n return selectedTheme;\n }\n }\n if (shouldPreferDark) {\n const darkTheme = themes.find((theme) => theme.variant === \"dark\");\n if (darkTheme) {\n return darkTheme;\n }\n }\n const lightTheme = themes.find((theme) => theme.variant === \"light\");\n if (lightTheme) {\n return lightTheme;\n }\n return themes[0];\n}\nconst useShouldPreferDarkTheme = () => {\n const mediaQuery = useMemo(\n () => window.matchMedia(\"(prefers-color-scheme: dark)\"),\n []\n );\n const [shouldPreferDark, setPrefersDark] = useState(mediaQuery.matches);\n useEffect(() => {\n const listener = (event) => {\n setPrefersDark(event.matches);\n };\n mediaQuery.addListener(listener);\n return () => {\n mediaQuery.removeListener(listener);\n };\n }, [mediaQuery]);\n return shouldPreferDark;\n};\nfunction AppThemeProvider({ children }) {\n const appThemeApi = useApi(appThemeApiRef);\n const themeId = useObservable(\n appThemeApi.activeThemeId$(),\n appThemeApi.getActiveThemeId()\n );\n const shouldPreferDark = Boolean(window.matchMedia) ? useShouldPreferDarkTheme() : false;\n const appTheme = resolveTheme(\n themeId,\n shouldPreferDark,\n appThemeApi.getInstalledThemes()\n );\n if (!appTheme) {\n throw new Error(\"App has no themes\");\n }\n return /* @__PURE__ */ jsx(appTheme.Provider, { children });\n}\n\nexport { AppThemeProvider };\n//# sourceMappingURL=AppThemeProvider.esm.js.map\n","const defaultConfigLoader = async () => defaultConfigLoaderSync();\nfunction defaultConfigLoaderSync(runtimeConfigJson = \"__APP_INJECTED_RUNTIME_CONFIG__\") {\n const configs = new Array();\n const staticConfig = process.env.APP_CONFIG;\n if (staticConfig) {\n if (!Array.isArray(staticConfig)) {\n throw new Error(\"Static configuration has invalid format\");\n }\n configs.push(...staticConfig);\n }\n const configScripts = document.querySelectorAll(\n 'script[type=\"backstage.io/config\"]'\n );\n if (configScripts.length > 0) {\n for (const el of configScripts) {\n try {\n const content = el.textContent;\n if (!content) {\n throw new Error(\"tag is empty\");\n }\n let data;\n try {\n data = JSON.parse(content);\n } catch (error) {\n throw new Error(`failed to parse config; ${error}`);\n }\n if (!Array.isArray(data)) {\n throw new Error(\"data is not an array\");\n }\n configs.push(...data);\n } catch (error) {\n throw new Error(\n `Failed to load config from script tag, ${error.message}`\n );\n }\n }\n } else if (runtimeConfigJson !== // Avoiding this string also being replaced at runtime\n \"__app_injected_runtime_config__\".toLocaleUpperCase(\"en-US\")) {\n try {\n const data = JSON.parse(runtimeConfigJson);\n if (Array.isArray(data)) {\n configs.push(...data);\n } else {\n configs.push({ data, context: \"env\" });\n }\n } catch (error) {\n throw new Error(`Failed to load runtime configuration, ${error}`);\n }\n }\n const windowAppConfig = window.__APP_CONFIG__;\n if (windowAppConfig) {\n configs.push({\n context: \"window\",\n data: windowAppConfig\n });\n }\n return configs;\n}\n\nexport { defaultConfigLoader, defaultConfigLoaderSync };\n//# sourceMappingURL=defaultConfigLoader.esm.js.map\n","class ApiRegistryBuilder {\n apis = [];\n add(api, impl) {\n this.apis.push([api.id, impl]);\n return impl;\n }\n build() {\n return new ApiRegistry(new Map(this.apis));\n }\n}\nclass ApiRegistry {\n constructor(apis) {\n this.apis = apis;\n }\n static builder() {\n return new ApiRegistryBuilder();\n }\n /**\n * Creates a new ApiRegistry with a list of API implementations.\n *\n * @param apis - A list of pairs mapping an ApiRef to its respective implementation\n */\n static from(apis) {\n return new ApiRegistry(new Map(apis.map(([api, impl]) => [api.id, impl])));\n }\n /**\n * Creates a new ApiRegistry with a single API implementation.\n *\n * @param api - ApiRef for the API to add\n * @param impl - Implementation of the API to add\n */\n static with(api, impl) {\n return new ApiRegistry(/* @__PURE__ */ new Map([[api.id, impl]]));\n }\n /**\n * Returns a new ApiRegistry with the provided API added to the existing ones.\n *\n * @param api - ApiRef for the API to add\n * @param impl - Implementation of the API to add\n */\n with(api, impl) {\n return new ApiRegistry(new Map([...this.apis, [api.id, impl]]));\n }\n get(api) {\n return this.apis.get(api.id);\n }\n}\n\nexport { ApiRegistry };\n//# sourceMappingURL=ApiRegistry.esm.js.map\n","function collectRouteIds(plugins) {\n const routesById = /* @__PURE__ */ new Map();\n const externalRoutesById = /* @__PURE__ */ new Map();\n for (const plugin of plugins) {\n for (const [name, ref] of Object.entries(plugin.routes ?? {})) {\n const refId = `${plugin.getId()}.${name}`;\n if (routesById.has(refId)) {\n throw new Error(`Unexpected duplicate route '${refId}'`);\n }\n routesById.set(refId, ref);\n }\n for (const [name, ref] of Object.entries(plugin.externalRoutes ?? {})) {\n const refId = `${plugin.getId()}.${name}`;\n if (externalRoutesById.has(refId)) {\n throw new Error(`Unexpected duplicate external route '${refId}'`);\n }\n externalRoutesById.set(refId, ref);\n }\n }\n return { routes: routesById, externalRoutes: externalRoutesById };\n}\nfunction resolveRouteBindings(bindRoutes, config, plugins) {\n const routesById = collectRouteIds(plugins);\n const result = /* @__PURE__ */ new Map();\n const disabledExternalRefs = /* @__PURE__ */ new Set();\n if (bindRoutes) {\n const bind = (externalRoutes, targetRoutes) => {\n for (const [key, value] of Object.entries(targetRoutes)) {\n const externalRoute = externalRoutes[key];\n if (!externalRoute) {\n throw new Error(`Key ${key} is not an existing external route`);\n }\n if (!value && !externalRoute.optional) {\n throw new Error(\n `External route ${key} is required but was ${value === false ? \"disabled\" : \"not provided\"}`\n );\n }\n if (value) {\n result.set(externalRoute, value);\n } else if (value === false) {\n disabledExternalRefs.add(externalRoute);\n }\n }\n };\n bindRoutes({ bind });\n }\n const bindings = config.getOptionalConfig(\"app.routes.bindings\")?.get();\n if (bindings) {\n for (const [externalRefId, targetRefId] of Object.entries(bindings)) {\n if (!isValidTargetRefId(targetRefId)) {\n throw new Error(\n `Invalid config at app.routes.bindings['${externalRefId}'], value must be a non-empty string or false`\n );\n }\n const externalRef = routesById.externalRoutes.get(externalRefId);\n if (!externalRef) {\n throw new Error(\n `Invalid config at app.routes.bindings, '${externalRefId}' is not a valid external route`\n );\n }\n if (result.has(externalRef) || disabledExternalRefs.has(externalRef)) {\n continue;\n }\n if (targetRefId === false) {\n disabledExternalRefs.add(externalRef);\n } else {\n const targetRef = routesById.routes.get(targetRefId);\n if (!targetRef) {\n throw new Error(\n `Invalid config at app.routes.bindings['${externalRefId}'], '${targetRefId}' is not a valid route`\n );\n }\n result.set(externalRef, targetRef);\n }\n }\n }\n for (const externalRef of routesById.externalRoutes.values()) {\n if (!result.has(externalRef) && !disabledExternalRefs.has(externalRef)) {\n const defaultRefId = \"getDefaultTarget\" in externalRef ? externalRef.getDefaultTarget() : void 0;\n if (defaultRefId) {\n const defaultRef = routesById.routes.get(defaultRefId);\n if (defaultRef) {\n result.set(externalRef, defaultRef);\n }\n }\n }\n }\n return result;\n}\nfunction isValidTargetRefId(value) {\n if (value === false) {\n return true;\n }\n if (typeof value === \"string\" && value) {\n return true;\n }\n return false;\n}\n\nexport { collectRouteIds, resolveRouteBindings };\n//# sourceMappingURL=resolveRouteBindings.esm.js.map\n","import { BehaviorSubject } from '../../../lib/subjects.esm.js';\nimport '@backstage/core-plugin-api';\n\nconst STORAGE_KEY = \"language\";\nconst DEFAULT_LANGUAGE = \"en\";\nclass AppLanguageSelector {\n static create(options) {\n const languages = options?.availableLanguages ?? [DEFAULT_LANGUAGE];\n if (languages.length !== new Set(languages).size) {\n throw new Error(\n `Supported languages may not contain duplicates, got '${languages.join(\n \"', '\"\n )}'`\n );\n }\n const initialLanguage = options?.defaultLanguage ?? DEFAULT_LANGUAGE;\n if (!languages.includes(initialLanguage)) {\n throw new Error(\n `Initial language must be one of the supported languages, got '${initialLanguage}'`\n );\n }\n return new AppLanguageSelector(languages, initialLanguage);\n }\n static createWithStorage(options) {\n const selector = AppLanguageSelector.create(options);\n if (!window.localStorage) {\n return selector;\n }\n const storedLanguage = window.localStorage.getItem(STORAGE_KEY);\n const { languages } = selector.getAvailableLanguages();\n if (storedLanguage && languages.includes(storedLanguage)) {\n selector.setLanguage(storedLanguage);\n }\n selector.language$().subscribe(({ language }) => {\n if (language !== window.localStorage.getItem(STORAGE_KEY)) {\n window.localStorage.setItem(STORAGE_KEY, language);\n }\n });\n window.addEventListener(\"storage\", (event) => {\n if (event.key === STORAGE_KEY) {\n const language = localStorage.getItem(STORAGE_KEY) ?? void 0;\n if (language) {\n selector.setLanguage(language);\n }\n }\n });\n return selector;\n }\n #languages;\n #language;\n #subject;\n constructor(languages, initialLanguage) {\n this.#languages = languages;\n this.#language = initialLanguage;\n this.#subject = new BehaviorSubject({\n language: this.#language\n });\n }\n getAvailableLanguages() {\n return { languages: this.#languages.slice() };\n }\n setLanguage(language) {\n const lng = language ?? DEFAULT_LANGUAGE;\n if (lng === this.#language) {\n return;\n }\n if (lng && !this.#languages.includes(lng)) {\n throw new Error(\n `Failed to change language to '${lng}', available languages are '${this.#languages.join(\n \"', '\"\n )}'`\n );\n }\n this.#language = lng;\n this.#subject.next({ language: lng });\n }\n getLanguage() {\n return { language: this.#language };\n }\n language$() {\n return this.#subject;\n }\n}\n\nexport { AppLanguageSelector, DEFAULT_LANGUAGE };\n//# sourceMappingURL=AppLanguageSelector.esm.js.map\n","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _toArray from '@babel/runtime/helpers/esm/toArray';\n\nfunction ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Logger);\n this.init(concreteLogger, options);\n }\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread$6(_objectSpread$6({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }), this.options));\n }\n }, {\n key: \"clone\",\n value: function clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n }]);\n return Logger;\n}();\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n this.observers = {};\n }\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n '/': '&#x2F;'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && typeof window.navigator.userAgentData === 'undefined' && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\nvar chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n var possibleChars = chars.filter(function (c) {\n return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;\n });\n if (possibleChars.length === 0) return true;\n var r = new RegExp(\"(\".concat(possibleChars.map(function (c) {\n return c === '?' ? '\\\\?' : c;\n }).join('|'), \")\"));\n var matched = !r.test(key);\n if (!matched) {\n var ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n}\nfunction deepFind(obj, path) {\n var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n var paths = path.split(keySeparator);\n var current = obj;\n for (var i = 0; i < paths.length; ++i) {\n if (!current) return undefined;\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n if (current[paths[i]] === undefined) {\n var j = 2;\n var p = paths.slice(i, i + j).join(keySeparator);\n var mix = current[p];\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n if (mix === undefined) return undefined;\n if (mix === null) return null;\n if (path.endsWith(p)) {\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n }\n var joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n current = current[paths[i]];\n }\n return current;\n}\n\nfunction ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$5(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n var _super = _createSuper$3(ResourceStore);\n function ResourceStore(data) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n _classCallCheck(this, ResourceStore);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n _this.data = data || {};\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n if (_this.options.ignoreJSONStructure === undefined) {\n _this.options.ignoreJSONStructure = true;\n }\n return _this;\n }\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n var result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread$5(_objectSpread$5({}, pack), resources);\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread$5(_objectSpread$5({}, {}), this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"hasLanguageSomeTranslations\",\n value: function hasLanguageSomeTranslations(lng) {\n var data = this.getDataByLanguage(lng);\n var n = data && Object.keys(data) || [];\n return !!n.find(function (v) {\n return data[v] && Object.keys(data[v]).length > 0;\n });\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$4(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar checkedLoadedFor = {};\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n var _super = _createSuper$2(Translator);\n function Translator(services) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Translator);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key === undefined || key === null) {\n return false;\n }\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS || [];\n var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n var m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (_typeof(options) === 'object') options = _objectSpread$4({}, options);\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n return {\n res: \"\".concat(namespace).concat(nsSeparator).concat(key),\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace\n };\n }\n return \"\".concat(namespace).concat(nsSeparator).concat(key);\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace\n };\n }\n return key;\n }\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n var r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$4(_objectSpread$4({}, options), {}, {\n ns: namespaces\n })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n if (returnDetails) {\n resolved.res = r;\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread$4(_objectSpread$4({}, options), {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread$4(_objectSpread$4({}, options), {}, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n var send = function send(l, k, specificDefaultValue) {\n var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n _this2.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language, options).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? \"\".concat(namespace, \":\").concat(key) : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n if (returnDetails) {\n resolved.res = res;\n return resolved;\n }\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, _objectSpread$4(_objectSpread$4({}, this.options.interpolation.defaultVariables), options), resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread$4(_objectSpread$4({}, options), {\n interpolation: _objectSpread$4(_objectSpread$4({}, this.options.interpolation), options.interpolation)\n }));\n var skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n var nestBef;\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread$4(_objectSpread$4({}, this.options.interpolation.defaultVariables), data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (!options.lng && this.options.compatibilityAPI !== 'v1' && resolved && resolved.res) options.lng = resolved.usedLng;\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n return null;\n }\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$4({\n i18nResolved: resolved\n }, options) : options, this);\n }\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n var extracted = _this4.extractFromKey(k, options);\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();\n var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKeys = [key];\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);\n var zeroSuffix = \"\".concat(_this4.options.pluralSeparator, \"zero\");\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n var contextKey = \"\".concat(key).concat(_this4.options.contextSeparator).concat(options.context);\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n var possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n }]);\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n return p.join('-');\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n var cleanedLng = _this.formatLanguageCode(code);\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n var lngOnly = _this.getLanguagePartFromCode(code);\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n var addCode = function addCode(c) {\n if (!c) return;\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nvar deprecatedJsonVersions = ['v1', 'v2', 'v3'];\nvar suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, PluralResolver);\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === 'v4') && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n this.rules = createRules();\n }\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(code, {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (_unused) {\n return;\n }\n }\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(function (suffix) {\n return \"\".concat(key).concat(suffix);\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n if (!rule) {\n return [];\n }\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort(function (pluralCategory1, pluralCategory2) {\n return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];\n }).map(function (pluralCategory) {\n return \"\".concat(_this.options.prepend).concat(pluralCategory);\n });\n }\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number, options);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var rule = this.getRule(code, options);\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return \"\".concat(this.options.prepend).concat(rule.select(count));\n }\n return this.getSuffixRetroCompatible(rule, count);\n }\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }, {\n key: \"getSuffixRetroCompatible\",\n value: function getSuffixRetroCompatible(rule, count) {\n var _this2 = this;\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n }, {\n key: \"shouldUseIntlApi\",\n value: function shouldUseIntlApi() {\n return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);\n }\n }]);\n return PluralResolver;\n}();\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction deepFindWithDefaults(data, defaultData, key) {\n var keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n var ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && typeof key === 'string') {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n}\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, Interpolator);\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n this.init(options);\n }\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = deepFindWithDefaults(data, defaultData, key, _this.options.keySeparator, _this.options.ignoreJSONStructure);\n return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: key\n })) : path;\n }\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(deepFindWithDefaults(data, defaultData, k, _this.options.keySeparator, _this.options.ignoreJSONStructure), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: k\n }));\n };\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n var matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(matchedVar, \" for interpolating \").concat(str));\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n var safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n var clonedOptions;\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n var matchedSingleQuotes = optionsString.match(/'/g);\n var matchedDoubleQuotes = optionsString.match(/\"/g);\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n delete clonedOptions.defaultValue;\n return key;\n }\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n clonedOptions = _objectSpread$3({}, options);\n clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== 'string' ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n var doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {\n interpolationkey: match[1].trim()\n }));\n }, value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n }]);\n return Interpolator;\n}();\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction parseFormatStr(formatStr) {\n var formatName = formatStr.toLowerCase().trim();\n var formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n var p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n var optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n var opts = optStr.split(';');\n opts.forEach(function (opt) {\n if (!opt) return;\n var _opt$split = opt.split(':'),\n _opt$split2 = _toArray(_opt$split),\n key = _opt$split2[0],\n rest = _opt$split2.slice(1);\n var val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n return {\n formatName: formatName,\n formatOptions: formatOptions\n };\n}\nfunction createCachedFormatter(fn) {\n var cache = {};\n return function invokeFormatter(val, lng, options) {\n var key = lng + JSON.stringify(options);\n var formatter = cache[key];\n if (!formatter) {\n formatter = fn(lng, options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n}\nvar Formatter = function () {\n function Formatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, Formatter);\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.NumberFormat(lng, _objectSpread$2({}, opt));\n return function (val) {\n return formatter.format(val);\n };\n }),\n currency: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.NumberFormat(lng, _objectSpread$2(_objectSpread$2({}, opt), {}, {\n style: 'currency'\n }));\n return function (val) {\n return formatter.format(val);\n };\n }),\n datetime: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.DateTimeFormat(lng, _objectSpread$2({}, opt));\n return function (val) {\n return formatter.format(val);\n };\n }),\n relativetime: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.RelativeTimeFormat(lng, _objectSpread$2({}, opt));\n return function (val) {\n return formatter.format(val, opt.range || 'day');\n };\n }),\n list: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.ListFormat(lng, _objectSpread$2({}, opt));\n return function (val) {\n return formatter.format(val);\n };\n })\n };\n this.init(options);\n }\n _createClass(Formatter, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n }, {\n key: \"add\",\n value: function add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n }, {\n key: \"addCached\",\n value: function addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n }, {\n key: \"format\",\n value: function format(value, _format, lng) {\n var _this = this;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var formats = _format.split(this.formatSeparator);\n var result = formats.reduce(function (mem, f) {\n var _parseFormatStr = parseFormatStr(f),\n formatName = _parseFormatStr.formatName,\n formatOptions = _parseFormatStr.formatOptions;\n if (_this.formats[formatName]) {\n var formatted = mem;\n try {\n var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = _this.formats[formatName](mem, l, _objectSpread$2(_objectSpread$2(_objectSpread$2({}, formatOptions), options), valOptions));\n } catch (error) {\n _this.logger.warn(error);\n }\n return formatted;\n } else {\n _this.logger.warn(\"there was no format function for \".concat(formatName));\n }\n return mem;\n }, value);\n return result;\n }\n }]);\n return Formatter;\n}();\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n var _super = _createSuper$1(Connector);\n function Connector(backend, store, services) {\n var _this;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n _classCallCheck(this, Connector);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.waitingReads = [];\n _this.maxParallelReads = options.maxParallelReads || 10;\n _this.readingCalls = 0;\n _this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n _this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n _this.state = {};\n _this.queue = [];\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n return _this;\n }\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n var toLoad = {};\n var pending = {};\n var toLoadLanguages = {};\n var toLoadNamespaces = {};\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending: pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = {};\n var loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(function (n) {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng: lng,\n ns: ns,\n fcName: fcName,\n tried: tried,\n wait: wait,\n callback: callback\n });\n return;\n }\n this.readingCalls++;\n var resolver = function resolver(err, data) {\n _this3.readingCalls--;\n if (_this3.waitingReads.length > 0) {\n var next = _this3.waitingReads.shift();\n _this3.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < _this3.maxRetries) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n var fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n var r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(function (data) {\n return resolver(null, data);\n })[\"catch\"](resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n var clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : function () {};\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend && this.backend.create) {\n var opts = _objectSpread$1(_objectSpread$1({}, options), {}, {\n isUpdate: isUpdate\n });\n var fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n var r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(function (data) {\n return clb(null, data);\n })[\"catch\"](clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n}\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(function (mem) {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n var _super = _createSuper(I18n);\n function I18n() {\n var _this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n _classCallCheck(this, I18n);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n bindMemberFunctions(_assertThisInitialized(_this));\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n return _this;\n }\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n var defOpts = get();\n this.options = _objectSpread(_objectSpread(_objectSpread({}, defOpts), this.options), transformOptions(options));\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = _objectSpread(_objectSpread({}, defOpts.interpolation), this.options.interpolation);\n }\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n var formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this2.emit.apply(_this2, [event].concat(args));\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n return _this2;\n };\n });\n var deferred = defer();\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n _this2.emit('initialized', _this2.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n var append = function append(lng) {\n if (!lng) return;\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n this.services.backendConnector.load(toLoad, this.options.ns, function (e) {\n if (!e && !_this3.resolvedLanguage && _this3.language) _this3.setResolvedLanguage(_this3.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n }, {\n key: \"setResolvedLanguage\",\n value: function setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (var li = 0; li < this.languages.length; li++) {\n var lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n var setLngProps = function setLngProps(l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n _this4.resolvedLanguage = undefined;\n _this4.setResolvedLanguage(l);\n };\n var done = function done(err, l) {\n if (l) {\n setLngProps(l);\n _this4.translator.changeLanguage(l);\n _this4.isLanguageChangingTo = undefined;\n _this4.emit('languageChanged', l);\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n var setLng = function setLng(lngs) {\n if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!_this4.language) {\n setLngProps(l);\n }\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector && _this4.services.languageDetector.cacheUserLanguage) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns, keyPrefix) {\n var _this5 = this;\n var fixedT = function fixedT(key, opts) {\n var options;\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread({}, opts);\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n var keySeparator = _this5.options.keySeparator || '.';\n var resultKey;\n if (options.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(function (k) {\n return \"\".concat(options.keyPrefix).concat(keySeparator).concat(k);\n });\n } else {\n resultKey = options.keyPrefix ? \"\".concat(options.keyPrefix).concat(keySeparator).concat(key) : key;\n }\n return _this5.t(resultKey, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n var lng = options.lng || this.resolvedLanguage || this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n var deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n var languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var mergedOptions = _objectSpread(_objectSpread(_objectSpread({}, this.options), options), {\n isClone: true\n });\n var clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n }]);\n return I18n;\n}(EventEmitter);\n_defineProperty(I18n, \"createInstance\", function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n});\nvar instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nvar createInstance = instance.createInstance;\nvar dir = instance.dir;\nvar init = instance.init;\nvar loadResources = instance.loadResources;\nvar reloadResources = instance.reloadResources;\nvar use = instance.use;\nvar changeLanguage = instance.changeLanguage;\nvar getFixedT = instance.getFixedT;\nvar t = instance.t;\nvar exists = instance.exists;\nvar setDefaultNamespace = instance.setDefaultNamespace;\nvar hasLoadedNamespace = instance.hasLoadedNamespace;\nvar loadNamespaces = instance.loadNamespaces;\nvar loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","function toInternalTranslationRef(ref) {\n const r = ref;\n if (r.$$type !== \"@backstage/TranslationRef\") {\n throw new Error(`Invalid translation ref, bad type '${r.$$type}'`);\n }\n if (r.version !== \"v1\") {\n throw new Error(`Invalid translation ref, bad version '${r.version}'`);\n }\n return r;\n}\n\nexport { toInternalTranslationRef };\n//# sourceMappingURL=TranslationRef.esm.js.map\n","import { createInstance } from 'i18next';\nimport ObservableImpl from 'zen-observable';\nimport { toInternalTranslationResource } from '../../../core-plugin-api/src/translation/TranslationResource.esm.js';\nimport { toInternalTranslationRef } from '../../../core-plugin-api/src/translation/TranslationRef.esm.js';\nimport { DEFAULT_LANGUAGE } from '../AppLanguageApi/AppLanguageSelector.esm.js';\nimport { isValidElement, createElement, Fragment } from 'react';\n\nfunction removeNulls(messages) {\n return Object.fromEntries(\n Object.entries(messages).filter(\n (e) => e[1] !== null\n )\n );\n}\nclass ResourceLoader {\n constructor(onLoad) {\n this.onLoad = onLoad;\n }\n /** Loaded resources by loader key */\n #loaded = /* @__PURE__ */ new Set();\n /** Resource loading promises by loader key */\n #loading = /* @__PURE__ */ new Map();\n /** Loaders for each resource language */\n #loaders = /* @__PURE__ */ new Map();\n addTranslationResource(resource) {\n const internalResource = toInternalTranslationResource(resource);\n for (const entry of internalResource.resources) {\n const key = this.#getLoaderKey(entry.language, internalResource.id);\n if (!this.#loaders.has(key)) {\n this.#loaders.set(key, entry.loader);\n }\n }\n }\n #getLoaderKey(language, namespace) {\n return `${language}/${namespace}`;\n }\n needsLoading(language, namespace) {\n const key = this.#getLoaderKey(language, namespace);\n const loader = this.#loaders.get(key);\n if (!loader) {\n return false;\n }\n return !this.#loaded.has(key);\n }\n async load(language, namespace) {\n const key = this.#getLoaderKey(language, namespace);\n const loader = this.#loaders.get(key);\n if (!loader) {\n return;\n }\n if (this.#loaded.has(key)) {\n return;\n }\n const loading = this.#loading.get(key);\n if (loading) {\n await loading;\n return;\n }\n const load = loader().then(\n (result) => {\n this.onLoad({ language, namespace, messages: result.messages });\n this.#loaded.add(key);\n },\n (error) => {\n this.#loaded.add(key);\n throw error;\n }\n );\n this.#loading.set(key, load);\n await load;\n }\n}\nclass JsxInterpolator {\n #setFormatHook;\n #marker;\n #pattern;\n static fromI18n(i18n) {\n const interpolator = i18n.services.interpolator;\n const originalFormat = interpolator.format;\n let formatHook;\n interpolator.format = (value, format, lng, formatOpts) => {\n if (format) {\n return originalFormat(value, format, lng, formatOpts);\n }\n return formatHook?.(value, format, lng, formatOpts) ?? value;\n };\n return new JsxInterpolator(\n // Using a random marker to ensure it can't be misused\n Math.random().toString(36).substring(2, 8),\n (hook) => {\n formatHook = hook;\n }\n );\n }\n constructor(marker, setFormatHook) {\n this.#setFormatHook = setFormatHook;\n this.#marker = marker;\n this.#pattern = new RegExp(`\\\\$${marker}\\\\(([^)]+)\\\\)`);\n }\n wrapT(originalT) {\n return (key, options) => {\n let elementsMap = void 0;\n this.#setFormatHook((value) => {\n if (isValidElement(value)) {\n if (!elementsMap) {\n elementsMap = /* @__PURE__ */ new Map();\n }\n const elementKey = elementsMap.size.toString();\n elementsMap.set(elementKey, value);\n return `$${this.#marker}(${elementKey})`;\n }\n return value;\n });\n const result = originalT(key, options);\n if (!elementsMap) {\n return result;\n }\n const split = result.split(this.#pattern);\n return createElement(\n Fragment,\n null,\n ...split.map((part, index) => {\n if (index % 2 === 0) {\n return part;\n }\n return elementsMap?.get(part);\n }).filter(Boolean)\n );\n };\n }\n}\nclass I18nextTranslationApi {\n static create(options) {\n const { languages } = options.languageApi.getAvailableLanguages();\n const i18n = createInstance({\n fallbackLng: DEFAULT_LANGUAGE,\n supportedLngs: languages,\n interpolation: {\n escapeValue: false,\n // Used for the JsxInterpolator format hook\n alwaysFormat: true\n },\n ns: [],\n defaultNS: false,\n fallbackNS: false,\n // Disable resource loading on init, meaning i18n will be ready to use immediately\n initImmediate: false\n });\n i18n.init();\n if (!i18n.isInitialized) {\n throw new Error(\"i18next was unexpectedly not initialized\");\n }\n const interpolator = JsxInterpolator.fromI18n(i18n);\n const { language: initialLanguage } = options.languageApi.getLanguage();\n if (initialLanguage !== DEFAULT_LANGUAGE) {\n i18n.changeLanguage(initialLanguage);\n }\n const loader = new ResourceLoader((loaded) => {\n i18n.addResourceBundle(\n loaded.language,\n loaded.namespace,\n removeNulls(loaded.messages),\n false,\n // do not merge with existing translations\n true\n // overwrite translations\n );\n });\n const resources = options?.resources || [];\n for (let i = resources.length - 1; i >= 0; i--) {\n const resource = resources[i];\n if (resource.$$type === \"@backstage/TranslationResource\") {\n loader.addTranslationResource(resource);\n } else if (resource.$$type === \"@backstage/TranslationMessages\") {\n i18n.addResourceBundle(\n DEFAULT_LANGUAGE,\n resource.id,\n removeNulls(resource.messages),\n true,\n // merge with existing translations\n false\n // do not overwrite translations\n );\n }\n }\n const instance = new I18nextTranslationApi(\n i18n,\n loader,\n options.languageApi.getLanguage().language,\n interpolator\n );\n options.languageApi.language$().subscribe(({ language }) => {\n instance.#changeLanguage(language);\n });\n return instance;\n }\n #i18n;\n #loader;\n #language;\n #jsxInterpolator;\n /** Keep track of which refs we have registered default resources for */\n #registeredRefs = /* @__PURE__ */ new Set();\n /** Notify observers when language changes */\n #languageChangeListeners = /* @__PURE__ */ new Set();\n constructor(i18n, loader, language, jsxInterpolator) {\n this.#i18n = i18n;\n this.#loader = loader;\n this.#language = language;\n this.#jsxInterpolator = jsxInterpolator;\n }\n getTranslation(translationRef) {\n const internalRef = toInternalTranslationRef(translationRef);\n this.#registerDefaults(internalRef);\n return this.#createSnapshot(internalRef);\n }\n translation$(translationRef) {\n const internalRef = toInternalTranslationRef(translationRef);\n this.#registerDefaults(internalRef);\n return new ObservableImpl((subscriber) => {\n let loadTicket = {};\n const loadResource = () => {\n loadTicket = {};\n const ticket = loadTicket;\n this.#loader.load(this.#language, internalRef.id).then(\n () => {\n if (ticket === loadTicket) {\n const snapshot = this.#createSnapshot(internalRef);\n if (snapshot.ready) {\n subscriber.next(snapshot);\n }\n }\n },\n (error) => {\n if (ticket === loadTicket) {\n subscriber.error(Array.isArray(error) ? error[0] : error);\n }\n }\n );\n };\n const onChange = () => {\n const snapshot = this.#createSnapshot(internalRef);\n if (snapshot.ready) {\n subscriber.next(snapshot);\n } else {\n loadResource();\n }\n };\n if (this.#loader.needsLoading(this.#language, internalRef.id)) {\n loadResource();\n }\n this.#languageChangeListeners.add(onChange);\n return () => {\n this.#languageChangeListeners.delete(onChange);\n };\n });\n }\n #changeLanguage(language) {\n if (this.#language !== language) {\n this.#language = language;\n this.#i18n.changeLanguage(language);\n this.#languageChangeListeners.forEach((listener) => listener());\n }\n }\n #createSnapshot(internalRef) {\n if (this.#loader.needsLoading(this.#language, internalRef.id)) {\n return { ready: false };\n }\n const unwrappedT = this.#i18n.getFixedT(null, internalRef.id);\n const t = this.#jsxInterpolator.wrapT(unwrappedT);\n return {\n ready: true,\n t\n };\n }\n #registerDefaults(internalRef) {\n if (this.#registeredRefs.has(internalRef.id)) {\n return;\n }\n this.#registeredRefs.add(internalRef.id);\n const defaultMessages = internalRef.getDefaultMessages();\n this.#i18n.addResourceBundle(\n DEFAULT_LANGUAGE,\n internalRef.id,\n defaultMessages,\n true,\n // merge with existing translations\n false\n // do not overwrite translations\n );\n const defaultResource = internalRef.getDefaultResource();\n if (defaultResource) {\n this.#loader.addTranslationResource(defaultResource);\n }\n }\n}\n\nexport { I18nextTranslationApi, JsxInterpolator };\n//# sourceMappingURL=I18nextTranslationApi.esm.js.map\n","function toInternalTranslationResource(resource) {\n const r = resource;\n if (r.$$type !== \"@backstage/TranslationResource\") {\n throw new Error(`Invalid translation resource, bad type '${r.$$type}'`);\n }\n if (r.version !== \"v1\") {\n throw new Error(`Invalid translation resource, bad version '${r.version}'`);\n }\n return r;\n}\n\nexport { toInternalTranslationResource };\n//# sourceMappingURL=TranslationResource.esm.js.map\n","import { ConfigReader } from '@backstage/config';\n\nfunction createLocalBaseUrl(fullUrl) {\n const url = new URL(fullUrl);\n url.protocol = document.location.protocol;\n url.hostname = document.location.hostname;\n url.port = document.location.port;\n return url.toString().replace(/\\/$/, \"\");\n}\nfunction overrideBaseUrlConfigs(inputConfigs) {\n const urlConfigReader = ConfigReader.fromConfigs(inputConfigs);\n const appBaseUrl = urlConfigReader.getOptionalString(\"app.baseUrl\");\n const backendBaseUrl = urlConfigReader.getOptionalString(\"backend.baseUrl\");\n let configs = inputConfigs;\n let newBackendBaseUrl = void 0;\n let newAppBaseUrl = void 0;\n if (appBaseUrl && backendBaseUrl) {\n const appOrigin = new URL(appBaseUrl).origin;\n const backendOrigin = new URL(backendBaseUrl).origin;\n if (appOrigin === backendOrigin) {\n const maybeNewBackendBaseUrl = createLocalBaseUrl(backendBaseUrl);\n if (backendBaseUrl !== maybeNewBackendBaseUrl) {\n newBackendBaseUrl = maybeNewBackendBaseUrl;\n }\n }\n }\n if (appBaseUrl) {\n const maybeNewAppBaseUrl = createLocalBaseUrl(appBaseUrl);\n if (appBaseUrl !== maybeNewAppBaseUrl) {\n newAppBaseUrl = maybeNewAppBaseUrl;\n }\n }\n if (newAppBaseUrl || newBackendBaseUrl) {\n configs = configs.concat({\n data: {\n app: newAppBaseUrl && {\n baseUrl: newAppBaseUrl\n },\n backend: newBackendBaseUrl && {\n baseUrl: newBackendBaseUrl\n }\n },\n context: \"relative-resolver\"\n });\n }\n return configs;\n}\n\nexport { overrideBaseUrlConfigs };\n//# sourceMappingURL=overrideBaseUrlConfigs.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { useRef, useMemo, Suspense } from 'react';\nimport useAsync from 'react-use/esm/useAsync';\nimport { ApiProvider } from '../apis/system/ApiProvider.esm.js';\nimport { ApiResolver } from '../apis/system/ApiResolver.esm.js';\nimport { ApiFactoryRegistry } from '../apis/system/ApiFactoryRegistry.esm.js';\nimport 'zen-observable';\nimport { appThemeApiRef, configApiRef, identityApiRef, featureFlagsApiRef, errorApiRef, fetchApiRef, discoveryApiRef } from '@backstage/core-plugin-api';\nimport '../apis/implementations/auth/saml/types.esm.js';\nimport { AppThemeSelector } from '../apis/implementations/AppThemeApi/AppThemeSelector.esm.js';\nimport { ConfigReader } from '@backstage/config';\nimport { LocalStorageFeatureFlags } from '../apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.esm.js';\nimport { appLanguageApiRef, translationApiRef } from '@backstage/core-plugin-api/alpha';\nimport { traverseElementTree, childDiscoverer, routeElementDiscoverer } from '../extensions/traversal.esm.js';\nimport { pluginCollector } from '../plugins/collectors.esm.js';\nimport { featureFlagCollector, routingV1Collector, routingV2Collector } from '../routing/collectors.esm.js';\nimport { RoutingProvider } from '../routing/RoutingProvider.esm.js';\nimport { validateRouteParameters, validateRouteBindings } from '../routing/validation.esm.js';\nimport { AppContextProvider } from './AppContext.esm.js';\nimport { AppIdentityProxy } from '../apis/implementations/IdentityApi/AppIdentityProxy.esm.js';\nimport { AppThemeProvider } from './AppThemeProvider.esm.js';\nimport { defaultConfigLoader } from './defaultConfigLoader.esm.js';\nimport { ApiRegistry } from '../apis/system/ApiRegistry.esm.js';\nimport { resolveRouteBindings } from './resolveRouteBindings.esm.js';\nimport { isReactRouterBeta } from './isReactRouterBeta.esm.js';\nimport { InternalAppContext } from './InternalAppContext.esm.js';\nimport { AppRouter, getBasePath } from './AppRouter.esm.js';\nimport { AppLanguageSelector } from '../apis/implementations/AppLanguageApi/AppLanguageSelector.esm.js';\nimport { I18nextTranslationApi } from '../apis/implementations/TranslationApi/I18nextTranslationApi.esm.js';\nimport { overrideBaseUrlConfigs } from './overrideBaseUrlConfigs.esm.js';\nimport { isProtectedApp } from './isProtectedApp.esm.js';\n\nfunction useConfigLoader(configLoader, components, appThemeApi) {\n const hasConfig = Boolean(configLoader);\n const config = useAsync(configLoader || (() => Promise.resolve([])));\n let noConfigNode = void 0;\n if (hasConfig && config.loading) {\n const { Progress } = components;\n noConfigNode = /* @__PURE__ */ jsx(Progress, {});\n } else if (config.error) {\n const { BootErrorPage } = components;\n noConfigNode = /* @__PURE__ */ jsx(BootErrorPage, { step: \"load-config\", error: config.error });\n }\n const { ThemeProvider = AppThemeProvider } = components;\n if (noConfigNode) {\n return {\n node: /* @__PURE__ */ jsx(ApiProvider, { apis: ApiRegistry.with(appThemeApiRef, appThemeApi), children: /* @__PURE__ */ jsx(ThemeProvider, { children: noConfigNode }) })\n };\n }\n const configReader = ConfigReader.fromConfigs(\n config.value?.length ? overrideBaseUrlConfigs(config.value) : []\n );\n return { api: configReader };\n}\nclass AppContextImpl {\n constructor(app) {\n this.app = app;\n }\n getPlugins() {\n return this.app.getPlugins();\n }\n getSystemIcon(key) {\n return this.app.getSystemIcon(key);\n }\n getSystemIcons() {\n return this.app.getSystemIcons();\n }\n getComponents() {\n return this.app.getComponents();\n }\n}\nclass AppManager {\n apiHolder;\n configApi;\n apis;\n icons;\n plugins;\n featureFlags;\n components;\n themes;\n configLoader;\n defaultApis;\n bindRoutes;\n appLanguageApi;\n translationResources;\n appIdentityProxy = new AppIdentityProxy();\n apiFactoryRegistry;\n constructor(options) {\n this.apis = options.apis ?? [];\n this.icons = options.icons;\n this.plugins = new Set(options.plugins ?? []);\n this.featureFlags = options.featureFlags ?? [];\n this.components = options.components;\n this.themes = options.themes;\n this.configLoader = options.configLoader ?? defaultConfigLoader;\n this.defaultApis = options.defaultApis ?? [];\n this.bindRoutes = options.bindRoutes;\n this.apiFactoryRegistry = new ApiFactoryRegistry();\n this.appLanguageApi = AppLanguageSelector.createWithStorage({\n defaultLanguage: options.__experimentalTranslations?.defaultLanguage,\n availableLanguages: options.__experimentalTranslations?.availableLanguages\n });\n this.translationResources = options.__experimentalTranslations?.resources ?? [];\n }\n getPlugins() {\n return Array.from(this.plugins);\n }\n getSystemIcon(key) {\n return this.icons[key];\n }\n getSystemIcons() {\n return this.icons;\n }\n getComponents() {\n return this.components;\n }\n createRoot(element) {\n const AppProvider = this.getProvider();\n const AppRoot = () => {\n return /* @__PURE__ */ jsx(AppProvider, { children: element });\n };\n return AppRoot;\n }\n #getProviderCalled = false;\n getProvider() {\n if (this.#getProviderCalled) {\n throw new Error(\n \"app.getProvider() or app.createRoot() has already been called, and can only be called once\"\n );\n }\n this.#getProviderCalled = true;\n const appContext = new AppContextImpl(this);\n let routeBindings;\n let routeValidationError = void 0;\n const Provider = ({ children }) => {\n const needsFeatureFlagRegistrationRef = useRef(true);\n const appThemeApi = useMemo(\n () => AppThemeSelector.createWithStorage(this.themes),\n []\n );\n const { routing, featureFlags } = useMemo(() => {\n const usesReactRouterBeta = isReactRouterBeta();\n if (usesReactRouterBeta) {\n console.warn(`\nDEPRECATION WARNING: React Router Beta is deprecated and support for it will be removed in a future release.\n Please migrate to use React Router v6 stable.\n See https://backstage.io/docs/tutorials/react-router-stable-migration\n`);\n }\n const result = traverseElementTree({\n root: children,\n discoverers: [childDiscoverer, routeElementDiscoverer],\n collectors: {\n routing: usesReactRouterBeta ? routingV1Collector : routingV2Collector,\n collectedPlugins: pluginCollector,\n featureFlags: featureFlagCollector\n }\n });\n result.collectedPlugins.forEach((plugin) => this.plugins.add(plugin));\n this.verifyPlugins(this.plugins);\n this.getApiHolder();\n return result;\n }, [children]);\n const loadedConfig = useConfigLoader(\n this.configLoader,\n this.components,\n appThemeApi\n );\n const hasConfigApi = \"api\" in loadedConfig;\n if (hasConfigApi) {\n const { api } = loadedConfig;\n this.configApi = api;\n }\n if (\"node\" in loadedConfig) {\n return loadedConfig.node;\n }\n if (routeValidationError) {\n throw routeValidationError;\n } else if (!routeBindings) {\n try {\n routeBindings = resolveRouteBindings(\n this.bindRoutes,\n loadedConfig.api,\n this.plugins\n );\n validateRouteParameters(routing.paths, routing.parents);\n validateRouteBindings(routeBindings, this.plugins);\n } catch (error) {\n routeValidationError = error;\n throw error;\n }\n }\n if (hasConfigApi && needsFeatureFlagRegistrationRef.current) {\n needsFeatureFlagRegistrationRef.current = false;\n const featureFlagsApi = this.getApiHolder().get(featureFlagsApiRef);\n if (featureFlagsApi) {\n for (const flag of this.featureFlags) {\n featureFlagsApi.registerFlag({\n ...flag,\n pluginId: \"\"\n });\n }\n for (const plugin of this.plugins.values()) {\n if (\"getFeatureFlags\" in plugin) {\n for (const flag of plugin.getFeatureFlags()) {\n featureFlagsApi.registerFlag({\n name: flag.name,\n pluginId: plugin.getId()\n });\n }\n } else {\n for (const output of plugin.output()) {\n if (output.type === \"feature-flag\") {\n featureFlagsApi.registerFlag({\n name: output.name,\n pluginId: plugin.getId()\n });\n }\n }\n }\n }\n const registeredFlags = featureFlagsApi.getRegisteredFlags();\n const flagNames = new Set(registeredFlags.map((f) => f.name));\n for (const name of featureFlags) {\n if (!flagNames.has(name)) {\n featureFlagsApi.registerFlag({ name, pluginId: \"\" });\n }\n }\n }\n }\n const { ThemeProvider = AppThemeProvider, Progress } = this.components;\n const apis = this.getApiHolder();\n if (isProtectedApp()) {\n const errorApi = apis.get(errorApiRef);\n const fetchApi = apis.get(fetchApiRef);\n const discoveryApi = apis.get(discoveryApiRef);\n if (!errorApi || !fetchApi || !discoveryApi) {\n throw new Error(\n \"App is running in protected mode but missing required APIs\"\n );\n }\n this.appIdentityProxy.enableCookieAuth({\n errorApi,\n fetchApi,\n discoveryApi\n });\n }\n return /* @__PURE__ */ jsx(ApiProvider, { apis, children: /* @__PURE__ */ jsx(AppContextProvider, { appContext, children: /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(\n RoutingProvider,\n {\n routePaths: routing.paths,\n routeParents: routing.parents,\n routeObjects: routing.objects,\n routeBindings,\n basePath: getBasePath(loadedConfig.api),\n children: /* @__PURE__ */ jsx(\n InternalAppContext.Provider,\n {\n value: {\n routeObjects: routing.objects,\n appIdentityProxy: this.appIdentityProxy\n },\n children: /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(Progress, {}), children })\n }\n )\n }\n ) }) }) });\n };\n return Provider;\n }\n getRouter() {\n return AppRouter;\n }\n getApiHolder() {\n if (this.apiHolder) {\n for (const plugin of this.plugins) {\n for (const factory of plugin.getApis()) {\n if (!this.apiFactoryRegistry.get(factory.api)) {\n this.apiFactoryRegistry.register(\"default\", factory);\n }\n }\n }\n ApiResolver.validateFactories(\n this.apiFactoryRegistry,\n this.apiFactoryRegistry.getAllApis()\n );\n return this.apiHolder;\n }\n this.apiFactoryRegistry.register(\"static\", {\n api: appThemeApiRef,\n deps: {},\n factory: () => AppThemeSelector.createWithStorage(this.themes)\n });\n this.apiFactoryRegistry.register(\"static\", {\n api: configApiRef,\n deps: {},\n factory: () => {\n if (!this.configApi) {\n throw new Error(\n \"Tried to access config API before config was loaded\"\n );\n }\n return this.configApi;\n }\n });\n this.apiFactoryRegistry.register(\"static\", {\n api: identityApiRef,\n deps: {},\n factory: () => this.appIdentityProxy\n });\n this.apiFactoryRegistry.register(\"static\", {\n api: appLanguageApiRef,\n deps: {},\n factory: () => this.appLanguageApi\n });\n this.apiFactoryRegistry.register(\"default\", {\n api: translationApiRef,\n deps: { languageApi: appLanguageApiRef },\n factory: ({ languageApi }) => I18nextTranslationApi.create({\n languageApi,\n resources: this.translationResources\n })\n });\n this.apiFactoryRegistry.register(\"default\", {\n api: featureFlagsApiRef,\n deps: {},\n factory: () => new LocalStorageFeatureFlags()\n });\n for (const factory of this.defaultApis) {\n this.apiFactoryRegistry.register(\"default\", factory);\n }\n for (const plugin of this.plugins) {\n for (const factory of plugin.getApis()) {\n if (!this.apiFactoryRegistry.register(\"default\", factory)) {\n throw new Error(\n `Plugin ${plugin.getId()} tried to register duplicate or forbidden API factory for ${factory.api}`\n );\n }\n }\n }\n for (const factory of this.apis) {\n if (!this.apiFactoryRegistry.register(\"app\", factory)) {\n throw new Error(\n `Duplicate or forbidden API factory for ${factory.api} in app`\n );\n }\n }\n ApiResolver.validateFactories(\n this.apiFactoryRegistry,\n this.apiFactoryRegistry.getAllApis()\n );\n this.apiHolder = new ApiResolver(this.apiFactoryRegistry);\n return this.apiHolder;\n }\n verifyPlugins(plugins) {\n const pluginIds = /* @__PURE__ */ new Set();\n for (const plugin of plugins) {\n const id = plugin.getId();\n if (pluginIds.has(id)) {\n throw new Error(`Duplicate plugin found '${id}'`);\n }\n pluginIds.add(id);\n }\n }\n}\n\nexport { AppManager };\n//# sourceMappingURL=AppManager.esm.js.map\n","import { joinPaths } from './helpers.esm.js';\n\nfunction validateRouteParameters(routePaths, routeParents) {\n const notLeafRoutes = new Set(routeParents.values());\n notLeafRoutes.delete(void 0);\n for (const route of routeParents.keys()) {\n if (notLeafRoutes.has(route)) {\n continue;\n }\n let currentRouteRef = route;\n let fullPath = \"\";\n while (currentRouteRef) {\n const path = routePaths.get(currentRouteRef);\n if (path === void 0) {\n throw new Error(`No path for ${currentRouteRef}`);\n }\n fullPath = joinPaths(path, fullPath);\n currentRouteRef = routeParents.get(currentRouteRef);\n }\n const params = fullPath.match(/:(\\w+)/g);\n if (params) {\n for (let j = 0; j < params.length; j++) {\n for (let i = j + 1; i < params.length; i++) {\n if (params[i] === params[j]) {\n throw new Error(\n `Parameter ${params[i]} is duplicated in path ${fullPath}`\n );\n }\n }\n }\n }\n }\n}\nfunction validateRouteBindings(routeBindings, plugins) {\n for (const plugin of plugins) {\n if (!plugin.externalRoutes) {\n continue;\n }\n for (const [name, externalRouteRef] of Object.entries(\n plugin.externalRoutes\n )) {\n if (externalRouteRef.optional) {\n continue;\n }\n if (!routeBindings.has(externalRouteRef)) {\n throw new Error(\n `External route '${name}' of the '${plugin.getId()}' plugin must be bound to a target route. See https://backstage.io/link?bind-routes for details.`\n );\n }\n }\n }\n}\n\nexport { validateRouteBindings, validateRouteParameters };\n//# sourceMappingURL=validation.esm.js.map\n","function isProtectedApp() {\n const element = document.querySelector('meta[name=\"backstage-app-mode\"]');\n const appMode = element?.getAttribute(\"content\") ?? \"public\";\n return appMode === \"protected\";\n}\n\nexport { isProtectedApp };\n//# sourceMappingURL=isProtectedApp.esm.js.map\n","import { AppManager } from './AppManager.esm.js';\n\nfunction createSpecializedApp(options) {\n return new AppManager(options);\n}\n\nexport { createSpecializedApp };\n//# sourceMappingURL=createSpecializedApp.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { useMemo } from 'react';\nimport { useRoutes } from 'react-router-dom';\nimport { attachComponentData, useApp, useElementFilter } from '@backstage/core-plugin-api';\nimport { isReactRouterBeta } from '../app/isReactRouterBeta.esm.js';\n\nlet warned = false;\nconst FlatRoutes = (props) => {\n const app = useApp();\n const { NotFoundErrorPage } = app.getComponents();\n const isBeta = useMemo(() => isReactRouterBeta(), []);\n const routes = useElementFilter(\n props.children,\n (elements) => elements.getElements().flatMap((child) => {\n let path = child.props.path;\n if (path === \"\") {\n return [];\n }\n path = path?.replace(/\\/\\*$/, \"\") ?? \"/\";\n let element = isBeta ? child : child.props.element;\n if (!isBeta && !element) {\n element = child;\n if (!warned && process.env.NODE_ENV !== \"test\") {\n console.warn(\n \"DEPRECATION WARNING: All elements within <FlatRoutes> must be of type <Route> with an element prop. Existing usages of <Navigate key=[path] to=[to] /> should be replaced with <Route path=[path] element={<Navigate to=[to] />} />.\"\n );\n warned = true;\n }\n }\n return [\n {\n // Each route matches any sub route, except for the explicit root path\n path,\n element,\n children: child.props.children ? [\n // These are the children of each route, which we all add in under a catch-all\n // subroute in order to make them available to `useOutlet`\n {\n path: path === \"/\" ? \"/\" : \"*\",\n // The root path must require an exact match\n element: child.props.children\n }\n ] : void 0\n }\n ];\n }).sort((a, b) => b.path.localeCompare(a.path)).map((obj) => ({ ...obj, path: obj.path === \"/\" ? \"/\" : `${obj.path}/*` }))\n );\n const withNotFound = [\n ...routes,\n {\n path: \"*\",\n element: /* @__PURE__ */ jsx(NotFoundErrorPage, {})\n }\n ];\n return useRoutes(withNotFound);\n};\nattachComponentData(FlatRoutes, \"core.type\", \"FlatRoutes\");\n\nexport { FlatRoutes };\n//# sourceMappingURL=FlatRoutes.esm.js.map\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = require('./lib/Observable.js').Observable;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Observable = void 0;\n\n// === Symbol Support ===\nconst hasSymbol = name => Boolean(Symbol[name]);\n\nconst getSymbol = name => hasSymbol(name) ? Symbol[name] : '@@' + name;\n\nconst SymbolIterator = getSymbol('iterator');\nconst SymbolObservable = getSymbol('observable');\nconst SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n let value = obj[key];\n if (value == null) return undefined;\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n return value;\n}\n\nfunction getSpecies(obj) {\n let ctor = obj.constructor;\n\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n\n if (ctor === null) {\n ctor = undefined;\n }\n }\n\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(() => {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(() => {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n let cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n let unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n let queue = subscription._queue;\n\n if (!queue) {\n return;\n }\n\n subscription._queue = undefined;\n subscription._state = 'ready';\n\n for (let i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n let observer = subscription._observer;\n\n try {\n let m = getMethod(observer, type);\n\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({\n type,\n value\n });\n\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{\n type,\n value\n }];\n enqueue(() => flushSubscription(subscription));\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nclass Subscription {\n constructor(observer, subscriber) {\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n let self = this;\n let subscriptionObserver = {\n get closed() {\n return self._state === 'closed';\n },\n\n next(value) {\n onNotify(self, 'next', value);\n },\n\n error(value) {\n onNotify(self, 'error', value);\n },\n\n complete() {\n onNotify(self, 'complete');\n }\n\n };\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n get closed() {\n return this._state === 'closed';\n }\n\n unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n }\n\n}\n\nclass Observable {\n constructor(subscriber) {\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n this._subscriber = subscriber;\n }\n\n subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n\n return new Subscription(observer, this._subscriber);\n }\n\n forEach(fn) {\n return new Promise((resolve, reject) => {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n let subscription = this.subscribe({\n next(value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n\n error: reject,\n complete: resolve\n });\n });\n }\n\n map(fn) {\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n let C = getSpecies(this);\n return new C(observer => this.subscribe({\n next(value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n\n error(e) {\n observer.error(e);\n },\n\n complete() {\n observer.complete();\n }\n\n }));\n }\n\n filter(fn) {\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n let C = getSpecies(this);\n return new C(observer => this.subscribe({\n next(value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n\n error(e) {\n observer.error(e);\n },\n\n complete() {\n observer.complete();\n }\n\n }));\n }\n\n reduce(fn) {\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n let C = getSpecies(this);\n let hasSeed = arguments.length > 1;\n let hasValue = false;\n let seed = arguments[1];\n let acc = seed;\n return new C(observer => this.subscribe({\n next(value) {\n let first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n\n error(e) {\n observer.error(e);\n },\n\n complete() {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n observer.next(acc);\n observer.complete();\n }\n\n }));\n }\n\n async all() {\n let values = [];\n await this.forEach(value => values.push(value));\n return values;\n }\n\n concat(...sources) {\n let C = getSpecies(this);\n return new C(observer => {\n let subscription;\n let index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next(v) {\n observer.next(v);\n },\n\n error(e) {\n observer.error(e);\n },\n\n complete() {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n\n });\n }\n\n startNext(this);\n return () => {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n }\n\n flatMap(fn) {\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n let C = getSpecies(this);\n return new C(observer => {\n let subscriptions = [];\n let outer = this.subscribe({\n next(value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n let inner = C.from(value).subscribe({\n next(value) {\n observer.next(value);\n },\n\n error(e) {\n observer.error(e);\n },\n\n complete() {\n let i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n\n });\n subscriptions.push(inner);\n },\n\n error(e) {\n observer.error(e);\n },\n\n complete() {\n completeIfDone();\n }\n\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return () => {\n subscriptions.forEach(s => s.unsubscribe());\n outer.unsubscribe();\n };\n });\n }\n\n [SymbolObservable]() {\n return this;\n }\n\n static from(x) {\n let C = typeof this === 'function' ? this : Observable;\n if (x == null) throw new TypeError(x + ' is not an object');\n let method = getMethod(x, SymbolObservable);\n\n if (method) {\n let observable = method.call(x);\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n if (isObservable(observable) && observable.constructor === C) return observable;\n return new C(observer => observable.subscribe(observer));\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n\n if (method) {\n return new C(observer => {\n enqueue(() => {\n if (observer.closed) return;\n\n for (let item of method.call(x)) {\n observer.next(item);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(observer => {\n enqueue(() => {\n if (observer.closed) return;\n\n for (let i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n }\n\n static of(...items) {\n let C = typeof this === 'function' ? this : Observable;\n return new C(observer => {\n enqueue(() => {\n if (observer.closed) return;\n\n for (let i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n\n static get [SymbolSpecies]() {\n return this;\n }\n\n}\n\nexports.Observable = Observable;\nObject.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError\n },\n configurable: true\n});"],"names":["ApiAggregator","holders","constructor","this","get","apiRef","holder","api","ApiContext","createVersionedContext","ApiProvider","props","apis","children","parentHolder","useContext","atVersion","jsx","Provider","value","createVersionedValueMap","propTypes","isRequired","ApiResolver","factories","validateFactories","heap","allDeps","Set","length","shift","factory","dep","Object","values","deps","id","Error","has","add","push","Map","ref","load","loading","impl","includes","loadDeps","set","dependent","impls","key","hasOwnProperty","ScopePriority","ScopePriority2","ApiFactoryRegistry","register","scope","priority","existing","tuple","getAllApis","refs","openLoginPopup","options","Promise","resolve","reject","width","height","left","window","screen","top","origin","URL","url","popup","open","name","targetOrigin","closed","error","messageListener","event","source","data","type","authResult","message","response","done","intervalId","setInterval","errMessage","location","removeEventListener","clearInterval","addEventListener","warned","defaultJoinScopes","scopes","join","DefaultAuthConnector","discoveryApi","environment","provider","joinScopesFunc","authRequester","sessionTransform","enableExperimentalRedirectFlow","popupOptions","configApi","joinScopes","oauthRequestApi","console","warn","getOptionalBoolean","createAuthRequester","onAuthRequest","async","executeRedirect","showPopup","createSession","instantPopup","refreshSession","res","fetch","buildUrl","optional","headers","credentials","catch","ok","statusText","status","authInfo","json","removeSession","method","popupUrl","flow","size","fullscreen","payload","title","href","redirectUrl","path","query","baseUrl","getBaseUrl","queryString","buildQueryString","env","entries","map","encodeURIComponent","filter","Boolean","hasScopes","searched","searchFor","SessionScopeHelper","sessionExistsAndHasScope","session","sessionScopes","getExtendedScope","newScope","defaultScopes","PublishSubject","isClosed","terminatingError","observable","subscriber","complete","subscribers","delete","Symbol","next","forEach","subscribe","onNext","onError","onComplete","observer","BehaviorSubject","currentValue","SessionStateTracker","subject","SessionState","SignedOut","signedIn","setIsSignedIn","isSignedIn","SignedIn","sessionState$","RefreshingAuthSessionManager","connector","helper","sessionScopesFunc","sessionShouldRefreshFunc","stateTracker","refreshPromise","currentSession","sessionShouldRefresh","getSession","alreadyTriedToRefreshSession","refreshedSession","collapsedSessionRefresh","currentScopes","removeLocalSession","newSession","DEFAULT_PROVIDER","icon","OAuth2","createAuthConnector","authConnector","scopeTransform","x","backstageIdentity","providerInfo","idToken","accessToken","normalizeScopes","expiresAt","expiresInSeconds","Date","now","token","identity","create","sessionManager","min","Infinity","Math","getTime","signIn","getAccessToken","signOut","normalizedScopes","getIdToken","getBackstageIdentity","getProfile","profile","scopeList","Array","isArray","split","transformedScopes","GithubAuth","GitlabAuth","SCOPE_PREFIX","GoogleAuth","startsWith","OKTA_OIDC_SCOPES","OKTA_SCOPE_PREFIX","OktaAuth","DirectAuthConnector","email","StaticAuthSessionManager","setSession","AuthSessionStore","manager","storageKey","schema","saveSession","loadSession","localStorage","removeItem","sessionJson","getItem","JSON","parse","_key","__type","__value","e","log","setItem","stringify","from","samlSessionSchema","displayName","picture","userEntityRef","ownershipEntityRefs","SamlAuth","authSessionStore","MicrosoftAuth","oauth2","static","concat","MicrosoftGraphID","microsoftGraph","resourceForScopes","audiences","resourceForScope","aud","audience","groups","match","resourceURI","replace","OIDC_SCOPES","OneLoginAuth","BitbucketAuth","BitbucketServerAuth","AtlassianAuth","VMwareCloudAuth","OpenShiftAuth","AlertApiForwarder","post","alert","alert$","MultipleAnalyticsApi","actualApis","fromApis","captureEvent","analyticsApi","NoOpAnalyticsApi","_event","STORAGE_KEY","AppThemeSelector","themes","createWithStorage","selector","initialThemeId","setActiveThemeId","activeThemeId$","themeId","activeThemeId","getInstalledThemes","slice","getActiveThemeId","CONFIG_KEY_PART_PATTERN","isObject","cloneDeep","fromEntries","k","v","merge","into","fromObj","out","keys","val","typeOf","isNaN","errors","context","typeName","expected","ConfigReader","fallback","prefix","filteredKeys","notifiedFilteredKeys","fromConfigs","configs","reduce","previousReader","deprecatedKeys","reader","description","readValue","localKeys","fallbackKeys","getOptional","fullKey","fallbackValue","getConfig","getOptionalConfig","fallbackConfig","copy","TypeError","getConfigArray","getOptionalConfigArray","readConfigValue","index","obj","getNumber","getOptionalNumber","number","Number","isFinite","getBoolean","valueString","String","trim","test","getString","getOptionalString","getStringArray","getOptionalStringArray","validate","result","keyName","theValue","parts","part","badKey","ERROR_PREFIX","UrlPatternDiscovery","compile","pattern","urlStr","hash","search","endsWith","pluginId","FrontendHostDiscovery","endpoints","defaultEndpoint","fromConfig","config","pathPattern","flatMap","target","discovery","endpoint","ErrorAlerter","alertApi","errorApi","hidden","severity","error$","ErrorApiForwarder","UnhandledErrorForwarder","forward","errorContext","reason","validateFlagName","LocalStorageFeatureFlags","registeredFeatureFlags","flags","registerFlag","flag","getRegisteredFlags","isActive","FeatureFlagState","Active","save","clear","state","states","enabled","jsonStr","createFetchApi","baseImplementation","g","middleware","flat","reverse","m","apply","IdentityAuthInjectorFetchMiddleware","identityApi","allowUrl","headerName","headerValue","matcher","urlPrefixAllowlist","buildPrefixMatcher","getDiscoveryUrlPrefixes","buildMatcher","header","c","input","init","request","Request","getCredentials","prefixes","trimmedPrefixes","some","PluginProtocolResolverFetchMiddleware","hostname","pathname","username","password","substring","base","authority","protocol","host","right","a","FetchMiddlewares","resolvePluginProtocol","injectIdentityAuth","OAuthPendingRequests","requests","getCurrentPending","pending","acc","current","moreScopess","moreScopes","OAuthRequestManager","currentRequests","handlerCount","handler","scopeRequest","newRequests","makeAuthRequest","trigger","authRequest$","buckets","WebStorage","namespace","addStorageEventListener","bucketPath","webStorage","handleStorageChange","snapshot","presence","item","getKeyName","freeze","forBucket","notifyChanges","remove","observe$","hasSubscribed","messageKey","eventKey","trimmedKey","decodeURIComponent","subscription","InternalAppContext","createContext","isReactRouterBeta","createRoutesFromChildren","Route","element","TrackNavigation","attributes","analytics","useAnalytics","useEffect","RouteTracker","routeObjects","useLocation","params","routes","matches","matchRoutes","routeMatch","route","routeRefs","pop","routeObject","routeRef","plugin","plugins","extension","getId","_routeNodeType","getExtensionContext","AnalyticsContext","readBasePath","SignInPageWrapper","component","Component","appIdentityProxy","setIdentityApi","useState","basePath","useApi","configApiRef","setTarget","signOutTargetUrl","Fragment","onSignInSuccess","AppRouter","Router","RouterComponent","SignInPage","SignInPageComponent","useApp","getComponents","mountPath","internalAppContext","jsxs","Routes","basename","getUserId","getProfileInfo","attachComponentData","appLanguageApiRef","createApiRef","createCollector","accumulatorFactory","visit","accumulator","childDiscoverer","routeElementDiscoverer","pluginCollector","node","getComponentData","FeatureFlagged","featureFlagApi","featureFlagsApiRef","isEnabled","with","without","MATCH_ALL_ROUTE","caseSensitive","stringifyNode","anyNode","pluginSet","collectSubTree","Children","isValidElement","routingV2Collector","paths","parents","objects","parent","ctx","isElementAncestor","pathProp","mountPoint","parentChildren","elementProp","newObj","gatherPath","gatherRouteRef","others","mountPointPlugin","routingV1Collector","currentObj","currentParentRouteRef","sticky","currentCtxPath","routePath","featureFlagCollector","routeRefType","getOrCreateGlobalSingleton","isRouteRef","isSubRouteRef","joinPaths","normalized","RouteResolver","routePaths","routeParents","routeBindings","appBasePath","anyRouteRef","sourceLocation","targetRef","targetPath","subRoutePath","resolvedRoute","resolvedPath","resolveTargetRef","relativeSourceLocation","trimPath","refDiffList","matchIndex","targetSearchRef","findIndex","unshift","resolveBasePath","encodedParams","replaceAll","generatePath","RoutingContext","RoutingProvider","resolver","versionedValue","AppContext","AppContextProvider","appContext","mkError","thing","logDeprecation","AppIdentityProxy","waitForTarget","resolveTarget","targetOptions","then","enableCookieAuth","stopRefresh","fetchApi","timeout","stopped","firstError","errorBackoff","channel","BroadcastChannel","getDelay","margin","random","max","refresh","requestUrl","postMessage","action","toISOString","scheduleRefresh","onMessage","delayMs","clearTimeout","setTimeout","close","startCookieAuthRefresh","appBaseUrl","AppThemeProvider","appThemeApi","appThemeApiRef","appTheme","shouldPreferDark","selectedTheme","find","theme","darkTheme","variant","resolveTheme","useObservable","matchMedia","mediaQuery","useMemo","setPrefersDark","listener","addListener","removeListener","useShouldPreferDarkTheme","defaultConfigLoader","runtimeConfigJson","staticConfig","process","APP_CONFIG","configScripts","document","querySelectorAll","el","content","textContent","toLocaleUpperCase","windowAppConfig","__APP_CONFIG__","defaultConfigLoaderSync","ApiRegistryBuilder","build","ApiRegistry","builder","isValidTargetRefId","DEFAULT_LANGUAGE","AppLanguageSelector","languages","availableLanguages","initialLanguage","defaultLanguage","storedLanguage","getAvailableLanguages","setLanguage","language$","language","lng","getLanguage","ownKeys$6","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","_objectSpread$6","i","arguments","getOwnPropertyDescriptors","defineProperties","defineProperty","consoleLogger","args","output","baseLogger","Logger","concreteLogger","undefined","logger","debug","bool","_len","_len2","_key2","_len3","_key3","_len4","_key4","lvl","debugOnly","moduleName","EventEmitter","observers","events","_this","l","defer","rej","promise","makeString","getLastOfPath","Empty","cleanKey","indexOf","canNotTraverseDeeper","stack","prototype","call","setPath","newValue","_getLastOfPath","getPath","_getLastOfPath3","deepExtend","overwrite","prop","regexEscape","str","_entityMap","s","isIE10","navigator","userAgentData","userAgent","chars","deepFind","keySeparator","j","p","mix","joinedPath","ownKeys$5","_objectSpread$5","ResourceStore","_EventEmitter","Derived","hasNativeReflectConstruct","_super","Reflect","construct","sham","Proxy","valueOf","_isNativeReflectConstruct$3","Super","NewTarget","ns","defaultNS","ignoreJSONStructure","splice","silent","addNamespaces","emit","resources","toString","addResource","deep","pack","hasResourceBundle","removeNamespaces","getResource","compatibilityAPI","getDataByLanguage","postProcessor","processors","addPostProcessor","module","handle","translator","processor","ownKeys$4","_objectSpread$4","checkedLoadedFor","Translator","_isNativeReflectConstruct$2","services","t","interpolation","resolved","nsSeparator","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","r","RegExp","matched","ki","looksLikeObjectPath","interpolator","nestingRegexp","lastKey","_this2","overloadTranslationOptionHandler","returnDetails","_this$extractFromKey","extractFromKey","appendNamespaceToCIMode","toLowerCase","usedKey","exactUsedKey","usedLng","usedNS","resUsedKey","resExactUsedKey","resType","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","translate","extendTranslation","usedDefault","needsPluralHandling","count","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValue","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","_this3","defaultVariables","skipInterpolation","nestBef","skipOnVariables","nb","interpolate","na","nest","reset","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","_this4","extracted","fallbackNS","needsZeroSuffixLookup","ordinal","shouldUseIntlApi","needsContextHandling","codes","utils","hasLoadedNamespace","code","possibleKey","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","pluralSeparator","contextKey","contextSeparator","returnNull","returnEmptyString","resourceStore","option","capitalize","string","charAt","toUpperCase","LanguageUtil","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","cleanCode","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","isSupportedCode","lngOnly","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","n","deprecatedJsonVersions","suffixesOrder","zero","one","two","few","many","other","PluralResolver","rules","compatibilityJSON","Intl","PluralRules","numbers","plurals","_unused","rule","getRule","resolvedOptions","pluralCategories","sort","pluralCategory1","pluralCategory2","pluralCategory","prepend","select","getSuffixRetroCompatible","idx","noAbs","abs","simplifyPluralSuffix","returnSuffix","ownKeys$3","_objectSpread$3","deepFindWithDefaults","defaultData","getPathWithDefaults","Interpolator","format","escapeValue","iOpts","escape","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexp","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","interpolationkey","f","missingInterpolationHandler","regex","safeValue","todo","exec","matchedVar","temp","lastIndex","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","doReduce","elem","ownKeys$2","_objectSpread$2","createCachedFormatter","fn","cache","formatter","Formatter","formats","opt","NumberFormat","currency","style","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","range","list","ListFormat","_format","mem","_parseFormatStr","formatStr","formatName","formatOptions","optStr","_opt$split","_opt$split2","parseInt","parseFormatStr","formatted","valOptions","formatParams","locale","ownKeys$1","_objectSpread$1","Connector","_isNativeReflectConstruct$1","backend","store","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","queue","callback","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","pendingCount","loaded","err","addResourceBundle","q","_getLastOfPath2","removePending","loadedKeys","fcName","tried","wait","read","bind","queueLoad","loadOne","prepareLoading","_this5","isUpdate","clb","opts","initImmediate","preload","partialBundledLanguages","ret","tDescription","transformOptions","ownKeys","_objectSpread","noop","I18n","_isNativeReflectConstruct","inst","modules","external","getOwnPropertyNames","getPrototypeOf","isInitialized","isClone","defOpts","createClassOnDemand","ClassOrObject","lu","on","languageDetector","detection","_this2$store","_this2$store2","deferred","finish","initializedStoreOnce","changeLanguage","usedCallback","append","resolvedLanguage","setResolvedLanguage","li","lngInLngs","hasLanguageSomeTranslations","isLanguageChangingTo","setLngProps","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","detect","keyPrefix","fixedT","rest","resultKey","_this$translator","_this$translator2","exists","_this6","lastLng","loadNotPending","loadState","precheck","preResult","_this7","preloaded","newLngs","_this8","mergedOptions","clone","instance","createInstance","toInternalTranslationRef","$$type","version","removeNulls","messages","dir","reloadResources","use","getFixedT","setDefaultNamespace","loadNamespaces","loadLanguages","ResourceLoader","onLoad","addTranslationResource","resource","internalResource","toInternalTranslationResource","entry","loader","needsLoading","JsxInterpolator","fromI18n","i18n","originalFormat","formatHook","formatOpts","hook","marker","setFormatHook","wrapT","originalT","elementsMap","elementKey","createElement","I18nextTranslationApi","languageApi","jsxInterpolator","getTranslation","translationRef","internalRef","translation$","loadTicket","loadResource","ticket","ready","onChange","unwrappedT","defaultMessages","getDefaultMessages","defaultResource","getDefaultResource","createLocalBaseUrl","fullUrl","port","AppContextImpl","app","getPlugins","getSystemIcon","getSystemIcons","AppManager","apiHolder","icons","featureFlags","components","configLoader","defaultApis","bindRoutes","appLanguageApi","translationResources","apiFactoryRegistry","__experimentalTranslations","createRoot","AppProvider","getProvider","routeValidationError","needsFeatureFlagRegistrationRef","useRef","routing","usesReactRouterBeta","collectors","toArray","root","contexts","nextContexts","collector","discoverer","discoverers","traverseElementTree","collectedPlugins","verifyPlugins","getApiHolder","loadedConfig","hasConfig","useAsync","noConfigNode","Progress","BootErrorPage","step","ThemeProvider","inputConfigs","urlConfigReader","backendBaseUrl","newBackendBaseUrl","newAppBaseUrl","maybeNewBackendBaseUrl","maybeNewAppBaseUrl","overrideBaseUrlConfigs","useConfigLoader","hasConfigApi","routesById","externalRoutesById","refId","externalRoutes","collectRouteIds","disabledExternalRefs","targetRoutes","externalRoute","bindings","externalRefId","targetRefId","externalRef","defaultRefId","getDefaultTarget","defaultRef","resolveRouteBindings","notLeafRoutes","currentRouteRef","fullPath","validateRouteParameters","externalRouteRef","validateRouteBindings","featureFlagsApi","getFeatureFlags","registeredFlags","flagNames","querySelector","getAttribute","isProtectedApp","errorApiRef","fetchApiRef","discoveryApiRef","Suspense","getRouter","getApis","identityApiRef","pluginIds","createSpecializedApp","FlatRoutes","NotFoundErrorPage","isBeta","withNotFound","useElementFilter","elements","getElements","child","b","localeCompare","useRoutes","baseAssignValue","baseForOwn","baseIteratee","exports","iteratee","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","len","run","runClearTimeout","Item","array","nextTick","browser","argv","versions","once","off","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","Observable","hasSymbol","getSymbol","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","getSpecies","ctor","hostReportError","enqueue","cleanupSubscription","cleanup","_cleanup","unsubscribe","closeSubscription","_observer","_queue","_state","notifySubscription","onNotify","flushSubscription","Subscription","self","subscriptionObserver","_subscriber","C","hasSeed","hasValue","first","all","sources","startNext","subscriptions","outer","inner","completeIfDone","isObservable","of","items","symbol","configurable"],"sourceRoot":""}
1
+ {"version":3,"file":"static/4864.3cede332.chunk.js","mappings":"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","sources":["webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/system/ApiAggregator.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/system/ApiProvider.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/system/ApiResolver.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/system/ApiFactoryRegistry.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/loginPopup.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/AuthConnector/DefaultAuthConnector.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/AuthSessionManager/common.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/subjects.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/AuthSessionManager/SessionStateTracker.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/AuthSessionManager/RefreshingAuthSessionManager.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/oauth2/OAuth2.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/github/GithubAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/gitlab/GitlabAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/google/GoogleAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/okta/OktaAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/AuthConnector/DirectAuthConnector.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/AuthSessionManager/StaticAuthSessionManager.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/lib/AuthSessionManager/AuthSessionStore.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/saml/types.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/saml/SamlAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/microsoft/MicrosoftAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/onelogin/OneLoginAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/bitbucket/BitbucketAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/bitbucketServer/BitbucketServerAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/atlassian/AtlassianAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/vmwareCloud/VMwareCloudAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/auth/openshift/OpenShiftAuth.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/AlertApi/AlertApiForwarder.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/AnalyticsApi/MultipleAnalyticsApi.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/AnalyticsApi/NoOpAnalyticsApi.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/AppThemeApi/AppThemeSelector.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/config/dist/reader.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/DiscoveryApi/UrlPatternDiscovery.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/DiscoveryApi/FrontendHostDiscovery.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/ErrorApi/ErrorAlerter.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/ErrorApi/ErrorApiForwarder.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/ErrorApi/UnhandledErrorForwarder.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/FetchApi/createFetchApi.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/FetchApi/IdentityAuthInjectorFetchMiddleware.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/FetchApi/PluginProtocolResolverFetchMiddleware.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/FetchApi/FetchMiddlewares.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/OAuthRequestApi/OAuthPendingRequests.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/OAuthRequestApi/OAuthRequestManager.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/StorageApi/WebStorage.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/InternalAppContext.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/isReactRouterBeta.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/RouteTracker.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/AppRouter.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-plugin-api/dist/apis/definitions/AppLanguageApi.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/extensions/traversal.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/plugins/collectors.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/FeatureFlagged.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/collectors.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/types.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/helpers.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/RouteResolver.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/RoutingProvider.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/AppContext.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/IdentityApi/AppIdentityProxy.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/IdentityApi/startCookieAuthRefresh.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/AppThemeProvider.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/defaultConfigLoader.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/system/ApiRegistry.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/resolveRouteBindings.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/AppLanguageApi/AppLanguageSelector.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/i18next/dist/esm/i18next.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/core-plugin-api/src/translation/TranslationRef.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/apis/implementations/TranslationApi/I18nextTranslationApi.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/core-plugin-api/src/translation/TranslationResource.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/overrideBaseUrlConfigs.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/AppManager.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/validation.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/isProtectedApp.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/app/createSpecializedApp.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/@backstage/core-app-api/dist/routing/FlatRoutes.esm.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/lodash/mapValues.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/process/browser.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/zen-observable/index.js","webpack://veecode-platform.plugin-veecode-homepage/../../node_modules/zen-observable/lib/Observable.js"],"sourcesContent":["class ApiAggregator {\n holders;\n constructor(...holders) {\n this.holders = holders;\n }\n get(apiRef) {\n for (const holder of this.holders) {\n const api = holder.get(apiRef);\n if (api) {\n return api;\n }\n }\n return void 0;\n }\n}\n\nexport { ApiAggregator };\n//# sourceMappingURL=ApiAggregator.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { ApiAggregator } from './ApiAggregator.esm.js';\nimport { createVersionedContext, createVersionedValueMap } from '@backstage/version-bridge';\n\nconst ApiContext = createVersionedContext(\"api-context\");\nconst ApiProvider = (props) => {\n const { apis, children } = props;\n const parentHolder = useContext(ApiContext)?.atVersion(1);\n const holder = parentHolder ? new ApiAggregator(apis, parentHolder) : apis;\n return /* @__PURE__ */ jsx(\n ApiContext.Provider,\n {\n value: createVersionedValueMap({ 1: holder }),\n children\n }\n );\n};\nApiProvider.propTypes = {\n apis: PropTypes.shape({ get: PropTypes.func.isRequired }).isRequired,\n children: PropTypes.node\n};\n\nexport { ApiProvider };\n//# sourceMappingURL=ApiProvider.esm.js.map\n","class ApiResolver {\n constructor(factories) {\n this.factories = factories;\n }\n /**\n * Validate factories by making sure that each of the apis can be created\n * without hitting any circular dependencies.\n */\n static validateFactories(factories, apis) {\n for (const api of apis) {\n const heap = [api];\n const allDeps = /* @__PURE__ */ new Set();\n while (heap.length) {\n const apiRef = heap.shift();\n const factory = factories.get(apiRef);\n if (!factory) {\n continue;\n }\n for (const dep of Object.values(factory.deps)) {\n if (dep.id === api.id) {\n throw new Error(`Circular dependency of api factory for ${api}`);\n }\n if (!allDeps.has(dep)) {\n allDeps.add(dep);\n heap.push(dep);\n }\n }\n }\n }\n }\n apis = /* @__PURE__ */ new Map();\n get(ref) {\n return this.load(ref);\n }\n load(ref, loading = []) {\n const impl = this.apis.get(ref.id);\n if (impl) {\n return impl;\n }\n const factory = this.factories.get(ref);\n if (!factory) {\n return void 0;\n }\n if (loading.includes(factory.api)) {\n throw new Error(`Circular dependency of api factory for ${factory.api}`);\n }\n const deps = this.loadDeps(ref, factory.deps, [...loading, factory.api]);\n const api = factory.factory(deps);\n this.apis.set(ref.id, api);\n return api;\n }\n loadDeps(dependent, apis, loading) {\n const impls = {};\n for (const key in apis) {\n if (apis.hasOwnProperty(key)) {\n const ref = apis[key];\n const api = this.load(ref, loading);\n if (!api) {\n throw new Error(\n `No API factory available for dependency ${ref} of dependent ${dependent}`\n );\n }\n impls[key] = api;\n }\n }\n return impls;\n }\n}\n\nexport { ApiResolver };\n//# sourceMappingURL=ApiResolver.esm.js.map\n","var ScopePriority = /* @__PURE__ */ ((ScopePriority2) => {\n ScopePriority2[ScopePriority2[\"default\"] = 10] = \"default\";\n ScopePriority2[ScopePriority2[\"app\"] = 50] = \"app\";\n ScopePriority2[ScopePriority2[\"static\"] = 100] = \"static\";\n return ScopePriority2;\n})(ScopePriority || {});\nclass ApiFactoryRegistry {\n factories = /* @__PURE__ */ new Map();\n /**\n * Register a new API factory. Returns true if the factory was added\n * to the registry.\n *\n * A factory will not be added to the registry if there is already\n * an existing factory with the same or higher priority.\n */\n register(scope, factory) {\n const priority = ScopePriority[scope];\n const existing = this.factories.get(factory.api.id);\n if (existing && existing.priority >= priority) {\n return false;\n }\n this.factories.set(factory.api.id, { priority, factory });\n return true;\n }\n get(api) {\n const tuple = this.factories.get(api.id);\n if (!tuple) {\n return void 0;\n }\n return tuple.factory;\n }\n getAllApis() {\n const refs = /* @__PURE__ */ new Set();\n for (const { factory } of this.factories.values()) {\n refs.add(factory.api);\n }\n return refs;\n }\n}\n\nexport { ApiFactoryRegistry };\n//# sourceMappingURL=ApiFactoryRegistry.esm.js.map\n","function openLoginPopup(options) {\n return new Promise((resolve, reject) => {\n const width = options.width || 500;\n const height = options.height || 700;\n const left = window.screen.width / 2 - width / 2;\n const top = window.screen.height / 2 - height / 2;\n const origin = new URL(options.url).origin;\n const popup = window.open(\n options.url,\n options.name,\n `menubar=no,location=no,resizable=no,scrollbars=no,status=no,width=${width},height=${height},top=${top},left=${left}`\n );\n let targetOrigin = \"\";\n if (!popup || typeof popup.closed === \"undefined\" || popup.closed) {\n const error = new Error(\"Failed to open auth popup.\");\n error.name = \"PopupRejectedError\";\n reject(error);\n return;\n }\n const messageListener = (event) => {\n if (event.source !== popup) {\n return;\n }\n if (event.origin !== origin) {\n return;\n }\n const { data } = event;\n if (data.type === \"config_info\") {\n targetOrigin = data.targetOrigin;\n return;\n }\n if (data.type !== \"authorization_response\") {\n return;\n }\n const authResult = data;\n if (\"error\" in authResult) {\n const error = new Error(authResult.error.message);\n error.name = authResult.error.name;\n reject(error);\n } else {\n resolve(authResult.response);\n }\n done();\n };\n const intervalId = setInterval(() => {\n if (popup.closed) {\n const errMessage = `Login failed, ${targetOrigin && targetOrigin !== window.location.origin ? `Incorrect app origin, expected ${targetOrigin}` : \"popup was closed\"}`;\n const error = new Error(errMessage);\n error.name = \"PopupClosedError\";\n reject(error);\n done();\n }\n }, 100);\n function done() {\n window.removeEventListener(\"message\", messageListener);\n clearInterval(intervalId);\n }\n window.addEventListener(\"message\", messageListener);\n });\n}\n\nexport { openLoginPopup };\n//# sourceMappingURL=loginPopup.esm.js.map\n","import { openLoginPopup } from '../loginPopup.esm.js';\n\nlet warned = false;\nfunction defaultJoinScopes(scopes) {\n return [...scopes].join(\" \");\n}\nclass DefaultAuthConnector {\n discoveryApi;\n environment;\n provider;\n joinScopesFunc;\n authRequester;\n sessionTransform;\n enableExperimentalRedirectFlow;\n popupOptions;\n constructor(options) {\n const {\n configApi,\n discoveryApi,\n environment,\n provider,\n joinScopes = defaultJoinScopes,\n oauthRequestApi,\n sessionTransform = (id) => id,\n popupOptions\n } = options;\n if (!warned && !configApi) {\n console.warn(\n \"DEPRECATION WARNING: Authentication providers require a configApi instance to configure the authentication flow. Please provide one to the authentication provider constructor.\"\n );\n warned = true;\n }\n this.enableExperimentalRedirectFlow = configApi ? configApi.getOptionalBoolean(\"enableExperimentalRedirectFlow\") ?? false : false;\n this.authRequester = oauthRequestApi.createAuthRequester({\n provider,\n onAuthRequest: async (scopes) => {\n if (!this.enableExperimentalRedirectFlow) {\n return this.showPopup(scopes);\n }\n return this.executeRedirect(scopes);\n }\n });\n this.discoveryApi = discoveryApi;\n this.environment = environment;\n this.provider = provider;\n this.joinScopesFunc = joinScopes;\n this.sessionTransform = sessionTransform;\n this.popupOptions = popupOptions;\n }\n async createSession(options) {\n if (options.instantPopup) {\n if (this.enableExperimentalRedirectFlow) {\n return this.executeRedirect(options.scopes);\n }\n return this.showPopup(options.scopes);\n }\n return this.authRequester(options.scopes);\n }\n async refreshSession(options) {\n const res = await fetch(\n await this.buildUrl(\"/refresh\", {\n optional: true,\n ...options && { scope: this.joinScopesFunc(options.scopes) }\n }),\n {\n headers: {\n \"x-requested-with\": \"XMLHttpRequest\"\n },\n credentials: \"include\"\n }\n ).catch((error) => {\n throw new Error(`Auth refresh request failed, ${error}`);\n });\n if (!res.ok) {\n const error = new Error(\n `Auth refresh request failed, ${res.statusText}`\n );\n error.status = res.status;\n throw error;\n }\n const authInfo = await res.json();\n if (authInfo.error) {\n const error = new Error(authInfo.error.message);\n if (authInfo.error.name) {\n error.name = authInfo.error.name;\n }\n throw error;\n }\n return await this.sessionTransform(authInfo);\n }\n async removeSession() {\n const res = await fetch(await this.buildUrl(\"/logout\"), {\n method: \"POST\",\n headers: {\n \"x-requested-with\": \"XMLHttpRequest\"\n },\n credentials: \"include\"\n }).catch((error) => {\n throw new Error(`Logout request failed, ${error}`);\n });\n if (!res.ok) {\n const error = new Error(`Logout request failed, ${res.statusText}`);\n error.status = res.status;\n throw error;\n }\n }\n async showPopup(scopes) {\n const scope = this.joinScopesFunc(scopes);\n const popupUrl = await this.buildUrl(\"/start\", {\n scope,\n origin: window.location.origin,\n flow: \"popup\"\n });\n const width = this.popupOptions?.size?.fullscreen ? window.screen.width : this.popupOptions?.size?.width || 450;\n const height = this.popupOptions?.size?.fullscreen ? window.screen.height : this.popupOptions?.size?.height || 730;\n const payload = await openLoginPopup({\n url: popupUrl,\n name: `${this.provider.title} Login`,\n width,\n height\n });\n return await this.sessionTransform(payload);\n }\n async executeRedirect(scopes) {\n const scope = this.joinScopesFunc(scopes);\n window.location.href = await this.buildUrl(\"/start\", {\n scope,\n origin: window.location.origin,\n redirectUrl: window.location.href,\n flow: \"redirect\"\n });\n return new Promise(() => {\n });\n }\n async buildUrl(path, query) {\n const baseUrl = await this.discoveryApi.getBaseUrl(\"auth\");\n const queryString = this.buildQueryString({\n ...query,\n env: this.environment\n });\n return `${baseUrl}/${this.provider.id}${path}${queryString}`;\n }\n buildQueryString(query) {\n if (!query) {\n return \"\";\n }\n const queryString = Object.entries(query).map(([key, value]) => {\n if (typeof value === \"string\") {\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n } else if (value) {\n return encodeURIComponent(key);\n }\n return void 0;\n }).filter(Boolean).join(\"&\");\n if (!queryString) {\n return \"\";\n }\n return `?${queryString}`;\n }\n}\n\nexport { DefaultAuthConnector };\n//# sourceMappingURL=DefaultAuthConnector.esm.js.map\n","function hasScopes(searched, searchFor) {\n for (const scope of searchFor) {\n if (!searched.has(scope)) {\n return false;\n }\n }\n return true;\n}\nclass SessionScopeHelper {\n constructor(options) {\n this.options = options;\n }\n sessionExistsAndHasScope(session, scopes) {\n if (!session) {\n return false;\n }\n if (!scopes) {\n return true;\n }\n if (this.options.sessionScopes === void 0) {\n return true;\n }\n const sessionScopes = this.options.sessionScopes(session);\n return hasScopes(sessionScopes, scopes);\n }\n getExtendedScope(session, scopes) {\n const newScope = new Set(this.options.defaultScopes);\n if (session && this.options.sessionScopes !== void 0) {\n const sessionScopes = this.options.sessionScopes(session);\n for (const scope of sessionScopes) {\n newScope.add(scope);\n }\n }\n if (scopes) {\n for (const scope of scopes) {\n newScope.add(scope);\n }\n }\n return newScope;\n }\n}\n\nexport { SessionScopeHelper, hasScopes };\n//# sourceMappingURL=common.esm.js.map\n","import ObservableImpl from 'zen-observable';\n\nclass PublishSubject {\n isClosed = false;\n terminatingError;\n observable = new ObservableImpl((subscriber) => {\n if (this.isClosed) {\n if (this.terminatingError) {\n subscriber.error(this.terminatingError);\n } else {\n subscriber.complete();\n }\n return () => {\n };\n }\n this.subscribers.add(subscriber);\n return () => {\n this.subscribers.delete(subscriber);\n };\n });\n subscribers = /* @__PURE__ */ new Set();\n [Symbol.observable]() {\n return this;\n }\n get closed() {\n return this.isClosed;\n }\n next(value) {\n if (this.isClosed) {\n throw new Error(\"PublishSubject is closed\");\n }\n this.subscribers.forEach((subscriber) => subscriber.next(value));\n }\n error(error) {\n if (this.isClosed) {\n throw new Error(\"PublishSubject is closed\");\n }\n this.isClosed = true;\n this.terminatingError = error;\n this.subscribers.forEach((subscriber) => subscriber.error(error));\n }\n complete() {\n if (this.isClosed) {\n throw new Error(\"PublishSubject is closed\");\n }\n this.isClosed = true;\n this.subscribers.forEach((subscriber) => subscriber.complete());\n }\n subscribe(onNext, onError, onComplete) {\n const observer = typeof onNext === \"function\" ? {\n next: onNext,\n error: onError,\n complete: onComplete\n } : onNext;\n return this.observable.subscribe(observer);\n }\n}\nclass BehaviorSubject {\n isClosed;\n currentValue;\n terminatingError;\n observable;\n constructor(value) {\n this.isClosed = false;\n this.currentValue = value;\n this.terminatingError = void 0;\n this.observable = new ObservableImpl((subscriber) => {\n if (this.isClosed) {\n if (this.terminatingError) {\n subscriber.error(this.terminatingError);\n } else {\n subscriber.complete();\n }\n return () => {\n };\n }\n subscriber.next(this.currentValue);\n this.subscribers.add(subscriber);\n return () => {\n this.subscribers.delete(subscriber);\n };\n });\n }\n subscribers = /* @__PURE__ */ new Set();\n [Symbol.observable]() {\n return this;\n }\n get closed() {\n return this.isClosed;\n }\n next(value) {\n if (this.isClosed) {\n throw new Error(\"BehaviorSubject is closed\");\n }\n this.currentValue = value;\n this.subscribers.forEach((subscriber) => subscriber.next(value));\n }\n error(error) {\n if (this.isClosed) {\n throw new Error(\"BehaviorSubject is closed\");\n }\n this.isClosed = true;\n this.terminatingError = error;\n this.subscribers.forEach((subscriber) => subscriber.error(error));\n }\n complete() {\n if (this.isClosed) {\n throw new Error(\"BehaviorSubject is closed\");\n }\n this.isClosed = true;\n this.subscribers.forEach((subscriber) => subscriber.complete());\n }\n subscribe(onNext, onError, onComplete) {\n const observer = typeof onNext === \"function\" ? {\n next: onNext,\n error: onError,\n complete: onComplete\n } : onNext;\n return this.observable.subscribe(observer);\n }\n}\n\nexport { BehaviorSubject, PublishSubject };\n//# sourceMappingURL=subjects.esm.js.map\n","import { BehaviorSubject } from '../subjects.esm.js';\nimport { SessionState } from '@backstage/core-plugin-api';\n\nclass SessionStateTracker {\n subject = new BehaviorSubject(\n SessionState.SignedOut\n );\n signedIn = false;\n setIsSignedIn(isSignedIn) {\n if (this.signedIn !== isSignedIn) {\n this.signedIn = isSignedIn;\n this.subject.next(\n this.signedIn ? SessionState.SignedIn : SessionState.SignedOut\n );\n }\n }\n sessionState$() {\n return this.subject;\n }\n}\n\nexport { SessionStateTracker };\n//# sourceMappingURL=SessionStateTracker.esm.js.map\n","import { SessionScopeHelper, hasScopes } from './common.esm.js';\nimport { SessionStateTracker } from './SessionStateTracker.esm.js';\n\nclass RefreshingAuthSessionManager {\n connector;\n helper;\n sessionScopesFunc;\n sessionShouldRefreshFunc;\n stateTracker = new SessionStateTracker();\n refreshPromise;\n currentSession;\n constructor(options) {\n const {\n connector,\n defaultScopes = /* @__PURE__ */ new Set(),\n sessionScopes,\n sessionShouldRefresh\n } = options;\n this.connector = connector;\n this.sessionScopesFunc = sessionScopes;\n this.sessionShouldRefreshFunc = sessionShouldRefresh;\n this.helper = new SessionScopeHelper({ sessionScopes, defaultScopes });\n }\n async getSession(options) {\n let alreadyTriedToRefreshSession = false;\n if (this.helper.sessionExistsAndHasScope(this.currentSession, options.scopes)) {\n const shouldRefresh = this.sessionShouldRefreshFunc(this.currentSession);\n if (!shouldRefresh) {\n return this.currentSession;\n }\n alreadyTriedToRefreshSession = true;\n try {\n const refreshedSession = await this.collapsedSessionRefresh(\n options.scopes\n );\n const currentScopes = this.sessionScopesFunc(this.currentSession);\n const refreshedScopes = this.sessionScopesFunc(refreshedSession);\n if (hasScopes(refreshedScopes, currentScopes)) {\n this.currentSession = refreshedSession;\n }\n return refreshedSession;\n } catch (error) {\n this.removeLocalSession();\n if (options.optional) {\n return void 0;\n }\n }\n }\n if (!alreadyTriedToRefreshSession) {\n try {\n const newSession = await this.collapsedSessionRefresh(options.scopes);\n this.currentSession = newSession;\n return this.getSession(options);\n } catch {\n this.removeLocalSession();\n }\n }\n if (options.optional) {\n return void 0;\n }\n this.currentSession = await this.connector.createSession({\n ...options,\n scopes: this.helper.getExtendedScope(this.currentSession, options.scopes)\n });\n this.stateTracker.setIsSignedIn(true);\n return this.currentSession;\n }\n /**\n * Sets `undefined` to this.{@link currentSession} and tells this.{@link stateTracker}, session state tracker,\n * that a user has signed out.\n *\n * Does not propagate session removal to the connector like {@link removeSession}().\n *\n */\n removeLocalSession() {\n this.currentSession = void 0;\n this.stateTracker.setIsSignedIn(false);\n }\n async removeSession() {\n this.currentSession = void 0;\n await this.connector.removeSession();\n this.stateTracker.setIsSignedIn(false);\n }\n sessionState$() {\n return this.stateTracker.sessionState$();\n }\n async collapsedSessionRefresh(scopes) {\n if (this.refreshPromise) {\n return this.refreshPromise;\n }\n this.refreshPromise = this.connector.refreshSession({\n scopes: this.helper.getExtendedScope(this.currentSession, scopes)\n });\n try {\n const session = await this.refreshPromise;\n if (!this.helper.sessionExistsAndHasScope(session, scopes)) {\n throw new Error(\n \"Refreshed session did not receive the required scopes\"\n );\n }\n this.stateTracker.setIsSignedIn(true);\n return session;\n } finally {\n delete this.refreshPromise;\n }\n }\n}\n\nexport { RefreshingAuthSessionManager };\n//# sourceMappingURL=RefreshingAuthSessionManager.esm.js.map\n","import { DefaultAuthConnector } from '../../../../lib/AuthConnector/DefaultAuthConnector.esm.js';\nimport { RefreshingAuthSessionManager } from '../../../../lib/AuthSessionManager/RefreshingAuthSessionManager.esm.js';\nimport 'zen-observable';\nimport '@backstage/core-plugin-api';\n\nconst DEFAULT_PROVIDER = {\n id: \"oauth2\",\n title: \"Your Identity Provider\",\n icon: () => null\n};\nclass OAuth2 {\n static createAuthConnector(options) {\n if (\"authConnector\" in options) {\n return options.authConnector;\n }\n const {\n scopeTransform = (x) => x,\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi,\n popupOptions\n } = options;\n return new DefaultAuthConnector({\n configApi,\n discoveryApi,\n environment,\n provider,\n oauthRequestApi,\n sessionTransform({\n backstageIdentity,\n ...res\n }) {\n const session = {\n ...res,\n providerInfo: {\n idToken: res.providerInfo.idToken,\n accessToken: res.providerInfo.accessToken,\n scopes: OAuth2.normalizeScopes(res.providerInfo.scope, {\n scopeTransform\n }),\n expiresAt: res.providerInfo.expiresInSeconds ? new Date(Date.now() + res.providerInfo.expiresInSeconds * 1e3) : void 0\n }\n };\n if (backstageIdentity) {\n session.backstageIdentity = {\n token: backstageIdentity.token,\n identity: backstageIdentity.identity,\n expiresAt: backstageIdentity.expiresInSeconds ? new Date(Date.now() + backstageIdentity.expiresInSeconds * 1e3) : void 0\n };\n }\n return session;\n },\n popupOptions\n });\n }\n static create(options) {\n const { defaultScopes = [], scopeTransform = (x) => x } = options;\n const connector = OAuth2.createAuthConnector(options);\n const sessionManager = new RefreshingAuthSessionManager({\n connector,\n defaultScopes: new Set(defaultScopes),\n sessionScopes: (session) => session.providerInfo.scopes,\n sessionShouldRefresh: (session) => {\n let min = Infinity;\n if (session.providerInfo?.expiresAt) {\n min = Math.min(\n min,\n (session.providerInfo.expiresAt.getTime() - Date.now()) / 1e3\n );\n }\n if (session.backstageIdentity?.expiresAt) {\n min = Math.min(\n min,\n (session.backstageIdentity.expiresAt.getTime() - Date.now()) / 1e3\n );\n }\n return min < 60 * 3;\n }\n });\n return new OAuth2({ sessionManager, scopeTransform });\n }\n sessionManager;\n scopeTransform;\n constructor(options) {\n this.sessionManager = options.sessionManager;\n this.scopeTransform = options.scopeTransform;\n }\n async signIn() {\n await this.getAccessToken();\n }\n async signOut() {\n await this.sessionManager.removeSession();\n }\n sessionState$() {\n return this.sessionManager.sessionState$();\n }\n async getAccessToken(scope, options) {\n const normalizedScopes = OAuth2.normalizeScopes(scope, {\n scopeTransform: this.scopeTransform\n });\n const session = await this.sessionManager.getSession({\n ...options,\n scopes: normalizedScopes\n });\n return session?.providerInfo.accessToken ?? \"\";\n }\n async getIdToken(options = {}) {\n const session = await this.sessionManager.getSession({\n ...options,\n scopes: /* @__PURE__ */ new Set([\"openid\"])\n });\n return session?.providerInfo.idToken ?? \"\";\n }\n async getBackstageIdentity(options = {}) {\n const session = await this.sessionManager.getSession(options);\n return session?.backstageIdentity;\n }\n async getProfile(options = {}) {\n const session = await this.sessionManager.getSession(options);\n return session?.profile;\n }\n /**\n * @public\n */\n static normalizeScopes(scopes, options) {\n if (!scopes) {\n return /* @__PURE__ */ new Set();\n }\n const scopeList = Array.isArray(scopes) ? scopes : scopes.split(/[\\s|,]/).filter(Boolean);\n const transformedScopes = options ? options.scopeTransform(scopeList) : scopeList;\n return new Set(transformedScopes);\n }\n}\n\nexport { OAuth2 as default };\n//# sourceMappingURL=OAuth2.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"github\",\n title: \"GitHub\",\n icon: () => null\n};\nclass GithubAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi,\n defaultScopes = [\"read:user\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes\n });\n }\n}\n\nexport { GithubAuth as default };\n//# sourceMappingURL=GithubAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"gitlab\",\n title: \"GitLab\",\n icon: () => null\n};\nclass GitlabAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi,\n defaultScopes = [\"read_user\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes\n });\n }\n}\n\nexport { GitlabAuth as default };\n//# sourceMappingURL=GitlabAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"google\",\n title: \"Google\",\n icon: () => null\n};\nconst SCOPE_PREFIX = \"https://www.googleapis.com/auth/\";\nclass GoogleAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n defaultScopes = [\n \"openid\",\n `${SCOPE_PREFIX}userinfo.email`,\n `${SCOPE_PREFIX}userinfo.profile`\n ]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes,\n scopeTransform(scopes) {\n return scopes.map((scope) => {\n if (scope === \"openid\") {\n return scope;\n }\n if (scope === \"profile\" || scope === \"email\") {\n return `${SCOPE_PREFIX}userinfo.${scope}`;\n }\n if (scope.startsWith(SCOPE_PREFIX)) {\n return scope;\n }\n return `${SCOPE_PREFIX}${scope}`;\n });\n }\n });\n }\n}\n\nexport { GoogleAuth as default };\n//# sourceMappingURL=GoogleAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"okta\",\n title: \"Okta\",\n icon: () => null\n};\nconst OKTA_OIDC_SCOPES = /* @__PURE__ */ new Set([\n \"openid\",\n \"profile\",\n \"email\",\n \"phone\",\n \"address\",\n \"groups\",\n \"offline_access\"\n]);\nconst OKTA_SCOPE_PREFIX = \"okta.\";\nclass OktaAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi,\n defaultScopes = [\"openid\", \"email\", \"profile\", \"offline_access\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes,\n scopeTransform(scopes) {\n return scopes.map((scope) => {\n if (OKTA_OIDC_SCOPES.has(scope)) {\n return scope;\n }\n if (scope.startsWith(OKTA_SCOPE_PREFIX)) {\n return scope;\n }\n return `${OKTA_SCOPE_PREFIX}${scope}`;\n });\n }\n });\n }\n}\n\nexport { OktaAuth as default };\n//# sourceMappingURL=OktaAuth.esm.js.map\n","import { openLoginPopup } from '../loginPopup.esm.js';\n\nclass DirectAuthConnector {\n discoveryApi;\n environment;\n provider;\n constructor(options) {\n const { discoveryApi, environment, provider } = options;\n this.discoveryApi = discoveryApi;\n this.environment = environment;\n this.provider = provider;\n }\n async createSession() {\n const popupUrl = await this.buildUrl(\"/start\");\n const payload = await openLoginPopup({\n url: popupUrl,\n name: `${this.provider.title} Login`,\n width: 450,\n height: 730\n });\n return {\n ...payload,\n id: payload.profile.email\n };\n }\n async refreshSession() {\n }\n async removeSession() {\n const res = await fetch(await this.buildUrl(\"/logout\"), {\n method: \"POST\",\n headers: {\n \"x-requested-with\": \"XMLHttpRequest\"\n },\n credentials: \"include\"\n }).catch((error) => {\n throw new Error(`Logout request failed, ${error}`);\n });\n if (!res.ok) {\n const error = new Error(`Logout request failed, ${res.statusText}`);\n error.status = res.status;\n throw error;\n }\n }\n async buildUrl(path) {\n const baseUrl = await this.discoveryApi.getBaseUrl(\"auth\");\n return `${baseUrl}/${this.provider.id}${path}?env=${this.environment}`;\n }\n}\n\nexport { DirectAuthConnector };\n//# sourceMappingURL=DirectAuthConnector.esm.js.map\n","import { SessionScopeHelper } from './common.esm.js';\nimport { SessionStateTracker } from './SessionStateTracker.esm.js';\n\nclass StaticAuthSessionManager {\n connector;\n helper;\n stateTracker = new SessionStateTracker();\n currentSession;\n constructor(options) {\n const { connector, defaultScopes = /* @__PURE__ */ new Set(), sessionScopes } = options;\n this.connector = connector;\n this.helper = new SessionScopeHelper({ sessionScopes, defaultScopes });\n }\n setSession(session) {\n this.currentSession = session;\n this.stateTracker.setIsSignedIn(Boolean(session));\n }\n async getSession(options) {\n if (this.helper.sessionExistsAndHasScope(this.currentSession, options.scopes)) {\n return this.currentSession;\n }\n if (options.optional) {\n return void 0;\n }\n this.currentSession = await this.connector.createSession({\n ...options,\n scopes: this.helper.getExtendedScope(this.currentSession, options.scopes)\n });\n this.stateTracker.setIsSignedIn(true);\n return this.currentSession;\n }\n /**\n * We don't call this.connector.removeSession here, since this session manager\n * is intended to be static. As such there's no need to hit the remote logout\n * endpoint - simply discarding the local session state when signing out is\n * enough.\n */\n async removeSession() {\n this.currentSession = void 0;\n this.stateTracker.setIsSignedIn(false);\n }\n sessionState$() {\n return this.stateTracker.sessionState$();\n }\n}\n\nexport { StaticAuthSessionManager };\n//# sourceMappingURL=StaticAuthSessionManager.esm.js.map\n","import { SessionScopeHelper } from './common.esm.js';\n\nclass AuthSessionStore {\n manager;\n storageKey;\n schema;\n sessionShouldRefreshFunc;\n helper;\n constructor(options) {\n const {\n manager,\n storageKey,\n schema,\n sessionScopes,\n sessionShouldRefresh = () => false\n } = options;\n this.manager = manager;\n this.storageKey = storageKey;\n this.schema = schema;\n this.sessionShouldRefreshFunc = sessionShouldRefresh;\n this.helper = new SessionScopeHelper({\n sessionScopes,\n defaultScopes: /* @__PURE__ */ new Set()\n });\n }\n setSession(session) {\n this.manager.setSession(session);\n this.saveSession(session);\n }\n async getSession(options) {\n const { scopes } = options;\n const session = this.loadSession();\n if (this.helper.sessionExistsAndHasScope(session, scopes)) {\n const shouldRefresh = this.sessionShouldRefreshFunc(session);\n if (!shouldRefresh) {\n this.manager.setSession(session);\n return session;\n }\n }\n const newSession = await this.manager.getSession(options);\n this.saveSession(newSession);\n return newSession;\n }\n async removeSession() {\n localStorage.removeItem(this.storageKey);\n await this.manager.removeSession();\n }\n sessionState$() {\n return this.manager.sessionState$();\n }\n loadSession() {\n try {\n const sessionJson = localStorage.getItem(this.storageKey);\n if (sessionJson) {\n const session = JSON.parse(sessionJson, (_key, value) => {\n if (value?.__type === \"Set\") {\n return new Set(value.__value);\n }\n return value;\n });\n try {\n return this.schema.parse(session);\n } catch (e) {\n console.log(\n `Failed to load session from local storage because it did not conform to the expected schema, ${e}`\n );\n throw e;\n }\n }\n return void 0;\n } catch (error) {\n localStorage.removeItem(this.storageKey);\n return void 0;\n }\n }\n saveSession(session) {\n if (session === void 0) {\n localStorage.removeItem(this.storageKey);\n return;\n }\n try {\n this.schema.parse(session);\n } catch (e) {\n console.warn(\n `Failed to save session to local storage because it did not conform to the expected schema, ${e}`\n );\n return;\n }\n localStorage.setItem(\n this.storageKey,\n JSON.stringify(session, (_key, value) => {\n if (value instanceof Set) {\n return {\n __type: \"Set\",\n __value: Array.from(value)\n };\n }\n return value;\n })\n );\n }\n}\n\nexport { AuthSessionStore };\n//# sourceMappingURL=AuthSessionStore.esm.js.map\n","import { z } from 'zod';\n\nconst samlSessionSchema = z.object({\n profile: z.object({\n email: z.string().optional(),\n displayName: z.string().optional(),\n picture: z.string().optional()\n }),\n backstageIdentity: z.object({\n token: z.string(),\n identity: z.object({\n type: z.literal(\"user\"),\n userEntityRef: z.string(),\n ownershipEntityRefs: z.array(z.string())\n })\n })\n});\n\nexport { samlSessionSchema };\n//# sourceMappingURL=types.esm.js.map\n","import { DirectAuthConnector } from '../../../../lib/AuthConnector/DirectAuthConnector.esm.js';\nimport 'zen-observable';\nimport '@backstage/core-plugin-api';\nimport { StaticAuthSessionManager } from '../../../../lib/AuthSessionManager/StaticAuthSessionManager.esm.js';\nimport { AuthSessionStore } from '../../../../lib/AuthSessionManager/AuthSessionStore.esm.js';\nimport { samlSessionSchema } from './types.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"saml\",\n title: \"SAML\",\n icon: () => null\n};\nclass SamlAuth {\n constructor(sessionManager) {\n this.sessionManager = sessionManager;\n }\n static create(options) {\n const {\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER\n } = options;\n const connector = new DirectAuthConnector({\n discoveryApi,\n environment,\n provider\n });\n const sessionManager = new StaticAuthSessionManager({\n connector\n });\n const authSessionStore = new AuthSessionStore({\n manager: sessionManager,\n storageKey: `${provider.id}Session`,\n schema: samlSessionSchema\n });\n return new SamlAuth(authSessionStore);\n }\n sessionState$() {\n return this.sessionManager.sessionState$();\n }\n async signIn() {\n await this.getBackstageIdentity({});\n }\n async signOut() {\n await this.sessionManager.removeSession();\n }\n async getBackstageIdentity(options = {}) {\n const session = await this.sessionManager.getSession(options);\n return session?.backstageIdentity;\n }\n async getProfile(options = {}) {\n const session = await this.sessionManager.getSession(options);\n return session?.profile;\n }\n}\n\nexport { SamlAuth as default };\n//# sourceMappingURL=SamlAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"microsoft\",\n title: \"Microsoft\",\n icon: () => null\n};\nclass MicrosoftAuth {\n oauth2;\n configApi;\n environment;\n provider;\n oauthRequestApi;\n discoveryApi;\n scopeTransform;\n static MicrosoftGraphID = \"00000003-0000-0000-c000-000000000000\";\n static create(options) {\n return new MicrosoftAuth(options);\n }\n constructor(options) {\n const {\n configApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi,\n discoveryApi,\n defaultScopes = [\n \"openid\",\n \"offline_access\",\n \"profile\",\n \"email\",\n \"User.Read\"\n ],\n scopeTransform = (scopes) => scopes.concat(\"offline_access\")\n } = options;\n this.configApi = configApi;\n this.environment = environment;\n this.provider = provider;\n this.oauthRequestApi = oauthRequestApi;\n this.discoveryApi = discoveryApi;\n this.scopeTransform = scopeTransform;\n this.oauth2 = {\n [MicrosoftAuth.MicrosoftGraphID]: OAuth2.create({\n configApi: this.configApi,\n discoveryApi: this.discoveryApi,\n oauthRequestApi: this.oauthRequestApi,\n provider: this.provider,\n environment: this.environment,\n scopeTransform: this.scopeTransform,\n defaultScopes\n })\n };\n }\n microsoftGraph() {\n return this.oauth2[MicrosoftAuth.MicrosoftGraphID];\n }\n static resourceForScopes(scope) {\n const audiences = [\n ...new Set(\n scope.split(\" \").map(MicrosoftAuth.resourceForScope).filter((aud) => aud !== \"openid\")\n )\n ];\n if (audiences.length > 1) {\n return Promise.reject(\n new Error(\n `Requested access token with scopes from multiple Azure resources: ${audiences.join(\n \", \"\n )}. Access tokens can only have a single audience.`\n )\n );\n }\n const audience = audiences[0] ?? MicrosoftAuth.MicrosoftGraphID;\n return Promise.resolve(audience);\n }\n static resourceForScope(scope) {\n const groups = scope.match(/^(?<resourceURI>.*)\\/(?<scp>[^\\/]*)$/)?.groups;\n if (groups) {\n const { resourceURI } = groups;\n const aud = resourceURI.replace(/^api:\\/\\//, \"\");\n return aud;\n }\n switch (scope) {\n case \"email\":\n case \"openid\":\n case \"offline_access\":\n case \"profile\": {\n return \"openid\";\n }\n default:\n return MicrosoftAuth.MicrosoftGraphID;\n }\n }\n async getAccessToken(scope, options) {\n const aud = scope === void 0 ? MicrosoftAuth.MicrosoftGraphID : await MicrosoftAuth.resourceForScopes(\n Array.isArray(scope) ? scope.join(\" \") : scope\n );\n if (!(aud in this.oauth2)) {\n this.oauth2[aud] = OAuth2.create({\n configApi: this.configApi,\n discoveryApi: this.discoveryApi,\n oauthRequestApi: this.oauthRequestApi,\n provider: this.provider,\n environment: this.environment,\n scopeTransform: this.scopeTransform\n });\n }\n return this.oauth2[aud].getAccessToken(scope, options);\n }\n getIdToken(options) {\n return this.microsoftGraph().getIdToken(options);\n }\n getProfile(options) {\n return this.microsoftGraph().getProfile(options);\n }\n getBackstageIdentity(options) {\n return this.microsoftGraph().getBackstageIdentity(options);\n }\n signIn() {\n return this.microsoftGraph().signIn();\n }\n signOut() {\n return this.microsoftGraph().signOut();\n }\n sessionState$() {\n return this.microsoftGraph().sessionState$();\n }\n}\n\nexport { MicrosoftAuth as default };\n//# sourceMappingURL=MicrosoftAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"onelogin\",\n title: \"onelogin\",\n icon: () => null\n};\nconst OIDC_SCOPES = /* @__PURE__ */ new Set([\n \"openid\",\n \"profile\",\n \"email\",\n \"phone\",\n \"address\",\n \"groups\",\n \"offline_access\"\n]);\nconst SCOPE_PREFIX = \"onelogin.\";\nclass OneLoginAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes: [\"openid\", \"email\", \"profile\", \"offline_access\"],\n scopeTransform(scopes) {\n return scopes.map((scope) => {\n if (OIDC_SCOPES.has(scope)) {\n return scope;\n }\n if (scope.startsWith(SCOPE_PREFIX)) {\n return scope;\n }\n return `${SCOPE_PREFIX}${scope}`;\n });\n }\n });\n }\n}\n\nexport { OneLoginAuth as default };\n//# sourceMappingURL=OneLoginAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"bitbucket\",\n title: \"Bitbucket\",\n icon: () => null\n};\nclass BitbucketAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi,\n defaultScopes = [\"account\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes\n });\n }\n}\n\nexport { BitbucketAuth as default };\n//# sourceMappingURL=BitbucketAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"bitbucketServer\",\n title: \"Bitbucket Server\",\n icon: () => null\n};\nclass BitbucketServerAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi,\n defaultScopes = [\"PROJECT_ADMIN\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes\n });\n }\n}\n\nexport { BitbucketServerAuth as default };\n//# sourceMappingURL=BitbucketServerAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"atlassian\",\n title: \"Atlassian\",\n icon: () => null\n};\nclass AtlassianAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment\n });\n }\n}\n\nexport { AtlassianAuth as default };\n//# sourceMappingURL=AtlassianAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"vmwareCloudServices\",\n title: \"VMware Cloud\",\n icon: () => null\n};\nclass VMwareCloudAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n defaultScopes = [\"openid\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes\n });\n }\n}\n\nexport { VMwareCloudAuth as default };\n//# sourceMappingURL=VMwareCloudAuth.esm.js.map\n","import OAuth2 from '../oauth2/OAuth2.esm.js';\n\nconst DEFAULT_PROVIDER = {\n id: \"openshift\",\n title: \"OpenShift\",\n icon: () => null\n};\nclass OpenShiftAuth {\n static create(options) {\n const {\n configApi,\n discoveryApi,\n environment = \"development\",\n provider = DEFAULT_PROVIDER,\n oauthRequestApi,\n defaultScopes = [\"user:info\"]\n } = options;\n return OAuth2.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n provider,\n environment,\n defaultScopes\n });\n }\n}\n\nexport { OpenShiftAuth as default };\n//# sourceMappingURL=OpenShiftAuth.esm.js.map\n","import { PublishSubject } from '../../../lib/subjects.esm.js';\n\nclass AlertApiForwarder {\n subject = new PublishSubject();\n post(alert) {\n this.subject.next(alert);\n }\n alert$() {\n return this.subject;\n }\n}\n\nexport { AlertApiForwarder };\n//# sourceMappingURL=AlertApiForwarder.esm.js.map\n","class MultipleAnalyticsApi {\n constructor(actualApis) {\n this.actualApis = actualApis;\n }\n /**\n * Create an AnalyticsApi implementation from an array of concrete\n * implementations.\n *\n * @example\n *\n * ```jsx\n * MultipleAnalyticsApi.fromApis([\n * SomeAnalyticsApi.fromConfig(configApi),\n * new CustomAnalyticsApi(),\n * ]);\n * ```\n */\n static fromApis(actualApis) {\n return new MultipleAnalyticsApi(actualApis);\n }\n /**\n * Forward the event to all configured analytics API implementations.\n */\n captureEvent(event) {\n this.actualApis.forEach((analyticsApi) => {\n try {\n analyticsApi.captureEvent(event);\n } catch {\n }\n });\n }\n}\n\nexport { MultipleAnalyticsApi };\n//# sourceMappingURL=MultipleAnalyticsApi.esm.js.map\n","class NoOpAnalyticsApi {\n captureEvent(_event) {\n }\n}\n\nexport { NoOpAnalyticsApi };\n//# sourceMappingURL=NoOpAnalyticsApi.esm.js.map\n","import { BehaviorSubject } from '../../../lib/subjects.esm.js';\n\nconst STORAGE_KEY = \"theme\";\nclass AppThemeSelector {\n constructor(themes) {\n this.themes = themes;\n }\n static createWithStorage(themes) {\n const selector = new AppThemeSelector(themes);\n if (!window.localStorage) {\n return selector;\n }\n const initialThemeId = window.localStorage.getItem(STORAGE_KEY) ?? void 0;\n selector.setActiveThemeId(initialThemeId);\n selector.activeThemeId$().subscribe((themeId) => {\n if (themeId) {\n window.localStorage.setItem(STORAGE_KEY, themeId);\n } else {\n window.localStorage.removeItem(STORAGE_KEY);\n }\n });\n window.addEventListener(\"storage\", (event) => {\n if (event.key === STORAGE_KEY) {\n const themeId = localStorage.getItem(STORAGE_KEY) ?? void 0;\n selector.setActiveThemeId(themeId);\n }\n });\n return selector;\n }\n activeThemeId;\n subject = new BehaviorSubject(void 0);\n getInstalledThemes() {\n return this.themes.slice();\n }\n activeThemeId$() {\n return this.subject;\n }\n getActiveThemeId() {\n return this.activeThemeId;\n }\n setActiveThemeId(themeId) {\n this.activeThemeId = themeId;\n this.subject.next(themeId);\n }\n}\n\nexport { AppThemeSelector };\n//# sourceMappingURL=AppThemeSelector.esm.js.map\n","const CONFIG_KEY_PART_PATTERN = /^[a-z][a-z0-9]*(?:[-_][a-z0-9]+)*$/i;\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction cloneDeep(value) {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(cloneDeep);\n }\n return Object.fromEntries(\n Object.entries(value).map(([k, v]) => [k, cloneDeep(v)])\n );\n}\nfunction merge(into, from) {\n if (into === null) {\n return void 0;\n }\n if (into === void 0) {\n return from === void 0 ? void 0 : merge(from);\n }\n if (typeof into !== \"object\" || Array.isArray(into)) {\n return into;\n }\n const fromObj = isObject(from) ? from : {};\n const out = {};\n for (const key of /* @__PURE__ */ new Set([...Object.keys(into), ...Object.keys(fromObj)])) {\n const val = merge(into[key], fromObj[key]);\n if (val !== void 0) {\n out[key] = val;\n }\n }\n return out;\n}\nfunction typeOf(value) {\n if (value === null) {\n return \"null\";\n } else if (Array.isArray(value)) {\n return \"array\";\n }\n const type = typeof value;\n if (type === \"number\" && isNaN(value)) {\n return \"nan\";\n }\n if (type === \"string\" && value === \"\") {\n return \"empty-string\";\n }\n return type;\n}\nconst errors = {\n type(key, context, typeName, expected) {\n return `Invalid type in config for key '${key}' in '${context}', got ${typeName}, wanted ${expected}`;\n },\n missing(key, context) {\n return `Missing required config value at '${key}' in '${context}'`;\n },\n convert(key, context, expected) {\n return `Unable to convert config value for key '${key}' in '${context}' to a ${expected}`;\n }\n};\nclass ConfigReader {\n constructor(data, context = \"mock-config\", fallback, prefix = \"\") {\n this.data = data;\n this.context = context;\n this.fallback = fallback;\n this.prefix = prefix;\n }\n /**\n * A set of key paths that where removed from the config due to not being visible.\n *\n * This was added as a mutable private member to avoid changes to the public API.\n * Its only purpose of this is to warn users of missing visibility when running\n * the frontend in development mode.\n */\n filteredKeys;\n notifiedFilteredKeys = /* @__PURE__ */ new Set();\n /**\n * Instantiates the config reader from a list of application config objects.\n */\n static fromConfigs(configs) {\n if (configs.length === 0) {\n return new ConfigReader(void 0);\n }\n return configs.reduce(\n (previousReader, { data, context, filteredKeys, deprecatedKeys }) => {\n const reader = new ConfigReader(data, context, previousReader);\n reader.filteredKeys = filteredKeys;\n if (deprecatedKeys) {\n for (const { key, description } of deprecatedKeys) {\n console.warn(\n `The configuration key '${key}' of ${context} is deprecated and may be removed soon. ${description || \"\"}`\n );\n }\n }\n return reader;\n },\n void 0\n );\n }\n /** {@inheritdoc Config.has} */\n has(key) {\n const value = this.readValue(key);\n if (value === null) {\n return false;\n }\n if (value !== void 0) {\n return true;\n }\n return this.fallback?.has(key) ?? false;\n }\n /** {@inheritdoc Config.keys} */\n keys() {\n const localKeys = this.data ? Object.keys(this.data) : [];\n const fallbackKeys = this.fallback?.keys() ?? [];\n return [.../* @__PURE__ */ new Set([...localKeys, ...fallbackKeys])].filter(\n (k) => this.data?.[k] !== null\n );\n }\n /** {@inheritdoc Config.get} */\n get(key) {\n const value = this.getOptional(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key ?? \"\"), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptional} */\n getOptional(key) {\n const value = cloneDeep(this.readValue(key));\n const fallbackValue = this.fallback?.getOptional(key);\n if (value === null) {\n return void 0;\n }\n if (value === void 0) {\n if (process.env.NODE_ENV === \"development\") {\n if (fallbackValue === void 0 && key) {\n const fullKey = this.fullKey(key);\n if (this.filteredKeys?.includes(fullKey) && !this.notifiedFilteredKeys.has(fullKey)) {\n this.notifiedFilteredKeys.add(fullKey);\n console.warn(\n `Failed to read configuration value at '${fullKey}' as it is not visible. See https://backstage.io/docs/conf/defining#visibility for instructions on how to make it visible.`\n );\n }\n }\n }\n return merge(fallbackValue);\n } else if (fallbackValue === void 0) {\n return merge(value);\n }\n return merge(value, fallbackValue);\n }\n /** {@inheritdoc Config.getConfig} */\n getConfig(key) {\n const value = this.getOptionalConfig(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalConfig} */\n getOptionalConfig(key) {\n const value = this.readValue(key);\n const fallbackConfig = this.fallback?.getOptionalConfig(key);\n if (isObject(value)) {\n return this.copy(value, key, fallbackConfig);\n }\n if (value === null) {\n return void 0;\n }\n if (value !== void 0) {\n throw new TypeError(\n errors.type(this.fullKey(key), this.context, typeOf(value), \"object\")\n );\n }\n return fallbackConfig;\n }\n /** {@inheritdoc Config.getConfigArray} */\n getConfigArray(key) {\n const value = this.getOptionalConfigArray(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalConfigArray} */\n getOptionalConfigArray(key) {\n const configs = this.readConfigValue(key, (values) => {\n if (!Array.isArray(values)) {\n return { expected: \"object-array\" };\n }\n for (const [index, value] of values.entries()) {\n if (!isObject(value)) {\n return { expected: \"object-array\", value, key: `${key}[${index}]` };\n }\n }\n return true;\n });\n if (!configs) {\n if (process.env.NODE_ENV === \"development\") {\n const fullKey = this.fullKey(key);\n if (this.filteredKeys?.some((k) => k.startsWith(fullKey)) && !this.notifiedFilteredKeys.has(key)) {\n this.notifiedFilteredKeys.add(key);\n console.warn(\n `Failed to read configuration array at '${key}' as it does not have any visible elements. See https://backstage.io/docs/conf/defining#visibility for instructions on how to make it visible.`\n );\n }\n }\n return void 0;\n }\n return configs.map((obj, index) => this.copy(obj, `${key}[${index}]`));\n }\n /** {@inheritdoc Config.getNumber} */\n getNumber(key) {\n const value = this.getOptionalNumber(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalNumber} */\n getOptionalNumber(key) {\n const value = this.readConfigValue(\n key,\n (val) => typeof val === \"number\" || typeof val === \"string\" || { expected: \"number\" }\n );\n if (typeof value === \"number\" || value === void 0) {\n return value;\n }\n const number = Number(value);\n if (!Number.isFinite(number)) {\n throw new Error(\n errors.convert(this.fullKey(key), this.context, \"number\")\n );\n }\n return number;\n }\n /** {@inheritdoc Config.getBoolean} */\n getBoolean(key) {\n const value = this.getOptionalBoolean(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalBoolean} */\n getOptionalBoolean(key) {\n const value = this.readConfigValue(\n key,\n (val) => typeof val === \"boolean\" || typeof val === \"number\" || typeof val === \"string\" || { expected: \"boolean\" }\n );\n if (typeof value === \"boolean\" || value === void 0) {\n return value;\n }\n const valueString = String(value).trim();\n if (/^(?:y|yes|true|1|on)$/i.test(valueString)) {\n return true;\n }\n if (/^(?:n|no|false|0|off)$/i.test(valueString)) {\n return false;\n }\n throw new Error(errors.convert(this.fullKey(key), this.context, \"boolean\"));\n }\n /** {@inheritdoc Config.getString} */\n getString(key) {\n const value = this.getOptionalString(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalString} */\n getOptionalString(key) {\n return this.readConfigValue(\n key,\n (value) => typeof value === \"string\" && value !== \"\" || { expected: \"string\" }\n );\n }\n /** {@inheritdoc Config.getStringArray} */\n getStringArray(key) {\n const value = this.getOptionalStringArray(key);\n if (value === void 0) {\n throw new Error(errors.missing(this.fullKey(key), this.context));\n }\n return value;\n }\n /** {@inheritdoc Config.getOptionalStringArray} */\n getOptionalStringArray(key) {\n return this.readConfigValue(key, (values) => {\n if (!Array.isArray(values)) {\n return { expected: \"string-array\" };\n }\n for (const [index, value] of values.entries()) {\n if (typeof value !== \"string\" || value === \"\") {\n return { expected: \"string-array\", value, key: `${key}[${index}]` };\n }\n }\n return true;\n });\n }\n fullKey(key) {\n return `${this.prefix}${this.prefix ? \".\" : \"\"}${key}`;\n }\n copy(data, key, fallback) {\n const reader = new ConfigReader(\n data,\n this.context,\n fallback,\n this.fullKey(key)\n );\n reader.filteredKeys = this.filteredKeys;\n return reader;\n }\n readConfigValue(key, validate) {\n const value = this.readValue(key);\n if (value === void 0) {\n if (process.env.NODE_ENV === \"development\") {\n const fullKey = this.fullKey(key);\n if (this.filteredKeys?.includes(fullKey) && !this.notifiedFilteredKeys.has(fullKey)) {\n this.notifiedFilteredKeys.add(fullKey);\n console.warn(\n `Failed to read configuration value at '${fullKey}' as it is not visible. See https://backstage.io/docs/conf/defining#visibility for instructions on how to make it visible.`\n );\n }\n }\n return this.fallback?.readConfigValue(key, validate);\n }\n if (value === null) {\n return void 0;\n }\n const result = validate(value);\n if (result !== true) {\n const { key: keyName = key, value: theValue = value, expected } = result;\n throw new TypeError(\n errors.type(\n this.fullKey(keyName),\n this.context,\n typeOf(theValue),\n expected\n )\n );\n }\n return value;\n }\n readValue(key) {\n const parts = key ? key.split(\".\") : [];\n for (const part of parts) {\n if (!CONFIG_KEY_PART_PATTERN.test(part)) {\n throw new TypeError(`Invalid config key '${key}'`);\n }\n }\n if (this.data === void 0) {\n return void 0;\n }\n let value = this.data;\n for (const [index, part] of parts.entries()) {\n if (isObject(value)) {\n value = value[part];\n } else if (value !== void 0 && value !== null) {\n const badKey = this.fullKey(parts.slice(0, index).join(\".\"));\n throw new TypeError(\n errors.type(badKey, this.context, typeOf(value), \"object\")\n );\n }\n }\n return value;\n }\n}\n\nexport { ConfigReader };\n//# sourceMappingURL=reader.esm.js.map\n","const ERROR_PREFIX = \"Invalid discovery URL pattern,\";\nclass UrlPatternDiscovery {\n constructor(parts) {\n this.parts = parts;\n }\n /**\n * Creates a new UrlPatternDiscovery given a template. The only\n * interpolation done for the template is to replace instances of `{{pluginId}}`\n * with the ID of the plugin being requested.\n *\n * Example pattern: `http://localhost:7007/api/{{ pluginId }}`\n */\n static compile(pattern) {\n const parts = pattern.split(/\\{\\{\\s*pluginId\\s*\\}\\}/);\n const urlStr = parts.join(\"pluginId\");\n let url;\n try {\n url = new URL(urlStr);\n } catch {\n throw new Error(`${ERROR_PREFIX} URL '${urlStr}' is invalid`);\n }\n if (url.hash) {\n throw new Error(`${ERROR_PREFIX} URL must not have a hash`);\n }\n if (url.search) {\n throw new Error(`${ERROR_PREFIX} URL must not have a query`);\n }\n if (urlStr.endsWith(\"/\")) {\n throw new Error(`${ERROR_PREFIX} URL must not end with a slash`);\n }\n return new UrlPatternDiscovery(parts);\n }\n async getBaseUrl(pluginId) {\n return this.parts.join(encodeURIComponent(pluginId));\n }\n}\n\nexport { UrlPatternDiscovery };\n//# sourceMappingURL=UrlPatternDiscovery.esm.js.map\n","import { UrlPatternDiscovery } from './UrlPatternDiscovery.esm.js';\n\nclass FrontendHostDiscovery {\n constructor(endpoints, defaultEndpoint) {\n this.endpoints = endpoints;\n this.defaultEndpoint = defaultEndpoint;\n }\n /**\n * Creates a new FrontendHostDiscovery discovery instance by reading\n * the external target URL from the `discovery.endpoints` config section.\n *\n * eg.\n * ```yaml\n * discovery:\n * endpoints:\n * - target: https://internal.example.com/internal-catalog\n * plugins: [catalog]\n * - target: https://internal.example.com/secure/api/{{pluginId}}\n * plugins: [auth, permissions]\n * - target:\n * internal: https://internal.example.com/search\n * external: https://example.com/search\n * plugins: [search]\n * ```\n *\n * If a plugin is not declared in the config, the discovery will fall back to using the baseUrl with\n * the provided `pathPattern` appended. The default path pattern is `\"/api/{{ pluginId }}\"`.\n */\n static fromConfig(config, options) {\n const path = options?.pathPattern ?? \"/api/{{ pluginId }}\";\n const baseUrl = config.getString(\"backend.baseUrl\");\n const endpoints = config.getOptionalConfigArray(\"discovery.endpoints\")?.flatMap((e) => {\n const target = typeof e.get(\"target\") === \"object\" ? e.getOptionalString(\"target.external\") : e.getString(\"target\");\n if (!target) {\n return [];\n }\n const discovery = UrlPatternDiscovery.compile(target);\n return e.getStringArray(\"plugins\").map((pluginId) => [pluginId, discovery]);\n });\n return new FrontendHostDiscovery(\n new Map(endpoints),\n UrlPatternDiscovery.compile(`${baseUrl}${path}`)\n );\n }\n async getBaseUrl(pluginId) {\n const endpoint = this.endpoints.get(pluginId);\n if (endpoint) {\n return endpoint.getBaseUrl(pluginId);\n }\n return this.defaultEndpoint.getBaseUrl(pluginId);\n }\n}\n\nexport { FrontendHostDiscovery };\n//# sourceMappingURL=FrontendHostDiscovery.esm.js.map\n","class ErrorAlerter {\n constructor(alertApi, errorApi) {\n this.alertApi = alertApi;\n this.errorApi = errorApi;\n }\n post(error, context) {\n if (!context?.hidden) {\n this.alertApi.post({ message: error.message, severity: \"error\" });\n }\n return this.errorApi.post(error, context);\n }\n error$() {\n return this.errorApi.error$();\n }\n}\n\nexport { ErrorAlerter };\n//# sourceMappingURL=ErrorAlerter.esm.js.map\n","import { PublishSubject } from '../../../lib/subjects.esm.js';\n\nclass ErrorApiForwarder {\n subject = new PublishSubject();\n post(error, context) {\n this.subject.next({ error, context });\n }\n error$() {\n return this.subject;\n }\n}\n\nexport { ErrorApiForwarder };\n//# sourceMappingURL=ErrorApiForwarder.esm.js.map\n","class UnhandledErrorForwarder {\n /**\n * Add event listener, such that unhandled errors can be forwarded using an given `ErrorApi` instance\n */\n static forward(errorApi, errorContext) {\n window.addEventListener(\n \"unhandledrejection\",\n (e) => {\n errorApi.post(e.reason, errorContext);\n }\n );\n }\n}\n\nexport { UnhandledErrorForwarder };\n//# sourceMappingURL=UnhandledErrorForwarder.esm.js.map\n","import { FeatureFlagState } from '@backstage/core-plugin-api';\n\nfunction validateFlagName(name) {\n if (name.length < 3) {\n throw new Error(\n `The '${name}' feature flag must have a minimum length of three characters.`\n );\n }\n if (name.length > 150) {\n throw new Error(\n `The '${name}' feature flag must not exceed 150 characters.`\n );\n }\n if (!name.match(/^[a-z]+[a-z0-9-]+$/)) {\n throw new Error(\n `The '${name}' feature flag must start with a lowercase letter and only contain lowercase letters, numbers and hyphens. Examples: feature-flag-one, alpha, release-2020`\n );\n }\n}\nclass LocalStorageFeatureFlags {\n registeredFeatureFlags = [];\n flags;\n registerFlag(flag) {\n validateFlagName(flag.name);\n this.registeredFeatureFlags.push(flag);\n }\n getRegisteredFlags() {\n return this.registeredFeatureFlags.slice();\n }\n isActive(name) {\n if (!this.flags) {\n this.flags = this.load();\n }\n return this.flags.get(name) === FeatureFlagState.Active;\n }\n save(options) {\n if (!this.flags) {\n this.flags = this.load();\n }\n if (!options.merge) {\n this.flags.clear();\n }\n for (const [name, state] of Object.entries(options.states)) {\n this.flags.set(name, state);\n }\n const enabled = Array.from(this.flags.entries()).filter(\n ([, state]) => state === FeatureFlagState.Active\n );\n window.localStorage.setItem(\n \"featureFlags\",\n JSON.stringify(Object.fromEntries(enabled))\n );\n }\n load() {\n try {\n const jsonStr = window.localStorage.getItem(\"featureFlags\");\n if (!jsonStr) {\n return /* @__PURE__ */ new Map();\n }\n const json = JSON.parse(jsonStr);\n if (typeof json !== \"object\" || json === null || Array.isArray(json)) {\n return /* @__PURE__ */ new Map();\n }\n const entries = Object.entries(json).filter(([name, value]) => {\n validateFlagName(name);\n return value === FeatureFlagState.Active;\n });\n return new Map(entries);\n } catch {\n return /* @__PURE__ */ new Map();\n }\n }\n}\n\nexport { LocalStorageFeatureFlags, validateFlagName };\n//# sourceMappingURL=LocalStorageFeatureFlags.esm.js.map\n","function createFetchApi(options) {\n let result = options.baseImplementation || global.fetch;\n const middleware = [options.middleware ?? []].flat().reverse();\n for (const m of middleware) {\n result = m.apply(result);\n }\n return {\n fetch: result\n };\n}\n\nexport { createFetchApi };\n//# sourceMappingURL=createFetchApi.esm.js.map\n","class IdentityAuthInjectorFetchMiddleware {\n constructor(identityApi, allowUrl, headerName, headerValue) {\n this.identityApi = identityApi;\n this.allowUrl = allowUrl;\n this.headerName = headerName;\n this.headerValue = headerValue;\n }\n static create(options) {\n const matcher = buildMatcher(options);\n const headerName = options.header?.name || \"authorization\";\n const headerValue = options.header?.value || ((token) => `Bearer ${token}`);\n return new IdentityAuthInjectorFetchMiddleware(\n options.identityApi,\n matcher,\n headerName,\n headerValue\n );\n }\n /**\n * Returns an array of plugin URL prefixes derived from the static `discovery`\n * configuration, to be used as `urlPrefixAllowlist` option of {@link create}.\n */\n static getDiscoveryUrlPrefixes(config) {\n const endpointConfigs = config.getOptionalConfigArray(\"discovery.endpoints\") || [];\n return endpointConfigs.flatMap((c) => {\n const target = typeof c.get(\"target\") === \"object\" ? c.getString(\"target.external\") : c.getString(\"target\");\n const plugins = c.getStringArray(\"plugins\");\n return plugins.map(\n (pluginId) => target.replace(/\\{\\{\\s*pluginId\\s*\\}\\}/g, pluginId)\n );\n });\n }\n apply(next) {\n return async (input, init) => {\n const request = new Request(input, init);\n const { token } = await this.identityApi.getCredentials();\n if (request.headers.get(this.headerName) || typeof token !== \"string\" || !token || !this.allowUrl(request.url)) {\n return next(input, init);\n }\n request.headers.set(this.headerName, this.headerValue(token));\n return next(request);\n };\n }\n}\nfunction buildMatcher(options) {\n if (options.allowUrl) {\n return options.allowUrl;\n } else if (options.urlPrefixAllowlist) {\n return buildPrefixMatcher(options.urlPrefixAllowlist);\n } else if (options.config) {\n return buildPrefixMatcher([\n options.config.getString(\"backend.baseUrl\"),\n ...IdentityAuthInjectorFetchMiddleware.getDiscoveryUrlPrefixes(\n options.config\n )\n ]);\n }\n return () => false;\n}\nfunction buildPrefixMatcher(prefixes) {\n const trimmedPrefixes = prefixes.map((prefix) => prefix.replace(/\\/$/, \"\"));\n return (url) => trimmedPrefixes.some(\n (prefix) => url === prefix || url.startsWith(`${prefix}/`)\n );\n}\n\nexport { IdentityAuthInjectorFetchMiddleware };\n//# sourceMappingURL=IdentityAuthInjectorFetchMiddleware.esm.js.map\n","function join(left, right) {\n if (!right || right === \"/\") {\n return left;\n }\n return `${left.replace(/\\/$/, \"\")}/${right.replace(/^\\//, \"\")}`;\n}\nclass PluginProtocolResolverFetchMiddleware {\n constructor(discoveryApi) {\n this.discoveryApi = discoveryApi;\n }\n apply(next) {\n return async (input, init) => {\n const request = new Request(input, init);\n const prefix = \"plugin://\";\n if (!request.url.startsWith(prefix)) {\n return next(input, init);\n }\n const { hostname, pathname, search, hash, username, password } = new URL(\n `http://${request.url.substring(prefix.length)}`\n );\n let base = await this.discoveryApi.getBaseUrl(hostname);\n if (username || password) {\n const baseUrl = new URL(base);\n const authority = `${username}${password ? `:${password}` : \"\"}@`;\n base = `${baseUrl.protocol}//${authority}${baseUrl.host}${baseUrl.pathname}`;\n }\n const target = `${join(base, pathname)}${search}${hash}`;\n return next(\n target,\n typeof input === \"string\" || isUrl(input) ? init : input\n );\n };\n }\n}\nfunction isUrl(a) {\n return typeof a === \"object\" && a?.constructor === URL;\n}\n\nexport { PluginProtocolResolverFetchMiddleware };\n//# sourceMappingURL=PluginProtocolResolverFetchMiddleware.esm.js.map\n","import { IdentityAuthInjectorFetchMiddleware } from './IdentityAuthInjectorFetchMiddleware.esm.js';\nimport { PluginProtocolResolverFetchMiddleware } from './PluginProtocolResolverFetchMiddleware.esm.js';\n\nclass FetchMiddlewares {\n /**\n * Handles translation from `plugin://` URLs to concrete http(s) URLs based on\n * the discovery API.\n *\n * @remarks\n *\n * If the request is for `plugin://catalog/entities?filter=x=y`, the discovery\n * API will be queried for `'catalog'`. If it returned\n * `https://backstage.example.net/api/catalog`, the resulting query would be\n * `https://backstage.example.net/api/catalog/entities?filter=x=y`.\n *\n * If the incoming URL protocol was not `plugin`, the request is just passed\n * through verbatim to the underlying implementation.\n */\n static resolvePluginProtocol(options) {\n return new PluginProtocolResolverFetchMiddleware(options.discoveryApi);\n }\n /**\n * Injects a Backstage token header when the user is signed in.\n *\n * @remarks\n *\n * Per default, an `Authorization: Bearer <token>` is generated. This can be\n * customized using the `header` option.\n *\n * The header injection only happens on allowlisted URLs. Per default, if the\n * `config` option is passed in, the `backend.baseUrl` is allowlisted, unless\n * the `urlPrefixAllowlist` or `allowUrl` options are passed in, in which case\n * they take precedence. If you pass in neither config nor an\n * allowlist/callback, the middleware will have no effect since effectively no\n * request will match the (nonexistent) rules.\n */\n static injectIdentityAuth(options) {\n return IdentityAuthInjectorFetchMiddleware.create(options);\n }\n constructor() {\n }\n}\n\nexport { FetchMiddlewares };\n//# sourceMappingURL=FetchMiddlewares.esm.js.map\n","import { BehaviorSubject } from '../../../lib/subjects.esm.js';\n\nfunction hasScopes(searched, searchFor) {\n for (const scope of searchFor) {\n if (!searched.has(scope)) {\n return false;\n }\n }\n return true;\n}\nfunction joinScopes(scopes, ...moreScopess) {\n const result = new Set(scopes);\n for (const moreScopes of moreScopess) {\n for (const scope of moreScopes) {\n result.add(scope);\n }\n }\n return result;\n}\nclass OAuthPendingRequests {\n requests = [];\n subject = new BehaviorSubject(\n this.getCurrentPending()\n );\n request(scopes) {\n return new Promise((resolve, reject) => {\n this.requests.push({ scopes, resolve, reject });\n this.subject.next(this.getCurrentPending());\n });\n }\n resolve(scopes, result) {\n this.requests = this.requests.filter((request) => {\n if (hasScopes(scopes, request.scopes)) {\n request.resolve(result);\n return false;\n }\n return true;\n });\n this.subject.next(this.getCurrentPending());\n }\n reject(error) {\n this.requests.forEach((request) => request.reject(error));\n this.requests = [];\n this.subject.next(this.getCurrentPending());\n }\n pending() {\n return this.subject;\n }\n getCurrentPending() {\n const currentScopes = this.requests.length === 0 ? void 0 : this.requests.slice(1).reduce(\n (acc, current) => joinScopes(acc, current.scopes),\n this.requests[0].scopes\n );\n return {\n scopes: currentScopes,\n resolve: (value) => {\n if (currentScopes) {\n this.resolve(currentScopes, value);\n }\n },\n reject: (reason) => {\n if (currentScopes) {\n this.reject(reason);\n }\n }\n };\n }\n}\n\nexport { OAuthPendingRequests, hasScopes, joinScopes };\n//# sourceMappingURL=OAuthPendingRequests.esm.js.map\n","import { OAuthPendingRequests } from './OAuthPendingRequests.esm.js';\nimport { PublishSubject } from '../../../lib/subjects.esm.js';\n\nclass OAuthRequestManager {\n subject = new PublishSubject();\n currentRequests = [];\n handlerCount = 0;\n createAuthRequester(options) {\n const handler = new OAuthPendingRequests();\n const index = this.handlerCount;\n this.handlerCount++;\n handler.pending().subscribe({\n next: (scopeRequest) => {\n const newRequests = this.currentRequests.slice();\n const request = this.makeAuthRequest(scopeRequest, options);\n if (!request) {\n delete newRequests[index];\n } else {\n newRequests[index] = request;\n }\n this.currentRequests = newRequests;\n this.subject.next(newRequests.filter(Boolean));\n }\n });\n return (scopes) => {\n return handler.request(scopes);\n };\n }\n // Converts the pending request and popup options into a popup request that we can forward to subscribers.\n makeAuthRequest(request, options) {\n const { scopes } = request;\n if (!scopes) {\n return void 0;\n }\n return {\n provider: options.provider,\n trigger: async () => {\n const result = await options.onAuthRequest(scopes);\n request.resolve(result);\n },\n reject: () => {\n const error = new Error(\"Login failed, rejected by user\");\n error.name = \"RejectedError\";\n request.reject(error);\n }\n };\n }\n authRequest$() {\n return this.subject;\n }\n}\n\nexport { OAuthRequestManager };\n//# sourceMappingURL=OAuthRequestManager.esm.js.map\n","import ObservableImpl from 'zen-observable';\n\nconst buckets = /* @__PURE__ */ new Map();\nclass WebStorage {\n constructor(namespace, errorApi) {\n this.namespace = namespace;\n this.errorApi = errorApi;\n }\n static hasSubscribed = false;\n static create(options) {\n return new WebStorage(options.namespace ?? \"\", options.errorApi);\n }\n static addStorageEventListener() {\n window.addEventListener(\"storage\", (event) => {\n for (const [bucketPath, webStorage] of buckets.entries()) {\n if (event.key?.startsWith(bucketPath)) {\n webStorage.handleStorageChange(event.key);\n }\n }\n });\n }\n get(key) {\n return this.snapshot(key).value;\n }\n snapshot(key) {\n let value = void 0;\n let presence = \"absent\";\n try {\n const item = localStorage.getItem(this.getKeyName(key));\n if (item) {\n value = JSON.parse(item, (_key, val) => {\n if (typeof val === \"object\" && val !== null) {\n Object.freeze(val);\n }\n return val;\n });\n presence = \"present\";\n }\n } catch (e) {\n this.errorApi.post(\n new Error(`Error when parsing JSON config from storage for: ${key}`)\n );\n }\n return { key, value, presence };\n }\n forBucket(name) {\n const bucketPath = `${this.namespace}/${name}`;\n if (!buckets.has(bucketPath)) {\n buckets.set(bucketPath, new WebStorage(bucketPath, this.errorApi));\n }\n return buckets.get(bucketPath);\n }\n async set(key, data) {\n localStorage.setItem(this.getKeyName(key), JSON.stringify(data));\n this.notifyChanges(key);\n }\n async remove(key) {\n localStorage.removeItem(this.getKeyName(key));\n this.notifyChanges(key);\n }\n observe$(key) {\n if (!WebStorage.hasSubscribed) {\n WebStorage.addStorageEventListener();\n WebStorage.hasSubscribed = true;\n }\n return this.observable.filter(({ key: messageKey }) => messageKey === key);\n }\n handleStorageChange(eventKey) {\n if (!eventKey?.startsWith(this.namespace)) {\n return;\n }\n const trimmedKey = eventKey?.slice(`${this.namespace}/`.length);\n if (!trimmedKey.includes(\"/\")) {\n this.notifyChanges(decodeURIComponent(trimmedKey));\n }\n }\n getKeyName(key) {\n return `${this.namespace}/${encodeURIComponent(key)}`;\n }\n notifyChanges(key) {\n const snapshot = this.snapshot(key);\n for (const subscription of this.subscribers) {\n subscription.next(snapshot);\n }\n }\n subscribers = /* @__PURE__ */ new Set();\n observable = new ObservableImpl((subscriber) => {\n this.subscribers.add(subscriber);\n return () => {\n this.subscribers.delete(subscriber);\n };\n });\n}\n\nexport { WebStorage, buckets };\n//# sourceMappingURL=WebStorage.esm.js.map\n","import { createContext } from 'react';\n\nconst InternalAppContext = createContext(void 0);\n\nexport { InternalAppContext };\n//# sourceMappingURL=InternalAppContext.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { createRoutesFromChildren, Route } from 'react-router-dom';\n\nfunction isReactRouterBeta() {\n const [obj] = createRoutesFromChildren(/* @__PURE__ */ jsx(Route, { index: true, element: /* @__PURE__ */ jsx(\"div\", {}) }));\n return !obj.index;\n}\n\nexport { isReactRouterBeta };\n//# sourceMappingURL=isReactRouterBeta.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { useEffect } from 'react';\nimport { useLocation, matchRoutes } from 'react-router-dom';\nimport { AnalyticsContext, useAnalytics } from '@backstage/core-plugin-api';\n\nconst getExtensionContext = (pathname, routes) => {\n try {\n const matches = matchRoutes(routes, { pathname });\n const routeMatch = matches?.filter((match) => match?.route.routeRefs?.size > 0).pop();\n const routeObject = routeMatch?.route;\n if (!routeObject) {\n return void 0;\n }\n if (routeObject.path === \"\" && pathname !== \"/\") {\n return void 0;\n }\n let routeRef;\n if (routeObject.routeRefs.size === 1) {\n routeRef = routeObject.routeRefs.values().next().value;\n }\n let plugin;\n if (routeObject.plugins.size === 1) {\n plugin = routeObject.plugins.values().next().value;\n }\n const params = Object.entries(\n routeMatch?.params || {}\n ).reduce((acc, [key, value]) => {\n if (value !== void 0 && key !== \"*\") {\n acc[key] = value;\n }\n return acc;\n }, {});\n return {\n extension: \"App\",\n pluginId: plugin?.getId() || \"root\",\n ...routeRef ? { routeRef: routeRef.id } : {},\n _routeNodeType: routeObject.element,\n params\n };\n } catch {\n return void 0;\n }\n};\nconst TrackNavigation = ({\n pathname,\n search,\n hash,\n attributes\n}) => {\n const analytics = useAnalytics();\n useEffect(() => {\n analytics.captureEvent(\"navigate\", `${pathname}${search}${hash}`, {\n attributes\n });\n }, [analytics, pathname, search, hash, attributes]);\n return null;\n};\nconst RouteTracker = ({\n routeObjects\n}) => {\n const { pathname, search, hash } = useLocation();\n const { params, ...attributes } = getExtensionContext(\n pathname,\n routeObjects\n ) || { params: {} };\n return /* @__PURE__ */ jsx(AnalyticsContext, { attributes, children: /* @__PURE__ */ jsx(\n TrackNavigation,\n {\n pathname,\n search,\n hash,\n attributes: params\n }\n ) });\n};\n\nexport { RouteTracker };\n//# sourceMappingURL=RouteTracker.esm.js.map\n","import { jsxs, jsx, Fragment } from 'react/jsx-runtime';\nimport { useContext, useState } from 'react';\nimport { attachComponentData, useApp, useApi, configApiRef } from '@backstage/core-plugin-api';\nimport { InternalAppContext } from './InternalAppContext.esm.js';\nimport { isReactRouterBeta } from './isReactRouterBeta.esm.js';\nimport { RouteTracker } from '../routing/RouteTracker.esm.js';\nimport { Routes, Route } from 'react-router-dom';\n\nfunction getBasePath(configApi) {\n if (!isReactRouterBeta()) {\n return \"\";\n }\n return readBasePath(configApi);\n}\nfunction readBasePath(configApi) {\n let { pathname } = new URL(\n configApi.getOptionalString(\"app.baseUrl\") ?? \"/\",\n \"http://sample.dev\"\n // baseUrl can be specified as just a path\n );\n pathname = pathname.replace(/\\/*$/, \"\");\n return pathname;\n}\nfunction SignInPageWrapper({\n component: Component,\n appIdentityProxy,\n children\n}) {\n const [identityApi, setIdentityApi] = useState();\n const configApi = useApi(configApiRef);\n const basePath = readBasePath(configApi);\n if (!identityApi) {\n return /* @__PURE__ */ jsx(Component, { onSignInSuccess: setIdentityApi });\n }\n appIdentityProxy.setTarget(identityApi, {\n signOutTargetUrl: basePath || \"/\"\n });\n return /* @__PURE__ */ jsx(Fragment, { children });\n}\nfunction AppRouter(props) {\n const { Router: RouterComponent, SignInPage: SignInPageComponent } = useApp().getComponents();\n const configApi = useApi(configApiRef);\n const basePath = readBasePath(configApi);\n const mountPath = `${basePath}/*`;\n const internalAppContext = useContext(InternalAppContext);\n if (!internalAppContext) {\n throw new Error(\"AppRouter must be rendered within the AppProvider\");\n }\n const { routeObjects, appIdentityProxy } = internalAppContext;\n if (!SignInPageComponent) {\n appIdentityProxy.setTarget(\n {\n getUserId: () => \"guest\",\n getIdToken: async () => void 0,\n getProfile: () => ({\n email: \"guest@example.com\",\n displayName: \"Guest\"\n }),\n getProfileInfo: async () => ({\n email: \"guest@example.com\",\n displayName: \"Guest\"\n }),\n getBackstageIdentity: async () => ({\n type: \"user\",\n userEntityRef: \"user:default/guest\",\n ownershipEntityRefs: [\"user:default/guest\"]\n }),\n getCredentials: async () => ({}),\n signOut: async () => {\n }\n },\n { signOutTargetUrl: basePath || \"/\" }\n );\n if (isReactRouterBeta()) {\n return /* @__PURE__ */ jsxs(RouterComponent, { children: [\n /* @__PURE__ */ jsx(RouteTracker, { routeObjects }),\n /* @__PURE__ */ jsx(Routes, { children: /* @__PURE__ */ jsx(Route, { path: mountPath, element: /* @__PURE__ */ jsx(Fragment, { children: props.children }) }) })\n ] });\n }\n return /* @__PURE__ */ jsxs(RouterComponent, { basename: basePath, children: [\n /* @__PURE__ */ jsx(RouteTracker, { routeObjects }),\n props.children\n ] });\n }\n if (isReactRouterBeta()) {\n return /* @__PURE__ */ jsxs(RouterComponent, { children: [\n /* @__PURE__ */ jsx(RouteTracker, { routeObjects }),\n /* @__PURE__ */ jsx(\n SignInPageWrapper,\n {\n component: SignInPageComponent,\n appIdentityProxy,\n children: /* @__PURE__ */ jsx(Routes, { children: /* @__PURE__ */ jsx(Route, { path: mountPath, element: /* @__PURE__ */ jsx(Fragment, { children: props.children }) }) })\n }\n )\n ] });\n }\n return /* @__PURE__ */ jsxs(RouterComponent, { basename: basePath, children: [\n /* @__PURE__ */ jsx(RouteTracker, { routeObjects }),\n /* @__PURE__ */ jsx(\n SignInPageWrapper,\n {\n component: SignInPageComponent,\n appIdentityProxy,\n children: props.children\n }\n )\n ] });\n}\nattachComponentData(AppRouter, \"core.type\", \"AppRouter\");\n\nexport { AppRouter, getBasePath };\n//# sourceMappingURL=AppRouter.esm.js.map\n","import { createApiRef } from '@backstage/core-plugin-api';\n\nconst appLanguageApiRef = createApiRef({\n id: \"core.applanguage\"\n});\n\nexport { appLanguageApiRef };\n//# sourceMappingURL=AppLanguageApi.esm.js.map\n","import { Children, isValidElement } from 'react';\n\nfunction traverseElementTree(options) {\n const collectors = {};\n for (const name in options.collectors) {\n if (options.collectors.hasOwnProperty(name)) {\n collectors[name] = options.collectors[name]();\n }\n }\n const queue = [\n {\n node: Children.toArray(options.root),\n parent: void 0,\n contexts: {}\n }\n ];\n while (queue.length !== 0) {\n const { node, parent, contexts } = queue.shift();\n Children.forEach(node, (element) => {\n if (!isValidElement(element)) {\n return;\n }\n const nextContexts = {};\n for (const name in collectors) {\n if (collectors.hasOwnProperty(name)) {\n const collector = collectors[name];\n nextContexts[name] = collector.visit(\n collector.accumulator,\n element,\n parent,\n contexts[name]\n );\n }\n }\n for (const discoverer of options.discoverers) {\n const children = discoverer(element);\n if (children) {\n queue.push({\n node: children,\n parent: element,\n contexts: nextContexts\n });\n }\n }\n });\n }\n return Object.fromEntries(\n Object.entries(collectors).map(([name, c]) => [name, c.accumulator])\n );\n}\nfunction createCollector(accumulatorFactory, visit) {\n return () => ({ accumulator: accumulatorFactory(), visit });\n}\nfunction childDiscoverer(element) {\n return element.props?.children;\n}\nfunction routeElementDiscoverer(element) {\n if (element.props?.path && element.props?.element) {\n return element.props?.element;\n }\n return void 0;\n}\n\nexport { childDiscoverer, createCollector, routeElementDiscoverer, traverseElementTree };\n//# sourceMappingURL=traversal.esm.js.map\n","import { getComponentData } from '@backstage/core-plugin-api';\nimport { createCollector } from '../extensions/traversal.esm.js';\n\nconst pluginCollector = createCollector(\n () => /* @__PURE__ */ new Set(),\n (acc, node) => {\n const plugin = getComponentData(node, \"core.plugin\");\n if (plugin) {\n acc.add(plugin);\n }\n }\n);\n\nexport { pluginCollector };\n//# sourceMappingURL=collectors.esm.js.map\n","import { jsx, Fragment } from 'react/jsx-runtime';\nimport { attachComponentData, useApi, featureFlagsApiRef } from '@backstage/core-plugin-api';\n\nconst FeatureFlagged = (props) => {\n const { children } = props;\n const featureFlagApi = useApi(featureFlagsApiRef);\n const isEnabled = \"with\" in props ? featureFlagApi.isActive(props.with) : !featureFlagApi.isActive(props.without);\n return /* @__PURE__ */ jsx(Fragment, { children: isEnabled ? children : null });\n};\nattachComponentData(FeatureFlagged, \"core.featureFlagged\", true);\n\nexport { FeatureFlagged };\n//# sourceMappingURL=FeatureFlagged.esm.js.map\n","import { getComponentData } from '@backstage/core-plugin-api';\nimport { isValidElement, Children } from 'react';\nimport { createCollector } from '../extensions/traversal.esm.js';\nimport { FeatureFlagged } from './FeatureFlagged.esm.js';\n\nconst MATCH_ALL_ROUTE = {\n caseSensitive: false,\n path: \"*\",\n element: \"match-all\",\n // These elements aren't used, so we add in a bit of debug information\n routeRefs: /* @__PURE__ */ new Set(),\n plugins: /* @__PURE__ */ new Set()\n};\nfunction stringifyNode(node) {\n const anyNode = node;\n if (anyNode?.type) {\n return anyNode.type.displayName ?? anyNode.type.name ?? String(anyNode.type);\n }\n return String(anyNode);\n}\nconst pluginSet = (plugin) => {\n const set = /* @__PURE__ */ new Set();\n if (plugin) {\n set.add(plugin);\n }\n return set;\n};\nfunction collectSubTree(node, entries = new Array()) {\n Children.forEach(node, (element) => {\n if (!isValidElement(element)) {\n return;\n }\n const routeRef = getComponentData(element, \"core.mountPoint\");\n if (routeRef) {\n const plugin = getComponentData(element, \"core.plugin\");\n entries.push({ routeRef, plugin });\n }\n collectSubTree(element.props.children, entries);\n });\n return entries;\n}\nconst routingV2Collector = createCollector(\n () => ({\n paths: /* @__PURE__ */ new Map(),\n parents: /* @__PURE__ */ new Map(),\n objects: new Array()\n }),\n (acc, node, parent, ctx) => {\n if (ctx?.isElementAncestor) {\n return ctx;\n }\n if (parent?.props.element === node) {\n return { ...ctx, isElementAncestor: true };\n }\n const pathProp = node.props?.path;\n const mountPoint = getComponentData(node, \"core.mountPoint\");\n if (mountPoint && pathProp) {\n throw new Error(\n `Path property may not be set directly on a routable extension \"${stringifyNode(\n node\n )}\"`\n );\n }\n const parentChildren = ctx?.obj?.children ?? acc.objects;\n if (pathProp !== void 0) {\n if (typeof pathProp !== \"string\") {\n throw new Error(\n `Element path must be a string at \"${stringifyNode(node)}\"`\n );\n }\n const path = pathProp.startsWith(\"/\") ? pathProp.slice(1) : pathProp;\n const elementProp = node.props.element;\n if (getComponentData(node, \"core.gatherMountPoints\")) {\n if (elementProp) {\n throw new Error(\n `Mount point gatherers may not have an element prop \"${stringifyNode(\n node\n )}\"`\n );\n }\n const newObj = {\n path,\n element: \"gathered\",\n routeRefs: /* @__PURE__ */ new Set(),\n caseSensitive: Boolean(node.props?.caseSensitive),\n children: [MATCH_ALL_ROUTE],\n plugins: /* @__PURE__ */ new Set()\n };\n parentChildren.push(newObj);\n return {\n obj: newObj,\n gatherPath: path,\n routeRef: ctx?.routeRef,\n gatherRouteRef: ctx?.routeRef\n };\n }\n if (elementProp) {\n const [extension, ...others] = collectSubTree(elementProp);\n if (others.length > 0) {\n throw new Error(\n `Route element with path \"${pathProp}\" may not contain multiple routable extensions`\n );\n }\n if (!extension) {\n return ctx;\n }\n const { routeRef, plugin } = extension;\n const newObj = {\n path,\n element: \"mounted\",\n routeRefs: /* @__PURE__ */ new Set([routeRef]),\n caseSensitive: Boolean(node.props?.caseSensitive),\n children: [MATCH_ALL_ROUTE],\n plugins: pluginSet(plugin)\n };\n parentChildren.push(newObj);\n acc.paths.set(routeRef, path);\n acc.parents.set(routeRef, ctx?.routeRef);\n return {\n obj: newObj,\n routeRef: routeRef ?? ctx?.routeRef,\n gatherPath: path,\n gatherRouteRef: ctx?.gatherRouteRef\n };\n }\n }\n if (mountPoint) {\n if (ctx?.gatherPath === void 0) {\n throw new Error(\n `Routable extension \"${stringifyNode(\n node\n )}\" with mount point \"${mountPoint}\" must be assigned a path`\n );\n }\n ctx?.obj?.routeRefs.add(mountPoint);\n const mountPointPlugin = getComponentData(\n node,\n \"core.plugin\"\n );\n if (mountPointPlugin) {\n ctx?.obj?.plugins.add(mountPointPlugin);\n }\n acc.paths.set(mountPoint, ctx.gatherPath);\n acc.parents.set(mountPoint, ctx?.gatherRouteRef);\n return {\n ...ctx,\n routeRef: mountPoint\n };\n }\n return ctx;\n }\n);\nconst routingV1Collector = createCollector(\n () => ({\n paths: /* @__PURE__ */ new Map(),\n parents: /* @__PURE__ */ new Map(),\n objects: new Array()\n }),\n (acc, node, parent, ctx) => {\n if (parent?.props.element === node) {\n return ctx;\n }\n let currentObj = ctx?.obj;\n let currentParentRouteRef = ctx?.routeRef;\n let sticky = ctx?.sticky;\n const path = node.props?.path;\n const parentChildren = currentObj?.children ?? acc.objects;\n const caseSensitive = Boolean(node.props?.caseSensitive);\n let currentCtxPath = ctx?.path;\n if (getComponentData(node, \"core.gatherMountPoints\")) {\n if (!path) {\n throw new Error(\"Mount point gatherer must have a path\");\n }\n currentCtxPath = path;\n }\n const element = node.props?.element;\n let routeRef = getComponentData(node, \"core.mountPoint\");\n if (!routeRef && isValidElement(element)) {\n routeRef = getComponentData(element, \"core.mountPoint\");\n }\n if (routeRef) {\n let routePath = path;\n if (currentCtxPath) {\n if (routePath) {\n currentCtxPath = void 0;\n } else {\n routePath = currentCtxPath;\n }\n }\n if (!routePath) {\n throw new Error(\"Mounted routable extension must have a path\");\n }\n acc.paths.set(routeRef, routePath);\n if (currentParentRouteRef && sticky) {\n acc.parents.set(routeRef, currentParentRouteRef);\n if (path) {\n currentParentRouteRef = routeRef;\n sticky = false;\n }\n } else {\n acc.parents.set(routeRef, currentParentRouteRef);\n currentParentRouteRef = routeRef;\n }\n if (path) {\n currentObj = {\n caseSensitive,\n path,\n element: \"mounted\",\n routeRefs: /* @__PURE__ */ new Set([routeRef]),\n children: [MATCH_ALL_ROUTE],\n plugins: pluginSet(\n getComponentData(\n node.props.element,\n \"core.plugin\"\n )\n )\n };\n parentChildren.push(currentObj);\n } else {\n currentObj?.routeRefs.add(routeRef);\n }\n }\n if (getComponentData(node, \"core.gatherMountPoints\")) {\n sticky = true;\n }\n const isGatherer = getComponentData(\n node,\n \"core.gatherMountPoints\"\n );\n if (isGatherer) {\n if (!path) {\n throw new Error(\"Mount point gatherer must have a path\");\n }\n if (!routeRef) {\n currentObj = {\n caseSensitive,\n path,\n element: \"gathered\",\n routeRefs: /* @__PURE__ */ new Set(),\n children: [MATCH_ALL_ROUTE],\n plugins: ctx?.obj?.plugins || /* @__PURE__ */ new Set()\n };\n parentChildren.push(currentObj);\n }\n }\n return {\n obj: currentObj,\n path: currentCtxPath,\n routeRef: currentParentRouteRef,\n sticky\n };\n }\n);\nconst featureFlagCollector = createCollector(\n () => /* @__PURE__ */ new Set(),\n (acc, node) => {\n if (node.type === FeatureFlagged) {\n const props = node.props;\n acc.add(\"with\" in props ? props.with : props.without);\n }\n }\n);\n\nexport { MATCH_ALL_ROUTE, featureFlagCollector, routingV1Collector, routingV2Collector };\n//# sourceMappingURL=collectors.esm.js.map\n","import { getOrCreateGlobalSingleton } from '@backstage/version-bridge';\n\nconst routeRefType = getOrCreateGlobalSingleton(\n \"route-ref-type\",\n () => Symbol(\"route-ref-type\")\n);\nfunction isRouteRef(routeRef) {\n return routeRef[routeRefType] === \"absolute\";\n}\nfunction isSubRouteRef(routeRef) {\n return routeRef[routeRefType] === \"sub\";\n}\nfunction isExternalRouteRef(routeRef) {\n return routeRef[routeRefType] === \"external\";\n}\n\nexport { isExternalRouteRef, isRouteRef, isSubRouteRef, routeRefType };\n//# sourceMappingURL=types.esm.js.map\n","function joinPaths(...paths) {\n const normalized = paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n if (normalized !== \"/\" && normalized.endsWith(\"/\")) {\n return normalized.slice(0, -1);\n }\n return normalized;\n}\n\nexport { joinPaths };\n//# sourceMappingURL=helpers.esm.js.map\n","import { generatePath, matchRoutes } from 'react-router-dom';\nimport { isRouteRef, isSubRouteRef, isExternalRouteRef, routeRefType } from './types.esm.js';\nimport { joinPaths } from './helpers.esm.js';\nimport mapValues from 'lodash/mapValues';\n\nfunction resolveTargetRef(anyRouteRef, routePaths, routeBindings) {\n let targetRef;\n let subRoutePath = \"\";\n if (isRouteRef(anyRouteRef)) {\n targetRef = anyRouteRef;\n } else if (isSubRouteRef(anyRouteRef)) {\n targetRef = anyRouteRef.parent;\n subRoutePath = anyRouteRef.path;\n } else if (isExternalRouteRef(anyRouteRef)) {\n const resolvedRoute = routeBindings.get(anyRouteRef);\n if (!resolvedRoute) {\n return [void 0, \"\"];\n }\n if (isRouteRef(resolvedRoute)) {\n targetRef = resolvedRoute;\n } else if (isSubRouteRef(resolvedRoute)) {\n targetRef = resolvedRoute.parent;\n subRoutePath = resolvedRoute.path;\n } else {\n throw new Error(\n `ExternalRouteRef was bound to invalid target, ${resolvedRoute}`\n );\n }\n } else if (anyRouteRef[routeRefType]) {\n throw new Error(\n `Unknown or invalid route ref type, ${anyRouteRef[routeRefType]}`\n );\n } else {\n throw new Error(`Unknown object passed to useRouteRef, got ${anyRouteRef}`);\n }\n if (!targetRef) {\n return [void 0, \"\"];\n }\n const resolvedPath = routePaths.get(targetRef);\n if (resolvedPath === void 0) {\n return [void 0, \"\"];\n }\n const targetPath = joinPaths(resolvedPath, subRoutePath);\n return [targetRef, targetPath];\n}\nfunction resolveBasePath(targetRef, sourceLocation, routePaths, routeParents, routeObjects) {\n const match = matchRoutes(routeObjects, sourceLocation) ?? [];\n const refDiffList = Array();\n let matchIndex = -1;\n for (let targetSearchRef = targetRef; targetSearchRef; targetSearchRef = routeParents.get(targetSearchRef)) {\n matchIndex = match.findIndex(\n (m) => m.route.routeRefs.has(targetSearchRef)\n );\n if (matchIndex !== -1) {\n break;\n }\n refDiffList.unshift(targetSearchRef);\n }\n if (refDiffList.length === 0) {\n matchIndex -= 1;\n }\n const parentPath = matchIndex === -1 ? \"\" : match[matchIndex].pathname;\n const diffPaths = refDiffList.slice(0, -1).map((ref) => {\n const path = routePaths.get(ref);\n if (path === void 0) {\n throw new Error(`No path for ${ref}`);\n }\n if (path.includes(\":\")) {\n throw new Error(\n `Cannot route to ${targetRef} with parent ${ref} as it has parameters`\n );\n }\n return path;\n });\n return `${joinPaths(parentPath, ...diffPaths)}/`;\n}\nclass RouteResolver {\n constructor(routePaths, routeParents, routeObjects, routeBindings, appBasePath) {\n this.routePaths = routePaths;\n this.routeParents = routeParents;\n this.routeObjects = routeObjects;\n this.routeBindings = routeBindings;\n this.appBasePath = appBasePath;\n }\n resolve(anyRouteRef, sourceLocation) {\n const [targetRef, targetPath] = resolveTargetRef(\n anyRouteRef,\n this.routePaths,\n this.routeBindings\n );\n if (!targetRef) {\n return void 0;\n }\n let relativeSourceLocation;\n if (typeof sourceLocation === \"string\") {\n relativeSourceLocation = this.trimPath(sourceLocation);\n } else if (sourceLocation.pathname) {\n relativeSourceLocation = {\n ...sourceLocation,\n pathname: this.trimPath(sourceLocation.pathname)\n };\n } else {\n relativeSourceLocation = sourceLocation;\n }\n const basePath = this.appBasePath + resolveBasePath(\n targetRef,\n relativeSourceLocation,\n this.routePaths,\n this.routeParents,\n this.routeObjects\n );\n const routeFunc = (...[params]) => {\n const encodedParams = params && mapValues(params, (value) => {\n if (typeof value === \"string\") {\n return value.replaceAll(/[&?#;\\/]/g, (c) => encodeURIComponent(c));\n }\n return value;\n });\n return joinPaths(basePath, generatePath(targetPath, encodedParams));\n };\n return routeFunc;\n }\n trimPath(targetPath) {\n if (!targetPath) {\n return targetPath;\n }\n if (targetPath.startsWith(this.appBasePath)) {\n return targetPath.slice(this.appBasePath.length);\n }\n return targetPath;\n }\n}\n\nexport { RouteResolver };\n//# sourceMappingURL=RouteResolver.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { createVersionedContext, createVersionedValueMap } from '@backstage/version-bridge';\nimport { RouteResolver } from './RouteResolver.esm.js';\n\nconst RoutingContext = createVersionedContext(\n \"routing-context\"\n);\nconst RoutingProvider = ({\n routePaths,\n routeParents,\n routeObjects,\n routeBindings,\n basePath = \"\",\n children\n}) => {\n const resolver = new RouteResolver(\n routePaths,\n routeParents,\n routeObjects,\n routeBindings,\n basePath\n );\n const versionedValue = createVersionedValueMap({ 1: resolver });\n return /* @__PURE__ */ jsx(RoutingContext.Provider, { value: versionedValue, children });\n};\n\nexport { RoutingProvider };\n//# sourceMappingURL=RoutingProvider.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { createVersionedContext, createVersionedValueMap } from '@backstage/version-bridge';\n\nconst AppContext = createVersionedContext(\"app-context\");\nconst AppContextProvider = ({\n appContext,\n children\n}) => {\n const versionedValue = createVersionedValueMap({ 1: appContext });\n return /* @__PURE__ */ jsx(AppContext.Provider, { value: versionedValue, children });\n};\n\nexport { AppContextProvider };\n//# sourceMappingURL=AppContext.esm.js.map\n","import { startCookieAuthRefresh } from './startCookieAuthRefresh.esm.js';\n\nfunction mkError(thing) {\n return new Error(\n `Tried to access IdentityApi ${thing} before app was loaded`\n );\n}\nfunction logDeprecation(thing) {\n console.warn(\n `WARNING: Call to ${thing} is deprecated and will break in the future`\n );\n}\nclass AppIdentityProxy {\n target;\n waitForTarget;\n resolveTarget = () => {\n };\n signOutTargetUrl = \"/\";\n #cookieAuthSignOut;\n constructor() {\n this.waitForTarget = new Promise((resolve) => {\n this.resolveTarget = resolve;\n });\n }\n // This is called by the app manager once the sign-in page provides us with an implementation\n setTarget(identityApi, targetOptions) {\n this.target = identityApi;\n this.signOutTargetUrl = targetOptions.signOutTargetUrl;\n this.resolveTarget(identityApi);\n }\n getUserId() {\n if (!this.target) {\n throw mkError(\"getUserId\");\n }\n if (!this.target.getUserId) {\n throw new Error(\"IdentityApi does not implement getUserId\");\n }\n logDeprecation(\"getUserId\");\n return this.target.getUserId();\n }\n getProfile() {\n if (!this.target) {\n throw mkError(\"getProfile\");\n }\n if (!this.target.getProfile) {\n throw new Error(\"IdentityApi does not implement getProfile\");\n }\n logDeprecation(\"getProfile\");\n return this.target.getProfile();\n }\n async getProfileInfo() {\n return this.waitForTarget.then((target) => target.getProfileInfo());\n }\n async getBackstageIdentity() {\n const identity = await this.waitForTarget.then(\n (target) => target.getBackstageIdentity()\n );\n if (!identity.userEntityRef.match(/^.*:.*\\/.*$/)) {\n console.warn(\n `WARNING: The App IdentityApi provided an invalid userEntityRef, '${identity.userEntityRef}'. It must be a full Entity Reference of the form '<kind>:<namespace>/<name>'.`\n );\n }\n return identity;\n }\n async getCredentials() {\n return this.waitForTarget.then((target) => target.getCredentials());\n }\n async getIdToken() {\n return this.waitForTarget.then((target) => {\n if (!target.getIdToken) {\n throw new Error(\"IdentityApi does not implement getIdToken\");\n }\n logDeprecation(\"getIdToken\");\n return target.getIdToken();\n });\n }\n async signOut() {\n await this.waitForTarget.then((target) => target.signOut());\n await this.#cookieAuthSignOut?.();\n window.location.href = this.signOutTargetUrl;\n }\n enableCookieAuth(ctx) {\n if (this.#cookieAuthSignOut) {\n return;\n }\n const stopRefresh = startCookieAuthRefresh(ctx);\n this.#cookieAuthSignOut = async () => {\n stopRefresh();\n const appBaseUrl = await ctx.discoveryApi.getBaseUrl(\"app\");\n try {\n await fetch(`${appBaseUrl}/.backstage/auth/v1/cookie`, {\n method: \"DELETE\",\n credentials: \"include\"\n });\n } catch {\n }\n };\n }\n}\n\nexport { AppIdentityProxy };\n//# sourceMappingURL=AppIdentityProxy.esm.js.map\n","const PLUGIN_ID = \"app\";\nconst CHANNEL_ID = `${PLUGIN_ID}-auth-cookie-expires-at`;\nconst MIN_BASE_DELAY_MS = 5 * 6e4;\nconst ERROR_BACKOFF_START = 5e3;\nconst ERROR_BACKOFF_FACTOR = 2;\nconst ERROR_BACKOFF_MAX = 5 * 6e4;\nfunction startCookieAuthRefresh({\n discoveryApi,\n fetchApi,\n errorApi\n}) {\n let stopped = false;\n let timeout;\n let firstError = true;\n let errorBackoff = ERROR_BACKOFF_START;\n const channel = \"BroadcastChannel\" in window ? new BroadcastChannel(CHANNEL_ID) : void 0;\n const getDelay = (expiresAt) => {\n const margin = (1 + 3 * Math.random()) * 6e4;\n const delay = Math.max(expiresAt - Date.now(), MIN_BASE_DELAY_MS) - margin;\n return delay;\n };\n const refresh = async () => {\n try {\n const baseUrl = await discoveryApi.getBaseUrl(PLUGIN_ID);\n const requestUrl = `${baseUrl}/.backstage/auth/v1/cookie`;\n const res = await fetchApi.fetch(requestUrl, {\n credentials: \"include\"\n });\n if (!res.ok) {\n throw new Error(\n `Request failed with status ${res.status} ${res.statusText}, see request towards ${requestUrl} for more details`\n );\n }\n const data = await res.json();\n if (!data.expiresAt) {\n throw new Error(\"No expiration date in response\");\n }\n const expiresAt = Date.parse(data.expiresAt);\n if (Number.isNaN(expiresAt)) {\n throw new Error(\"Invalid expiration date in response\");\n }\n firstError = true;\n channel?.postMessage({\n action: \"COOKIE_REFRESH_SUCCESS\",\n payload: { expiresAt: new Date(expiresAt).toISOString() }\n });\n scheduleRefresh(getDelay(expiresAt));\n } catch (error) {\n if (firstError) {\n firstError = false;\n errorBackoff = ERROR_BACKOFF_START;\n } else {\n errorBackoff = Math.min(\n ERROR_BACKOFF_MAX,\n errorBackoff * ERROR_BACKOFF_FACTOR\n );\n console.error(\"Session cookie refresh failed\", error);\n errorApi.post(\n new Error(\n `Session refresh failed, see developer console for details`\n )\n );\n }\n scheduleRefresh(errorBackoff);\n }\n };\n const onMessage = (event) => {\n const { data } = event;\n if (data === null || typeof data !== \"object\") {\n return;\n }\n if (\"action\" in data && data.action === \"COOKIE_REFRESH_SUCCESS\") {\n const expiresAt = Date.parse(data.payload.expiresAt);\n if (Number.isNaN(expiresAt)) {\n console.warn(\n \"Received invalid expiration from session refresh channel\"\n );\n return;\n }\n scheduleRefresh(getDelay(expiresAt));\n }\n };\n function scheduleRefresh(delayMs) {\n if (stopped) {\n return;\n }\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(refresh, delayMs);\n }\n channel?.addEventListener(\"message\", onMessage);\n refresh();\n return () => {\n stopped = true;\n if (timeout) {\n clearTimeout(timeout);\n }\n channel?.removeEventListener(\"message\", onMessage);\n channel?.close();\n };\n}\n\nexport { startCookieAuthRefresh };\n//# sourceMappingURL=startCookieAuthRefresh.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { useMemo, useState, useEffect } from 'react';\nimport { useApi, appThemeApiRef } from '@backstage/core-plugin-api';\nimport useObservable from 'react-use/esm/useObservable';\n\nfunction resolveTheme(themeId, shouldPreferDark, themes) {\n if (themeId !== void 0) {\n const selectedTheme = themes.find((theme) => theme.id === themeId);\n if (selectedTheme) {\n return selectedTheme;\n }\n }\n if (shouldPreferDark) {\n const darkTheme = themes.find((theme) => theme.variant === \"dark\");\n if (darkTheme) {\n return darkTheme;\n }\n }\n const lightTheme = themes.find((theme) => theme.variant === \"light\");\n if (lightTheme) {\n return lightTheme;\n }\n return themes[0];\n}\nconst useShouldPreferDarkTheme = () => {\n const mediaQuery = useMemo(\n () => window.matchMedia(\"(prefers-color-scheme: dark)\"),\n []\n );\n const [shouldPreferDark, setPrefersDark] = useState(mediaQuery.matches);\n useEffect(() => {\n const listener = (event) => {\n setPrefersDark(event.matches);\n };\n mediaQuery.addListener(listener);\n return () => {\n mediaQuery.removeListener(listener);\n };\n }, [mediaQuery]);\n return shouldPreferDark;\n};\nfunction AppThemeProvider({ children }) {\n const appThemeApi = useApi(appThemeApiRef);\n const themeId = useObservable(\n appThemeApi.activeThemeId$(),\n appThemeApi.getActiveThemeId()\n );\n const shouldPreferDark = Boolean(window.matchMedia) ? useShouldPreferDarkTheme() : false;\n const appTheme = resolveTheme(\n themeId,\n shouldPreferDark,\n appThemeApi.getInstalledThemes()\n );\n if (!appTheme) {\n throw new Error(\"App has no themes\");\n }\n return /* @__PURE__ */ jsx(appTheme.Provider, { children });\n}\n\nexport { AppThemeProvider };\n//# sourceMappingURL=AppThemeProvider.esm.js.map\n","const defaultConfigLoader = async () => defaultConfigLoaderSync();\nfunction defaultConfigLoaderSync(runtimeConfigJson = \"__APP_INJECTED_RUNTIME_CONFIG__\") {\n const configs = new Array();\n const staticConfig = process.env.APP_CONFIG;\n if (staticConfig) {\n if (!Array.isArray(staticConfig)) {\n throw new Error(\"Static configuration has invalid format\");\n }\n configs.push(...staticConfig);\n }\n const configScripts = document.querySelectorAll(\n 'script[type=\"backstage.io/config\"]'\n );\n if (configScripts.length > 0) {\n for (const el of configScripts) {\n try {\n const content = el.textContent;\n if (!content) {\n throw new Error(\"tag is empty\");\n }\n let data;\n try {\n data = JSON.parse(content);\n } catch (error) {\n throw new Error(`failed to parse config; ${error}`);\n }\n if (!Array.isArray(data)) {\n throw new Error(\"data is not an array\");\n }\n configs.push(...data);\n } catch (error) {\n throw new Error(\n `Failed to load config from script tag, ${error.message}`\n );\n }\n }\n } else if (runtimeConfigJson !== // Avoiding this string also being replaced at runtime\n \"__app_injected_runtime_config__\".toLocaleUpperCase(\"en-US\")) {\n try {\n const data = JSON.parse(runtimeConfigJson);\n if (Array.isArray(data)) {\n configs.push(...data);\n } else {\n configs.push({ data, context: \"env\" });\n }\n } catch (error) {\n throw new Error(`Failed to load runtime configuration, ${error}`);\n }\n }\n const windowAppConfig = window.__APP_CONFIG__;\n if (windowAppConfig) {\n configs.push({\n context: \"window\",\n data: windowAppConfig\n });\n }\n return configs;\n}\n\nexport { defaultConfigLoader, defaultConfigLoaderSync };\n//# sourceMappingURL=defaultConfigLoader.esm.js.map\n","class ApiRegistryBuilder {\n apis = [];\n add(api, impl) {\n this.apis.push([api.id, impl]);\n return impl;\n }\n build() {\n return new ApiRegistry(new Map(this.apis));\n }\n}\nclass ApiRegistry {\n constructor(apis) {\n this.apis = apis;\n }\n static builder() {\n return new ApiRegistryBuilder();\n }\n /**\n * Creates a new ApiRegistry with a list of API implementations.\n *\n * @param apis - A list of pairs mapping an ApiRef to its respective implementation\n */\n static from(apis) {\n return new ApiRegistry(new Map(apis.map(([api, impl]) => [api.id, impl])));\n }\n /**\n * Creates a new ApiRegistry with a single API implementation.\n *\n * @param api - ApiRef for the API to add\n * @param impl - Implementation of the API to add\n */\n static with(api, impl) {\n return new ApiRegistry(/* @__PURE__ */ new Map([[api.id, impl]]));\n }\n /**\n * Returns a new ApiRegistry with the provided API added to the existing ones.\n *\n * @param api - ApiRef for the API to add\n * @param impl - Implementation of the API to add\n */\n with(api, impl) {\n return new ApiRegistry(new Map([...this.apis, [api.id, impl]]));\n }\n get(api) {\n return this.apis.get(api.id);\n }\n}\n\nexport { ApiRegistry };\n//# sourceMappingURL=ApiRegistry.esm.js.map\n","function collectRouteIds(plugins) {\n const routesById = /* @__PURE__ */ new Map();\n const externalRoutesById = /* @__PURE__ */ new Map();\n for (const plugin of plugins) {\n for (const [name, ref] of Object.entries(plugin.routes ?? {})) {\n const refId = `${plugin.getId()}.${name}`;\n if (routesById.has(refId)) {\n throw new Error(`Unexpected duplicate route '${refId}'`);\n }\n routesById.set(refId, ref);\n }\n for (const [name, ref] of Object.entries(plugin.externalRoutes ?? {})) {\n const refId = `${plugin.getId()}.${name}`;\n if (externalRoutesById.has(refId)) {\n throw new Error(`Unexpected duplicate external route '${refId}'`);\n }\n externalRoutesById.set(refId, ref);\n }\n }\n return { routes: routesById, externalRoutes: externalRoutesById };\n}\nfunction resolveRouteBindings(bindRoutes, config, plugins) {\n const routesById = collectRouteIds(plugins);\n const result = /* @__PURE__ */ new Map();\n const disabledExternalRefs = /* @__PURE__ */ new Set();\n if (bindRoutes) {\n const bind = (externalRoutes, targetRoutes) => {\n for (const [key, value] of Object.entries(targetRoutes)) {\n const externalRoute = externalRoutes[key];\n if (!externalRoute) {\n throw new Error(`Key ${key} is not an existing external route`);\n }\n if (!value && !externalRoute.optional) {\n throw new Error(\n `External route ${key} is required but was ${value === false ? \"disabled\" : \"not provided\"}`\n );\n }\n if (value) {\n result.set(externalRoute, value);\n } else if (value === false) {\n disabledExternalRefs.add(externalRoute);\n }\n }\n };\n bindRoutes({ bind });\n }\n const bindings = config.getOptionalConfig(\"app.routes.bindings\")?.get();\n if (bindings) {\n for (const [externalRefId, targetRefId] of Object.entries(bindings)) {\n if (!isValidTargetRefId(targetRefId)) {\n throw new Error(\n `Invalid config at app.routes.bindings['${externalRefId}'], value must be a non-empty string or false`\n );\n }\n const externalRef = routesById.externalRoutes.get(externalRefId);\n if (!externalRef) {\n throw new Error(\n `Invalid config at app.routes.bindings, '${externalRefId}' is not a valid external route`\n );\n }\n if (result.has(externalRef) || disabledExternalRefs.has(externalRef)) {\n continue;\n }\n if (targetRefId === false) {\n disabledExternalRefs.add(externalRef);\n } else {\n const targetRef = routesById.routes.get(targetRefId);\n if (!targetRef) {\n throw new Error(\n `Invalid config at app.routes.bindings['${externalRefId}'], '${targetRefId}' is not a valid route`\n );\n }\n result.set(externalRef, targetRef);\n }\n }\n }\n for (const externalRef of routesById.externalRoutes.values()) {\n if (!result.has(externalRef) && !disabledExternalRefs.has(externalRef)) {\n const defaultRefId = \"getDefaultTarget\" in externalRef ? externalRef.getDefaultTarget() : void 0;\n if (defaultRefId) {\n const defaultRef = routesById.routes.get(defaultRefId);\n if (defaultRef) {\n result.set(externalRef, defaultRef);\n }\n }\n }\n }\n return result;\n}\nfunction isValidTargetRefId(value) {\n if (value === false) {\n return true;\n }\n if (typeof value === \"string\" && value) {\n return true;\n }\n return false;\n}\n\nexport { collectRouteIds, resolveRouteBindings };\n//# sourceMappingURL=resolveRouteBindings.esm.js.map\n","import { BehaviorSubject } from '../../../lib/subjects.esm.js';\nimport '@backstage/core-plugin-api';\n\nconst STORAGE_KEY = \"language\";\nconst DEFAULT_LANGUAGE = \"en\";\nclass AppLanguageSelector {\n static create(options) {\n const languages = options?.availableLanguages ?? [DEFAULT_LANGUAGE];\n if (languages.length !== new Set(languages).size) {\n throw new Error(\n `Supported languages may not contain duplicates, got '${languages.join(\n \"', '\"\n )}'`\n );\n }\n const initialLanguage = options?.defaultLanguage ?? DEFAULT_LANGUAGE;\n if (!languages.includes(initialLanguage)) {\n throw new Error(\n `Initial language must be one of the supported languages, got '${initialLanguage}'`\n );\n }\n return new AppLanguageSelector(languages, initialLanguage);\n }\n static createWithStorage(options) {\n const selector = AppLanguageSelector.create(options);\n if (!window.localStorage) {\n return selector;\n }\n const storedLanguage = window.localStorage.getItem(STORAGE_KEY);\n const { languages } = selector.getAvailableLanguages();\n if (storedLanguage && languages.includes(storedLanguage)) {\n selector.setLanguage(storedLanguage);\n }\n selector.language$().subscribe(({ language }) => {\n if (language !== window.localStorage.getItem(STORAGE_KEY)) {\n window.localStorage.setItem(STORAGE_KEY, language);\n }\n });\n window.addEventListener(\"storage\", (event) => {\n if (event.key === STORAGE_KEY) {\n const language = localStorage.getItem(STORAGE_KEY) ?? void 0;\n if (language) {\n selector.setLanguage(language);\n }\n }\n });\n return selector;\n }\n #languages;\n #language;\n #subject;\n constructor(languages, initialLanguage) {\n this.#languages = languages;\n this.#language = initialLanguage;\n this.#subject = new BehaviorSubject({\n language: this.#language\n });\n }\n getAvailableLanguages() {\n return { languages: this.#languages.slice() };\n }\n setLanguage(language) {\n const lng = language ?? DEFAULT_LANGUAGE;\n if (lng === this.#language) {\n return;\n }\n if (lng && !this.#languages.includes(lng)) {\n throw new Error(\n `Failed to change language to '${lng}', available languages are '${this.#languages.join(\n \"', '\"\n )}'`\n );\n }\n this.#language = lng;\n this.#subject.next({ language: lng });\n }\n getLanguage() {\n return { language: this.#language };\n }\n language$() {\n return this.#subject;\n }\n}\n\nexport { AppLanguageSelector, DEFAULT_LANGUAGE };\n//# sourceMappingURL=AppLanguageSelector.esm.js.map\n","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _toArray from '@babel/runtime/helpers/esm/toArray';\n\nfunction ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Logger);\n this.init(concreteLogger, options);\n }\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread$6(_objectSpread$6({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }), this.options));\n }\n }, {\n key: \"clone\",\n value: function clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n }]);\n return Logger;\n}();\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n this.observers = {};\n }\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n '/': '&#x2F;'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && typeof window.navigator.userAgentData === 'undefined' && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\nvar chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n var possibleChars = chars.filter(function (c) {\n return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;\n });\n if (possibleChars.length === 0) return true;\n var r = new RegExp(\"(\".concat(possibleChars.map(function (c) {\n return c === '?' ? '\\\\?' : c;\n }).join('|'), \")\"));\n var matched = !r.test(key);\n if (!matched) {\n var ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n}\nfunction deepFind(obj, path) {\n var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n var paths = path.split(keySeparator);\n var current = obj;\n for (var i = 0; i < paths.length; ++i) {\n if (!current) return undefined;\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n if (current[paths[i]] === undefined) {\n var j = 2;\n var p = paths.slice(i, i + j).join(keySeparator);\n var mix = current[p];\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n if (mix === undefined) return undefined;\n if (mix === null) return null;\n if (path.endsWith(p)) {\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n }\n var joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n current = current[paths[i]];\n }\n return current;\n}\n\nfunction ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$5(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n var _super = _createSuper$3(ResourceStore);\n function ResourceStore(data) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n _classCallCheck(this, ResourceStore);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n _this.data = data || {};\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n if (_this.options.ignoreJSONStructure === undefined) {\n _this.options.ignoreJSONStructure = true;\n }\n return _this;\n }\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n var result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread$5(_objectSpread$5({}, pack), resources);\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread$5(_objectSpread$5({}, {}), this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"hasLanguageSomeTranslations\",\n value: function hasLanguageSomeTranslations(lng) {\n var data = this.getDataByLanguage(lng);\n var n = data && Object.keys(data) || [];\n return !!n.find(function (v) {\n return data[v] && Object.keys(data[v]).length > 0;\n });\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$4(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar checkedLoadedFor = {};\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n var _super = _createSuper$2(Translator);\n function Translator(services) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Translator);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key === undefined || key === null) {\n return false;\n }\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS || [];\n var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n var m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (_typeof(options) === 'object') options = _objectSpread$4({}, options);\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n return {\n res: \"\".concat(namespace).concat(nsSeparator).concat(key),\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace\n };\n }\n return \"\".concat(namespace).concat(nsSeparator).concat(key);\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace\n };\n }\n return key;\n }\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n var r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$4(_objectSpread$4({}, options), {}, {\n ns: namespaces\n })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n if (returnDetails) {\n resolved.res = r;\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread$4(_objectSpread$4({}, options), {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread$4(_objectSpread$4({}, options), {}, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n var send = function send(l, k, specificDefaultValue) {\n var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n _this2.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language, options).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? \"\".concat(namespace, \":\").concat(key) : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n if (returnDetails) {\n resolved.res = res;\n return resolved;\n }\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, _objectSpread$4(_objectSpread$4({}, this.options.interpolation.defaultVariables), options), resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread$4(_objectSpread$4({}, options), {\n interpolation: _objectSpread$4(_objectSpread$4({}, this.options.interpolation), options.interpolation)\n }));\n var skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n var nestBef;\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread$4(_objectSpread$4({}, this.options.interpolation.defaultVariables), data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (!options.lng && this.options.compatibilityAPI !== 'v1' && resolved && resolved.res) options.lng = resolved.usedLng;\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n return null;\n }\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$4({\n i18nResolved: resolved\n }, options) : options, this);\n }\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n var extracted = _this4.extractFromKey(k, options);\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();\n var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKeys = [key];\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);\n var zeroSuffix = \"\".concat(_this4.options.pluralSeparator, \"zero\");\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n var contextKey = \"\".concat(key).concat(_this4.options.contextSeparator).concat(options.context);\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n var possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n }]);\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n return p.join('-');\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n var cleanedLng = _this.formatLanguageCode(code);\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n var lngOnly = _this.getLanguagePartFromCode(code);\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n var addCode = function addCode(c) {\n if (!c) return;\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nvar deprecatedJsonVersions = ['v1', 'v2', 'v3'];\nvar suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, PluralResolver);\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === 'v4') && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n this.rules = createRules();\n }\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(code, {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (_unused) {\n return;\n }\n }\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(function (suffix) {\n return \"\".concat(key).concat(suffix);\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n if (!rule) {\n return [];\n }\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort(function (pluralCategory1, pluralCategory2) {\n return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];\n }).map(function (pluralCategory) {\n return \"\".concat(_this.options.prepend).concat(pluralCategory);\n });\n }\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number, options);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var rule = this.getRule(code, options);\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return \"\".concat(this.options.prepend).concat(rule.select(count));\n }\n return this.getSuffixRetroCompatible(rule, count);\n }\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }, {\n key: \"getSuffixRetroCompatible\",\n value: function getSuffixRetroCompatible(rule, count) {\n var _this2 = this;\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n }, {\n key: \"shouldUseIntlApi\",\n value: function shouldUseIntlApi() {\n return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);\n }\n }]);\n return PluralResolver;\n}();\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction deepFindWithDefaults(data, defaultData, key) {\n var keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n var ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && typeof key === 'string') {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n}\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, Interpolator);\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n this.init(options);\n }\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = deepFindWithDefaults(data, defaultData, key, _this.options.keySeparator, _this.options.ignoreJSONStructure);\n return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: key\n })) : path;\n }\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(deepFindWithDefaults(data, defaultData, k, _this.options.keySeparator, _this.options.ignoreJSONStructure), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: k\n }));\n };\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n var matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(matchedVar, \" for interpolating \").concat(str));\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n var safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n var clonedOptions;\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n var matchedSingleQuotes = optionsString.match(/'/g);\n var matchedDoubleQuotes = optionsString.match(/\"/g);\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n delete clonedOptions.defaultValue;\n return key;\n }\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n clonedOptions = _objectSpread$3({}, options);\n clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== 'string' ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n var doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {\n interpolationkey: match[1].trim()\n }));\n }, value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n }]);\n return Interpolator;\n}();\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction parseFormatStr(formatStr) {\n var formatName = formatStr.toLowerCase().trim();\n var formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n var p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n var optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n var opts = optStr.split(';');\n opts.forEach(function (opt) {\n if (!opt) return;\n var _opt$split = opt.split(':'),\n _opt$split2 = _toArray(_opt$split),\n key = _opt$split2[0],\n rest = _opt$split2.slice(1);\n var val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n return {\n formatName: formatName,\n formatOptions: formatOptions\n };\n}\nfunction createCachedFormatter(fn) {\n var cache = {};\n return function invokeFormatter(val, lng, options) {\n var key = lng + JSON.stringify(options);\n var formatter = cache[key];\n if (!formatter) {\n formatter = fn(lng, options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n}\nvar Formatter = function () {\n function Formatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, Formatter);\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.NumberFormat(lng, _objectSpread$2({}, opt));\n return function (val) {\n return formatter.format(val);\n };\n }),\n currency: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.NumberFormat(lng, _objectSpread$2(_objectSpread$2({}, opt), {}, {\n style: 'currency'\n }));\n return function (val) {\n return formatter.format(val);\n };\n }),\n datetime: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.DateTimeFormat(lng, _objectSpread$2({}, opt));\n return function (val) {\n return formatter.format(val);\n };\n }),\n relativetime: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.RelativeTimeFormat(lng, _objectSpread$2({}, opt));\n return function (val) {\n return formatter.format(val, opt.range || 'day');\n };\n }),\n list: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.ListFormat(lng, _objectSpread$2({}, opt));\n return function (val) {\n return formatter.format(val);\n };\n })\n };\n this.init(options);\n }\n _createClass(Formatter, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n }, {\n key: \"add\",\n value: function add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n }, {\n key: \"addCached\",\n value: function addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n }, {\n key: \"format\",\n value: function format(value, _format, lng) {\n var _this = this;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var formats = _format.split(this.formatSeparator);\n var result = formats.reduce(function (mem, f) {\n var _parseFormatStr = parseFormatStr(f),\n formatName = _parseFormatStr.formatName,\n formatOptions = _parseFormatStr.formatOptions;\n if (_this.formats[formatName]) {\n var formatted = mem;\n try {\n var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = _this.formats[formatName](mem, l, _objectSpread$2(_objectSpread$2(_objectSpread$2({}, formatOptions), options), valOptions));\n } catch (error) {\n _this.logger.warn(error);\n }\n return formatted;\n } else {\n _this.logger.warn(\"there was no format function for \".concat(formatName));\n }\n return mem;\n }, value);\n return result;\n }\n }]);\n return Formatter;\n}();\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n var _super = _createSuper$1(Connector);\n function Connector(backend, store, services) {\n var _this;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n _classCallCheck(this, Connector);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.waitingReads = [];\n _this.maxParallelReads = options.maxParallelReads || 10;\n _this.readingCalls = 0;\n _this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n _this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n _this.state = {};\n _this.queue = [];\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n return _this;\n }\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n var toLoad = {};\n var pending = {};\n var toLoadLanguages = {};\n var toLoadNamespaces = {};\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending: pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = {};\n var loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(function (n) {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng: lng,\n ns: ns,\n fcName: fcName,\n tried: tried,\n wait: wait,\n callback: callback\n });\n return;\n }\n this.readingCalls++;\n var resolver = function resolver(err, data) {\n _this3.readingCalls--;\n if (_this3.waitingReads.length > 0) {\n var next = _this3.waitingReads.shift();\n _this3.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < _this3.maxRetries) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n var fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n var r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(function (data) {\n return resolver(null, data);\n })[\"catch\"](resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n var clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : function () {};\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend && this.backend.create) {\n var opts = _objectSpread$1(_objectSpread$1({}, options), {}, {\n isUpdate: isUpdate\n });\n var fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n var r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(function (data) {\n return clb(null, data);\n })[\"catch\"](clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n}\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(function (mem) {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n var _super = _createSuper(I18n);\n function I18n() {\n var _this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n _classCallCheck(this, I18n);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n bindMemberFunctions(_assertThisInitialized(_this));\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n return _this;\n }\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n var defOpts = get();\n this.options = _objectSpread(_objectSpread(_objectSpread({}, defOpts), this.options), transformOptions(options));\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = _objectSpread(_objectSpread({}, defOpts.interpolation), this.options.interpolation);\n }\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n var formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this2.emit.apply(_this2, [event].concat(args));\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n return _this2;\n };\n });\n var deferred = defer();\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n _this2.emit('initialized', _this2.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n var append = function append(lng) {\n if (!lng) return;\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n this.services.backendConnector.load(toLoad, this.options.ns, function (e) {\n if (!e && !_this3.resolvedLanguage && _this3.language) _this3.setResolvedLanguage(_this3.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n }, {\n key: \"setResolvedLanguage\",\n value: function setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (var li = 0; li < this.languages.length; li++) {\n var lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n var setLngProps = function setLngProps(l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n _this4.resolvedLanguage = undefined;\n _this4.setResolvedLanguage(l);\n };\n var done = function done(err, l) {\n if (l) {\n setLngProps(l);\n _this4.translator.changeLanguage(l);\n _this4.isLanguageChangingTo = undefined;\n _this4.emit('languageChanged', l);\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n var setLng = function setLng(lngs) {\n if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!_this4.language) {\n setLngProps(l);\n }\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector && _this4.services.languageDetector.cacheUserLanguage) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns, keyPrefix) {\n var _this5 = this;\n var fixedT = function fixedT(key, opts) {\n var options;\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread({}, opts);\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n var keySeparator = _this5.options.keySeparator || '.';\n var resultKey;\n if (options.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(function (k) {\n return \"\".concat(options.keyPrefix).concat(keySeparator).concat(k);\n });\n } else {\n resultKey = options.keyPrefix ? \"\".concat(options.keyPrefix).concat(keySeparator).concat(key) : key;\n }\n return _this5.t(resultKey, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n var lng = options.lng || this.resolvedLanguage || this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n var deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n var languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var mergedOptions = _objectSpread(_objectSpread(_objectSpread({}, this.options), options), {\n isClone: true\n });\n var clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n }]);\n return I18n;\n}(EventEmitter);\n_defineProperty(I18n, \"createInstance\", function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n});\nvar instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nvar createInstance = instance.createInstance;\nvar dir = instance.dir;\nvar init = instance.init;\nvar loadResources = instance.loadResources;\nvar reloadResources = instance.reloadResources;\nvar use = instance.use;\nvar changeLanguage = instance.changeLanguage;\nvar getFixedT = instance.getFixedT;\nvar t = instance.t;\nvar exists = instance.exists;\nvar setDefaultNamespace = instance.setDefaultNamespace;\nvar hasLoadedNamespace = instance.hasLoadedNamespace;\nvar loadNamespaces = instance.loadNamespaces;\nvar loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","function toInternalTranslationRef(ref) {\n const r = ref;\n if (r.$$type !== \"@backstage/TranslationRef\") {\n throw new Error(`Invalid translation ref, bad type '${r.$$type}'`);\n }\n if (r.version !== \"v1\") {\n throw new Error(`Invalid translation ref, bad version '${r.version}'`);\n }\n return r;\n}\n\nexport { toInternalTranslationRef };\n//# sourceMappingURL=TranslationRef.esm.js.map\n","import { createInstance } from 'i18next';\nimport ObservableImpl from 'zen-observable';\nimport { toInternalTranslationResource } from '../../../core-plugin-api/src/translation/TranslationResource.esm.js';\nimport { toInternalTranslationRef } from '../../../core-plugin-api/src/translation/TranslationRef.esm.js';\nimport { DEFAULT_LANGUAGE } from '../AppLanguageApi/AppLanguageSelector.esm.js';\nimport { isValidElement, createElement, Fragment } from 'react';\n\nfunction removeNulls(messages) {\n return Object.fromEntries(\n Object.entries(messages).filter(\n (e) => e[1] !== null\n )\n );\n}\nclass ResourceLoader {\n constructor(onLoad) {\n this.onLoad = onLoad;\n }\n /** Loaded resources by loader key */\n #loaded = /* @__PURE__ */ new Set();\n /** Resource loading promises by loader key */\n #loading = /* @__PURE__ */ new Map();\n /** Loaders for each resource language */\n #loaders = /* @__PURE__ */ new Map();\n addTranslationResource(resource) {\n const internalResource = toInternalTranslationResource(resource);\n for (const entry of internalResource.resources) {\n const key = this.#getLoaderKey(entry.language, internalResource.id);\n if (!this.#loaders.has(key)) {\n this.#loaders.set(key, entry.loader);\n }\n }\n }\n #getLoaderKey(language, namespace) {\n return `${language}/${namespace}`;\n }\n needsLoading(language, namespace) {\n const key = this.#getLoaderKey(language, namespace);\n const loader = this.#loaders.get(key);\n if (!loader) {\n return false;\n }\n return !this.#loaded.has(key);\n }\n async load(language, namespace) {\n const key = this.#getLoaderKey(language, namespace);\n const loader = this.#loaders.get(key);\n if (!loader) {\n return;\n }\n if (this.#loaded.has(key)) {\n return;\n }\n const loading = this.#loading.get(key);\n if (loading) {\n await loading;\n return;\n }\n const load = loader().then(\n (result) => {\n this.onLoad({ language, namespace, messages: result.messages });\n this.#loaded.add(key);\n },\n (error) => {\n this.#loaded.add(key);\n throw error;\n }\n );\n this.#loading.set(key, load);\n await load;\n }\n}\nclass JsxInterpolator {\n #setFormatHook;\n #marker;\n #pattern;\n static fromI18n(i18n) {\n const interpolator = i18n.services.interpolator;\n const originalFormat = interpolator.format;\n let formatHook;\n interpolator.format = (value, format, lng, formatOpts) => {\n if (format) {\n return originalFormat(value, format, lng, formatOpts);\n }\n return formatHook?.(value, format, lng, formatOpts) ?? value;\n };\n return new JsxInterpolator(\n // Using a random marker to ensure it can't be misused\n Math.random().toString(36).substring(2, 8),\n (hook) => {\n formatHook = hook;\n }\n );\n }\n constructor(marker, setFormatHook) {\n this.#setFormatHook = setFormatHook;\n this.#marker = marker;\n this.#pattern = new RegExp(`\\\\$${marker}\\\\(([^)]+)\\\\)`);\n }\n wrapT(originalT) {\n return (key, options) => {\n let elementsMap = void 0;\n this.#setFormatHook((value) => {\n if (isValidElement(value)) {\n if (!elementsMap) {\n elementsMap = /* @__PURE__ */ new Map();\n }\n const elementKey = elementsMap.size.toString();\n elementsMap.set(elementKey, value);\n return `$${this.#marker}(${elementKey})`;\n }\n return value;\n });\n const result = originalT(key, options);\n if (!elementsMap) {\n return result;\n }\n const split = result.split(this.#pattern);\n return createElement(\n Fragment,\n null,\n ...split.map((part, index) => {\n if (index % 2 === 0) {\n return part;\n }\n return elementsMap?.get(part);\n }).filter(Boolean)\n );\n };\n }\n}\nclass I18nextTranslationApi {\n static create(options) {\n const { languages } = options.languageApi.getAvailableLanguages();\n const i18n = createInstance({\n fallbackLng: DEFAULT_LANGUAGE,\n supportedLngs: languages,\n interpolation: {\n escapeValue: false,\n // Used for the JsxInterpolator format hook\n alwaysFormat: true\n },\n ns: [],\n defaultNS: false,\n fallbackNS: false,\n // Disable resource loading on init, meaning i18n will be ready to use immediately\n initImmediate: false\n });\n i18n.init();\n if (!i18n.isInitialized) {\n throw new Error(\"i18next was unexpectedly not initialized\");\n }\n const interpolator = JsxInterpolator.fromI18n(i18n);\n const { language: initialLanguage } = options.languageApi.getLanguage();\n if (initialLanguage !== DEFAULT_LANGUAGE) {\n i18n.changeLanguage(initialLanguage);\n }\n const loader = new ResourceLoader((loaded) => {\n i18n.addResourceBundle(\n loaded.language,\n loaded.namespace,\n removeNulls(loaded.messages),\n false,\n // do not merge with existing translations\n true\n // overwrite translations\n );\n });\n const resources = options?.resources || [];\n for (let i = resources.length - 1; i >= 0; i--) {\n const resource = resources[i];\n if (resource.$$type === \"@backstage/TranslationResource\") {\n loader.addTranslationResource(resource);\n } else if (resource.$$type === \"@backstage/TranslationMessages\") {\n i18n.addResourceBundle(\n DEFAULT_LANGUAGE,\n resource.id,\n removeNulls(resource.messages),\n true,\n // merge with existing translations\n false\n // do not overwrite translations\n );\n }\n }\n const instance = new I18nextTranslationApi(\n i18n,\n loader,\n options.languageApi.getLanguage().language,\n interpolator\n );\n options.languageApi.language$().subscribe(({ language }) => {\n instance.#changeLanguage(language);\n });\n return instance;\n }\n #i18n;\n #loader;\n #language;\n #jsxInterpolator;\n /** Keep track of which refs we have registered default resources for */\n #registeredRefs = /* @__PURE__ */ new Set();\n /** Notify observers when language changes */\n #languageChangeListeners = /* @__PURE__ */ new Set();\n constructor(i18n, loader, language, jsxInterpolator) {\n this.#i18n = i18n;\n this.#loader = loader;\n this.#language = language;\n this.#jsxInterpolator = jsxInterpolator;\n }\n getTranslation(translationRef) {\n const internalRef = toInternalTranslationRef(translationRef);\n this.#registerDefaults(internalRef);\n return this.#createSnapshot(internalRef);\n }\n translation$(translationRef) {\n const internalRef = toInternalTranslationRef(translationRef);\n this.#registerDefaults(internalRef);\n return new ObservableImpl((subscriber) => {\n let loadTicket = {};\n const loadResource = () => {\n loadTicket = {};\n const ticket = loadTicket;\n this.#loader.load(this.#language, internalRef.id).then(\n () => {\n if (ticket === loadTicket) {\n const snapshot = this.#createSnapshot(internalRef);\n if (snapshot.ready) {\n subscriber.next(snapshot);\n }\n }\n },\n (error) => {\n if (ticket === loadTicket) {\n subscriber.error(Array.isArray(error) ? error[0] : error);\n }\n }\n );\n };\n const onChange = () => {\n const snapshot = this.#createSnapshot(internalRef);\n if (snapshot.ready) {\n subscriber.next(snapshot);\n } else {\n loadResource();\n }\n };\n if (this.#loader.needsLoading(this.#language, internalRef.id)) {\n loadResource();\n }\n this.#languageChangeListeners.add(onChange);\n return () => {\n this.#languageChangeListeners.delete(onChange);\n };\n });\n }\n #changeLanguage(language) {\n if (this.#language !== language) {\n this.#language = language;\n this.#i18n.changeLanguage(language);\n this.#languageChangeListeners.forEach((listener) => listener());\n }\n }\n #createSnapshot(internalRef) {\n if (this.#loader.needsLoading(this.#language, internalRef.id)) {\n return { ready: false };\n }\n const unwrappedT = this.#i18n.getFixedT(null, internalRef.id);\n const t = this.#jsxInterpolator.wrapT(unwrappedT);\n return {\n ready: true,\n t\n };\n }\n #registerDefaults(internalRef) {\n if (this.#registeredRefs.has(internalRef.id)) {\n return;\n }\n this.#registeredRefs.add(internalRef.id);\n const defaultMessages = internalRef.getDefaultMessages();\n this.#i18n.addResourceBundle(\n DEFAULT_LANGUAGE,\n internalRef.id,\n defaultMessages,\n true,\n // merge with existing translations\n false\n // do not overwrite translations\n );\n const defaultResource = internalRef.getDefaultResource();\n if (defaultResource) {\n this.#loader.addTranslationResource(defaultResource);\n }\n }\n}\n\nexport { I18nextTranslationApi, JsxInterpolator };\n//# sourceMappingURL=I18nextTranslationApi.esm.js.map\n","function toInternalTranslationResource(resource) {\n const r = resource;\n if (r.$$type !== \"@backstage/TranslationResource\") {\n throw new Error(`Invalid translation resource, bad type '${r.$$type}'`);\n }\n if (r.version !== \"v1\") {\n throw new Error(`Invalid translation resource, bad version '${r.version}'`);\n }\n return r;\n}\n\nexport { toInternalTranslationResource };\n//# sourceMappingURL=TranslationResource.esm.js.map\n","import { ConfigReader } from '@backstage/config';\n\nfunction createLocalBaseUrl(fullUrl) {\n const url = new URL(fullUrl);\n url.protocol = document.location.protocol;\n url.hostname = document.location.hostname;\n url.port = document.location.port;\n return url.toString().replace(/\\/$/, \"\");\n}\nfunction overrideBaseUrlConfigs(inputConfigs) {\n const urlConfigReader = ConfigReader.fromConfigs(inputConfigs);\n const appBaseUrl = urlConfigReader.getOptionalString(\"app.baseUrl\");\n const backendBaseUrl = urlConfigReader.getOptionalString(\"backend.baseUrl\");\n let configs = inputConfigs;\n let newBackendBaseUrl = void 0;\n let newAppBaseUrl = void 0;\n if (appBaseUrl && backendBaseUrl) {\n const appOrigin = new URL(appBaseUrl).origin;\n const backendOrigin = new URL(backendBaseUrl).origin;\n if (appOrigin === backendOrigin) {\n const maybeNewBackendBaseUrl = createLocalBaseUrl(backendBaseUrl);\n if (backendBaseUrl !== maybeNewBackendBaseUrl) {\n newBackendBaseUrl = maybeNewBackendBaseUrl;\n }\n }\n }\n if (appBaseUrl) {\n const maybeNewAppBaseUrl = createLocalBaseUrl(appBaseUrl);\n if (appBaseUrl !== maybeNewAppBaseUrl) {\n newAppBaseUrl = maybeNewAppBaseUrl;\n }\n }\n if (newAppBaseUrl || newBackendBaseUrl) {\n configs = configs.concat({\n data: {\n app: newAppBaseUrl && {\n baseUrl: newAppBaseUrl\n },\n backend: newBackendBaseUrl && {\n baseUrl: newBackendBaseUrl\n }\n },\n context: \"relative-resolver\"\n });\n }\n return configs;\n}\n\nexport { overrideBaseUrlConfigs };\n//# sourceMappingURL=overrideBaseUrlConfigs.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { useRef, useMemo, Suspense } from 'react';\nimport useAsync from 'react-use/esm/useAsync';\nimport { ApiProvider } from '../apis/system/ApiProvider.esm.js';\nimport { ApiResolver } from '../apis/system/ApiResolver.esm.js';\nimport { ApiFactoryRegistry } from '../apis/system/ApiFactoryRegistry.esm.js';\nimport 'zen-observable';\nimport { appThemeApiRef, configApiRef, identityApiRef, featureFlagsApiRef, errorApiRef, fetchApiRef, discoveryApiRef } from '@backstage/core-plugin-api';\nimport '../apis/implementations/auth/saml/types.esm.js';\nimport { AppThemeSelector } from '../apis/implementations/AppThemeApi/AppThemeSelector.esm.js';\nimport { ConfigReader } from '@backstage/config';\nimport { LocalStorageFeatureFlags } from '../apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.esm.js';\nimport { appLanguageApiRef, translationApiRef } from '@backstage/core-plugin-api/alpha';\nimport { traverseElementTree, childDiscoverer, routeElementDiscoverer } from '../extensions/traversal.esm.js';\nimport { pluginCollector } from '../plugins/collectors.esm.js';\nimport { featureFlagCollector, routingV1Collector, routingV2Collector } from '../routing/collectors.esm.js';\nimport { RoutingProvider } from '../routing/RoutingProvider.esm.js';\nimport { validateRouteParameters, validateRouteBindings } from '../routing/validation.esm.js';\nimport { AppContextProvider } from './AppContext.esm.js';\nimport { AppIdentityProxy } from '../apis/implementations/IdentityApi/AppIdentityProxy.esm.js';\nimport { AppThemeProvider } from './AppThemeProvider.esm.js';\nimport { defaultConfigLoader } from './defaultConfigLoader.esm.js';\nimport { ApiRegistry } from '../apis/system/ApiRegistry.esm.js';\nimport { resolveRouteBindings } from './resolveRouteBindings.esm.js';\nimport { isReactRouterBeta } from './isReactRouterBeta.esm.js';\nimport { InternalAppContext } from './InternalAppContext.esm.js';\nimport { AppRouter, getBasePath } from './AppRouter.esm.js';\nimport { AppLanguageSelector } from '../apis/implementations/AppLanguageApi/AppLanguageSelector.esm.js';\nimport { I18nextTranslationApi } from '../apis/implementations/TranslationApi/I18nextTranslationApi.esm.js';\nimport { overrideBaseUrlConfigs } from './overrideBaseUrlConfigs.esm.js';\nimport { isProtectedApp } from './isProtectedApp.esm.js';\n\nfunction useConfigLoader(configLoader, components, appThemeApi) {\n const hasConfig = Boolean(configLoader);\n const config = useAsync(configLoader || (() => Promise.resolve([])));\n let noConfigNode = void 0;\n if (hasConfig && config.loading) {\n const { Progress } = components;\n noConfigNode = /* @__PURE__ */ jsx(Progress, {});\n } else if (config.error) {\n const { BootErrorPage } = components;\n noConfigNode = /* @__PURE__ */ jsx(BootErrorPage, { step: \"load-config\", error: config.error });\n }\n const { ThemeProvider = AppThemeProvider } = components;\n if (noConfigNode) {\n return {\n node: /* @__PURE__ */ jsx(ApiProvider, { apis: ApiRegistry.with(appThemeApiRef, appThemeApi), children: /* @__PURE__ */ jsx(ThemeProvider, { children: noConfigNode }) })\n };\n }\n const configReader = ConfigReader.fromConfigs(\n config.value?.length ? overrideBaseUrlConfigs(config.value) : []\n );\n return { api: configReader };\n}\nclass AppContextImpl {\n constructor(app) {\n this.app = app;\n }\n getPlugins() {\n return this.app.getPlugins();\n }\n getSystemIcon(key) {\n return this.app.getSystemIcon(key);\n }\n getSystemIcons() {\n return this.app.getSystemIcons();\n }\n getComponents() {\n return this.app.getComponents();\n }\n}\nclass AppManager {\n apiHolder;\n configApi;\n apis;\n icons;\n plugins;\n featureFlags;\n components;\n themes;\n configLoader;\n defaultApis;\n bindRoutes;\n appLanguageApi;\n translationResources;\n appIdentityProxy = new AppIdentityProxy();\n apiFactoryRegistry;\n constructor(options) {\n this.apis = options.apis ?? [];\n this.icons = options.icons;\n this.plugins = new Set(options.plugins ?? []);\n this.featureFlags = options.featureFlags ?? [];\n this.components = options.components;\n this.themes = options.themes;\n this.configLoader = options.configLoader ?? defaultConfigLoader;\n this.defaultApis = options.defaultApis ?? [];\n this.bindRoutes = options.bindRoutes;\n this.apiFactoryRegistry = new ApiFactoryRegistry();\n this.appLanguageApi = AppLanguageSelector.createWithStorage({\n defaultLanguage: options.__experimentalTranslations?.defaultLanguage,\n availableLanguages: options.__experimentalTranslations?.availableLanguages\n });\n this.translationResources = options.__experimentalTranslations?.resources ?? [];\n }\n getPlugins() {\n return Array.from(this.plugins);\n }\n getSystemIcon(key) {\n return this.icons[key];\n }\n getSystemIcons() {\n return this.icons;\n }\n getComponents() {\n return this.components;\n }\n createRoot(element) {\n const AppProvider = this.getProvider();\n const AppRoot = () => {\n return /* @__PURE__ */ jsx(AppProvider, { children: element });\n };\n return AppRoot;\n }\n #getProviderCalled = false;\n getProvider() {\n if (this.#getProviderCalled) {\n throw new Error(\n \"app.getProvider() or app.createRoot() has already been called, and can only be called once\"\n );\n }\n this.#getProviderCalled = true;\n const appContext = new AppContextImpl(this);\n let routeBindings;\n let routeValidationError = void 0;\n const Provider = ({ children }) => {\n const needsFeatureFlagRegistrationRef = useRef(true);\n const appThemeApi = useMemo(\n () => AppThemeSelector.createWithStorage(this.themes),\n []\n );\n const { routing, featureFlags } = useMemo(() => {\n const usesReactRouterBeta = isReactRouterBeta();\n if (usesReactRouterBeta) {\n console.warn(`\nDEPRECATION WARNING: React Router Beta is deprecated and support for it will be removed in a future release.\n Please migrate to use React Router v6 stable.\n See https://backstage.io/docs/tutorials/react-router-stable-migration\n`);\n }\n const result = traverseElementTree({\n root: children,\n discoverers: [childDiscoverer, routeElementDiscoverer],\n collectors: {\n routing: usesReactRouterBeta ? routingV1Collector : routingV2Collector,\n collectedPlugins: pluginCollector,\n featureFlags: featureFlagCollector\n }\n });\n result.collectedPlugins.forEach((plugin) => this.plugins.add(plugin));\n this.verifyPlugins(this.plugins);\n this.getApiHolder();\n return result;\n }, [children]);\n const loadedConfig = useConfigLoader(\n this.configLoader,\n this.components,\n appThemeApi\n );\n const hasConfigApi = \"api\" in loadedConfig;\n if (hasConfigApi) {\n const { api } = loadedConfig;\n this.configApi = api;\n }\n if (\"node\" in loadedConfig) {\n return loadedConfig.node;\n }\n if (routeValidationError) {\n throw routeValidationError;\n } else if (!routeBindings) {\n try {\n routeBindings = resolveRouteBindings(\n this.bindRoutes,\n loadedConfig.api,\n this.plugins\n );\n validateRouteParameters(routing.paths, routing.parents);\n validateRouteBindings(routeBindings, this.plugins);\n } catch (error) {\n routeValidationError = error;\n throw error;\n }\n }\n if (hasConfigApi && needsFeatureFlagRegistrationRef.current) {\n needsFeatureFlagRegistrationRef.current = false;\n const featureFlagsApi = this.getApiHolder().get(featureFlagsApiRef);\n if (featureFlagsApi) {\n for (const flag of this.featureFlags) {\n featureFlagsApi.registerFlag({\n ...flag,\n pluginId: \"\"\n });\n }\n for (const plugin of this.plugins.values()) {\n if (\"getFeatureFlags\" in plugin) {\n for (const flag of plugin.getFeatureFlags()) {\n featureFlagsApi.registerFlag({\n name: flag.name,\n pluginId: plugin.getId()\n });\n }\n } else {\n for (const output of plugin.output()) {\n if (output.type === \"feature-flag\") {\n featureFlagsApi.registerFlag({\n name: output.name,\n pluginId: plugin.getId()\n });\n }\n }\n }\n }\n const registeredFlags = featureFlagsApi.getRegisteredFlags();\n const flagNames = new Set(registeredFlags.map((f) => f.name));\n for (const name of featureFlags) {\n if (!flagNames.has(name)) {\n featureFlagsApi.registerFlag({ name, pluginId: \"\" });\n }\n }\n }\n }\n const { ThemeProvider = AppThemeProvider, Progress } = this.components;\n const apis = this.getApiHolder();\n if (isProtectedApp()) {\n const errorApi = apis.get(errorApiRef);\n const fetchApi = apis.get(fetchApiRef);\n const discoveryApi = apis.get(discoveryApiRef);\n if (!errorApi || !fetchApi || !discoveryApi) {\n throw new Error(\n \"App is running in protected mode but missing required APIs\"\n );\n }\n this.appIdentityProxy.enableCookieAuth({\n errorApi,\n fetchApi,\n discoveryApi\n });\n }\n return /* @__PURE__ */ jsx(ApiProvider, { apis, children: /* @__PURE__ */ jsx(AppContextProvider, { appContext, children: /* @__PURE__ */ jsx(ThemeProvider, { children: /* @__PURE__ */ jsx(\n RoutingProvider,\n {\n routePaths: routing.paths,\n routeParents: routing.parents,\n routeObjects: routing.objects,\n routeBindings,\n basePath: getBasePath(loadedConfig.api),\n children: /* @__PURE__ */ jsx(\n InternalAppContext.Provider,\n {\n value: {\n routeObjects: routing.objects,\n appIdentityProxy: this.appIdentityProxy\n },\n children: /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(Progress, {}), children })\n }\n )\n }\n ) }) }) });\n };\n return Provider;\n }\n getRouter() {\n return AppRouter;\n }\n getApiHolder() {\n if (this.apiHolder) {\n for (const plugin of this.plugins) {\n for (const factory of plugin.getApis()) {\n if (!this.apiFactoryRegistry.get(factory.api)) {\n this.apiFactoryRegistry.register(\"default\", factory);\n }\n }\n }\n ApiResolver.validateFactories(\n this.apiFactoryRegistry,\n this.apiFactoryRegistry.getAllApis()\n );\n return this.apiHolder;\n }\n this.apiFactoryRegistry.register(\"static\", {\n api: appThemeApiRef,\n deps: {},\n factory: () => AppThemeSelector.createWithStorage(this.themes)\n });\n this.apiFactoryRegistry.register(\"static\", {\n api: configApiRef,\n deps: {},\n factory: () => {\n if (!this.configApi) {\n throw new Error(\n \"Tried to access config API before config was loaded\"\n );\n }\n return this.configApi;\n }\n });\n this.apiFactoryRegistry.register(\"static\", {\n api: identityApiRef,\n deps: {},\n factory: () => this.appIdentityProxy\n });\n this.apiFactoryRegistry.register(\"static\", {\n api: appLanguageApiRef,\n deps: {},\n factory: () => this.appLanguageApi\n });\n this.apiFactoryRegistry.register(\"default\", {\n api: translationApiRef,\n deps: { languageApi: appLanguageApiRef },\n factory: ({ languageApi }) => I18nextTranslationApi.create({\n languageApi,\n resources: this.translationResources\n })\n });\n this.apiFactoryRegistry.register(\"default\", {\n api: featureFlagsApiRef,\n deps: {},\n factory: () => new LocalStorageFeatureFlags()\n });\n for (const factory of this.defaultApis) {\n this.apiFactoryRegistry.register(\"default\", factory);\n }\n for (const plugin of this.plugins) {\n for (const factory of plugin.getApis()) {\n if (!this.apiFactoryRegistry.register(\"default\", factory)) {\n throw new Error(\n `Plugin ${plugin.getId()} tried to register duplicate or forbidden API factory for ${factory.api}`\n );\n }\n }\n }\n for (const factory of this.apis) {\n if (!this.apiFactoryRegistry.register(\"app\", factory)) {\n throw new Error(\n `Duplicate or forbidden API factory for ${factory.api} in app`\n );\n }\n }\n ApiResolver.validateFactories(\n this.apiFactoryRegistry,\n this.apiFactoryRegistry.getAllApis()\n );\n this.apiHolder = new ApiResolver(this.apiFactoryRegistry);\n return this.apiHolder;\n }\n verifyPlugins(plugins) {\n const pluginIds = /* @__PURE__ */ new Set();\n for (const plugin of plugins) {\n const id = plugin.getId();\n if (pluginIds.has(id)) {\n throw new Error(`Duplicate plugin found '${id}'`);\n }\n pluginIds.add(id);\n }\n }\n}\n\nexport { AppManager };\n//# sourceMappingURL=AppManager.esm.js.map\n","import { joinPaths } from './helpers.esm.js';\n\nfunction validateRouteParameters(routePaths, routeParents) {\n const notLeafRoutes = new Set(routeParents.values());\n notLeafRoutes.delete(void 0);\n for (const route of routeParents.keys()) {\n if (notLeafRoutes.has(route)) {\n continue;\n }\n let currentRouteRef = route;\n let fullPath = \"\";\n while (currentRouteRef) {\n const path = routePaths.get(currentRouteRef);\n if (path === void 0) {\n throw new Error(`No path for ${currentRouteRef}`);\n }\n fullPath = joinPaths(path, fullPath);\n currentRouteRef = routeParents.get(currentRouteRef);\n }\n const params = fullPath.match(/:(\\w+)/g);\n if (params) {\n for (let j = 0; j < params.length; j++) {\n for (let i = j + 1; i < params.length; i++) {\n if (params[i] === params[j]) {\n throw new Error(\n `Parameter ${params[i]} is duplicated in path ${fullPath}`\n );\n }\n }\n }\n }\n }\n}\nfunction validateRouteBindings(routeBindings, plugins) {\n for (const plugin of plugins) {\n if (!plugin.externalRoutes) {\n continue;\n }\n for (const [name, externalRouteRef] of Object.entries(\n plugin.externalRoutes\n )) {\n if (externalRouteRef.optional) {\n continue;\n }\n if (!routeBindings.has(externalRouteRef)) {\n throw new Error(\n `External route '${name}' of the '${plugin.getId()}' plugin must be bound to a target route. See https://backstage.io/link?bind-routes for details.`\n );\n }\n }\n }\n}\n\nexport { validateRouteBindings, validateRouteParameters };\n//# sourceMappingURL=validation.esm.js.map\n","function isProtectedApp() {\n const element = document.querySelector('meta[name=\"backstage-app-mode\"]');\n const appMode = element?.getAttribute(\"content\") ?? \"public\";\n return appMode === \"protected\";\n}\n\nexport { isProtectedApp };\n//# sourceMappingURL=isProtectedApp.esm.js.map\n","import { AppManager } from './AppManager.esm.js';\n\nfunction createSpecializedApp(options) {\n return new AppManager(options);\n}\n\nexport { createSpecializedApp };\n//# sourceMappingURL=createSpecializedApp.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { useMemo } from 'react';\nimport { useRoutes } from 'react-router-dom';\nimport { attachComponentData, useApp, useElementFilter } from '@backstage/core-plugin-api';\nimport { isReactRouterBeta } from '../app/isReactRouterBeta.esm.js';\n\nlet warned = false;\nconst FlatRoutes = (props) => {\n const app = useApp();\n const { NotFoundErrorPage } = app.getComponents();\n const isBeta = useMemo(() => isReactRouterBeta(), []);\n const routes = useElementFilter(\n props.children,\n (elements) => elements.getElements().flatMap((child) => {\n let path = child.props.path;\n if (path === \"\") {\n return [];\n }\n path = path?.replace(/\\/\\*$/, \"\") ?? \"/\";\n let element = isBeta ? child : child.props.element;\n if (!isBeta && !element) {\n element = child;\n if (!warned && process.env.NODE_ENV !== \"test\") {\n console.warn(\n \"DEPRECATION WARNING: All elements within <FlatRoutes> must be of type <Route> with an element prop. Existing usages of <Navigate key=[path] to=[to] /> should be replaced with <Route path=[path] element={<Navigate to=[to] />} />.\"\n );\n warned = true;\n }\n }\n return [\n {\n // Each route matches any sub route, except for the explicit root path\n path,\n element,\n children: child.props.children ? [\n // These are the children of each route, which we all add in under a catch-all\n // subroute in order to make them available to `useOutlet`\n {\n path: path === \"/\" ? \"/\" : \"*\",\n // The root path must require an exact match\n element: child.props.children\n }\n ] : void 0\n }\n ];\n }).sort((a, b) => b.path.localeCompare(a.path)).map((obj) => ({ ...obj, path: obj.path === \"/\" ? \"/\" : `${obj.path}/*` }))\n );\n const withNotFound = [\n ...routes,\n {\n path: \"*\",\n element: /* @__PURE__ */ jsx(NotFoundErrorPage, {})\n }\n ];\n return useRoutes(withNotFound);\n};\nattachComponentData(FlatRoutes, \"core.type\", \"FlatRoutes\");\n\nexport { FlatRoutes };\n//# sourceMappingURL=FlatRoutes.esm.js.map\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = require('./lib/Observable.js').Observable;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Observable = void 0;\n\n// === Symbol Support ===\nconst hasSymbol = name => Boolean(Symbol[name]);\n\nconst getSymbol = name => hasSymbol(name) ? Symbol[name] : '@@' + name;\n\nconst SymbolIterator = getSymbol('iterator');\nconst SymbolObservable = getSymbol('observable');\nconst SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n let value = obj[key];\n if (value == null) return undefined;\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n return value;\n}\n\nfunction getSpecies(obj) {\n let ctor = obj.constructor;\n\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n\n if (ctor === null) {\n ctor = undefined;\n }\n }\n\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(() => {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(() => {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n let cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n let unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n let queue = subscription._queue;\n\n if (!queue) {\n return;\n }\n\n subscription._queue = undefined;\n subscription._state = 'ready';\n\n for (let i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n let observer = subscription._observer;\n\n try {\n let m = getMethod(observer, type);\n\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({\n type,\n value\n });\n\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{\n type,\n value\n }];\n enqueue(() => flushSubscription(subscription));\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nclass Subscription {\n constructor(observer, subscriber) {\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n let self = this;\n let subscriptionObserver = {\n get closed() {\n return self._state === 'closed';\n },\n\n next(value) {\n onNotify(self, 'next', value);\n },\n\n error(value) {\n onNotify(self, 'error', value);\n },\n\n complete() {\n onNotify(self, 'complete');\n }\n\n };\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n get closed() {\n return this._state === 'closed';\n }\n\n unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n }\n\n}\n\nclass Observable {\n constructor(subscriber) {\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n this._subscriber = subscriber;\n }\n\n subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n\n return new Subscription(observer, this._subscriber);\n }\n\n forEach(fn) {\n return new Promise((resolve, reject) => {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n let subscription = this.subscribe({\n next(value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n\n error: reject,\n complete: resolve\n });\n });\n }\n\n map(fn) {\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n let C = getSpecies(this);\n return new C(observer => this.subscribe({\n next(value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n\n error(e) {\n observer.error(e);\n },\n\n complete() {\n observer.complete();\n }\n\n }));\n }\n\n filter(fn) {\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n let C = getSpecies(this);\n return new C(observer => this.subscribe({\n next(value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n\n error(e) {\n observer.error(e);\n },\n\n complete() {\n observer.complete();\n }\n\n }));\n }\n\n reduce(fn) {\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n let C = getSpecies(this);\n let hasSeed = arguments.length > 1;\n let hasValue = false;\n let seed = arguments[1];\n let acc = seed;\n return new C(observer => this.subscribe({\n next(value) {\n let first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n\n error(e) {\n observer.error(e);\n },\n\n complete() {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n observer.next(acc);\n observer.complete();\n }\n\n }));\n }\n\n async all() {\n let values = [];\n await this.forEach(value => values.push(value));\n return values;\n }\n\n concat(...sources) {\n let C = getSpecies(this);\n return new C(observer => {\n let subscription;\n let index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next(v) {\n observer.next(v);\n },\n\n error(e) {\n observer.error(e);\n },\n\n complete() {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n\n });\n }\n\n startNext(this);\n return () => {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n }\n\n flatMap(fn) {\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n let C = getSpecies(this);\n return new C(observer => {\n let subscriptions = [];\n let outer = this.subscribe({\n next(value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n let inner = C.from(value).subscribe({\n next(value) {\n observer.next(value);\n },\n\n error(e) {\n observer.error(e);\n },\n\n complete() {\n let i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n\n });\n subscriptions.push(inner);\n },\n\n error(e) {\n observer.error(e);\n },\n\n complete() {\n completeIfDone();\n }\n\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return () => {\n subscriptions.forEach(s => s.unsubscribe());\n outer.unsubscribe();\n };\n });\n }\n\n [SymbolObservable]() {\n return this;\n }\n\n static from(x) {\n let C = typeof this === 'function' ? this : Observable;\n if (x == null) throw new TypeError(x + ' is not an object');\n let method = getMethod(x, SymbolObservable);\n\n if (method) {\n let observable = method.call(x);\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n if (isObservable(observable) && observable.constructor === C) return observable;\n return new C(observer => observable.subscribe(observer));\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n\n if (method) {\n return new C(observer => {\n enqueue(() => {\n if (observer.closed) return;\n\n for (let item of method.call(x)) {\n observer.next(item);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(observer => {\n enqueue(() => {\n if (observer.closed) return;\n\n for (let i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n }\n\n static of(...items) {\n let C = typeof this === 'function' ? this : Observable;\n return new C(observer => {\n enqueue(() => {\n if (observer.closed) return;\n\n for (let i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n\n static get [SymbolSpecies]() {\n return this;\n }\n\n}\n\nexports.Observable = Observable;\nObject.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError\n },\n configurable: true\n});"],"names":["ApiAggregator","holders","constructor","this","get","apiRef","holder","api","ApiContext","createVersionedContext","ApiProvider","props","apis","children","parentHolder","useContext","atVersion","jsx","Provider","value","createVersionedValueMap","propTypes","isRequired","ApiResolver","factories","validateFactories","heap","allDeps","Set","length","shift","factory","dep","Object","values","deps","id","Error","has","add","push","Map","ref","load","loading","impl","includes","loadDeps","set","dependent","impls","key","hasOwnProperty","ScopePriority","ScopePriority2","ApiFactoryRegistry","register","scope","priority","existing","tuple","getAllApis","refs","openLoginPopup","options","Promise","resolve","reject","width","height","left","window","screen","top","origin","URL","url","popup","open","name","targetOrigin","closed","error","messageListener","event","source","data","type","authResult","message","response","done","intervalId","setInterval","errMessage","location","removeEventListener","clearInterval","addEventListener","warned","defaultJoinScopes","scopes","join","DefaultAuthConnector","discoveryApi","environment","provider","joinScopesFunc","authRequester","sessionTransform","enableExperimentalRedirectFlow","popupOptions","configApi","joinScopes","oauthRequestApi","console","warn","getOptionalBoolean","createAuthRequester","onAuthRequest","async","executeRedirect","showPopup","createSession","instantPopup","refreshSession","res","fetch","buildUrl","optional","headers","credentials","catch","ok","statusText","status","authInfo","json","removeSession","method","popupUrl","flow","size","fullscreen","payload","title","href","redirectUrl","path","query","baseUrl","getBaseUrl","queryString","buildQueryString","env","entries","map","encodeURIComponent","filter","Boolean","hasScopes","searched","searchFor","SessionScopeHelper","sessionExistsAndHasScope","session","sessionScopes","getExtendedScope","newScope","defaultScopes","PublishSubject","isClosed","terminatingError","observable","subscriber","complete","subscribers","delete","Symbol","next","forEach","subscribe","onNext","onError","onComplete","observer","BehaviorSubject","currentValue","SessionStateTracker","subject","SessionState","SignedOut","signedIn","setIsSignedIn","isSignedIn","SignedIn","sessionState$","RefreshingAuthSessionManager","connector","helper","sessionScopesFunc","sessionShouldRefreshFunc","stateTracker","refreshPromise","currentSession","sessionShouldRefresh","getSession","alreadyTriedToRefreshSession","refreshedSession","collapsedSessionRefresh","currentScopes","removeLocalSession","newSession","DEFAULT_PROVIDER","icon","OAuth2","createAuthConnector","authConnector","scopeTransform","x","backstageIdentity","providerInfo","idToken","accessToken","normalizeScopes","expiresAt","expiresInSeconds","Date","now","token","identity","create","sessionManager","min","Infinity","Math","getTime","signIn","getAccessToken","signOut","normalizedScopes","getIdToken","getBackstageIdentity","getProfile","profile","scopeList","Array","isArray","split","transformedScopes","GithubAuth","GitlabAuth","SCOPE_PREFIX","GoogleAuth","startsWith","OKTA_OIDC_SCOPES","OKTA_SCOPE_PREFIX","OktaAuth","DirectAuthConnector","email","StaticAuthSessionManager","setSession","AuthSessionStore","manager","storageKey","schema","saveSession","loadSession","localStorage","removeItem","sessionJson","getItem","JSON","parse","_key","__type","__value","e","log","setItem","stringify","from","samlSessionSchema","displayName","picture","userEntityRef","ownershipEntityRefs","SamlAuth","authSessionStore","MicrosoftAuth","oauth2","static","concat","MicrosoftGraphID","microsoftGraph","resourceForScopes","audiences","resourceForScope","aud","audience","groups","match","resourceURI","replace","OIDC_SCOPES","OneLoginAuth","BitbucketAuth","BitbucketServerAuth","AtlassianAuth","VMwareCloudAuth","OpenShiftAuth","AlertApiForwarder","post","alert","alert$","MultipleAnalyticsApi","actualApis","fromApis","captureEvent","analyticsApi","NoOpAnalyticsApi","_event","STORAGE_KEY","AppThemeSelector","themes","createWithStorage","selector","initialThemeId","setActiveThemeId","activeThemeId$","themeId","activeThemeId","getInstalledThemes","slice","getActiveThemeId","CONFIG_KEY_PART_PATTERN","isObject","cloneDeep","fromEntries","k","v","merge","into","fromObj","out","keys","val","typeOf","isNaN","errors","context","typeName","expected","ConfigReader","fallback","prefix","filteredKeys","notifiedFilteredKeys","fromConfigs","configs","reduce","previousReader","deprecatedKeys","reader","description","readValue","localKeys","fallbackKeys","getOptional","fullKey","fallbackValue","getConfig","getOptionalConfig","fallbackConfig","copy","TypeError","getConfigArray","getOptionalConfigArray","readConfigValue","index","obj","getNumber","getOptionalNumber","number","Number","isFinite","getBoolean","valueString","String","trim","test","getString","getOptionalString","getStringArray","getOptionalStringArray","validate","result","keyName","theValue","parts","part","badKey","ERROR_PREFIX","UrlPatternDiscovery","compile","pattern","urlStr","hash","search","endsWith","pluginId","FrontendHostDiscovery","endpoints","defaultEndpoint","fromConfig","config","pathPattern","flatMap","target","discovery","endpoint","ErrorAlerter","alertApi","errorApi","hidden","severity","error$","ErrorApiForwarder","UnhandledErrorForwarder","forward","errorContext","reason","validateFlagName","LocalStorageFeatureFlags","registeredFeatureFlags","flags","registerFlag","flag","getRegisteredFlags","isActive","FeatureFlagState","Active","save","clear","state","states","enabled","jsonStr","createFetchApi","baseImplementation","g","middleware","flat","reverse","m","apply","IdentityAuthInjectorFetchMiddleware","identityApi","allowUrl","headerName","headerValue","matcher","urlPrefixAllowlist","buildPrefixMatcher","getDiscoveryUrlPrefixes","buildMatcher","header","c","input","init","request","Request","getCredentials","prefixes","trimmedPrefixes","some","PluginProtocolResolverFetchMiddleware","hostname","pathname","username","password","substring","base","authority","protocol","host","right","a","FetchMiddlewares","resolvePluginProtocol","injectIdentityAuth","OAuthPendingRequests","requests","getCurrentPending","pending","acc","current","moreScopess","moreScopes","OAuthRequestManager","currentRequests","handlerCount","handler","scopeRequest","newRequests","makeAuthRequest","trigger","authRequest$","buckets","WebStorage","namespace","addStorageEventListener","bucketPath","webStorage","handleStorageChange","snapshot","presence","item","getKeyName","freeze","forBucket","notifyChanges","remove","observe$","hasSubscribed","messageKey","eventKey","trimmedKey","decodeURIComponent","subscription","InternalAppContext","createContext","isReactRouterBeta","createRoutesFromChildren","Route","element","TrackNavigation","attributes","analytics","useAnalytics","useEffect","RouteTracker","routeObjects","useLocation","params","routes","matches","matchRoutes","routeMatch","route","routeRefs","pop","routeObject","routeRef","plugin","plugins","extension","getId","_routeNodeType","getExtensionContext","AnalyticsContext","readBasePath","SignInPageWrapper","component","Component","appIdentityProxy","setIdentityApi","useState","basePath","useApi","configApiRef","setTarget","signOutTargetUrl","Fragment","onSignInSuccess","AppRouter","Router","RouterComponent","SignInPage","SignInPageComponent","useApp","getComponents","mountPath","internalAppContext","jsxs","Routes","basename","getUserId","getProfileInfo","attachComponentData","appLanguageApiRef","createApiRef","createCollector","accumulatorFactory","visit","accumulator","childDiscoverer","routeElementDiscoverer","pluginCollector","node","getComponentData","FeatureFlagged","featureFlagApi","featureFlagsApiRef","isEnabled","with","without","MATCH_ALL_ROUTE","caseSensitive","stringifyNode","anyNode","pluginSet","collectSubTree","Children","isValidElement","routingV2Collector","paths","parents","objects","parent","ctx","isElementAncestor","pathProp","mountPoint","parentChildren","elementProp","newObj","gatherPath","gatherRouteRef","others","mountPointPlugin","routingV1Collector","currentObj","currentParentRouteRef","sticky","currentCtxPath","routePath","featureFlagCollector","routeRefType","getOrCreateGlobalSingleton","isRouteRef","isSubRouteRef","joinPaths","normalized","RouteResolver","routePaths","routeParents","routeBindings","appBasePath","anyRouteRef","sourceLocation","targetRef","targetPath","subRoutePath","resolvedRoute","resolvedPath","resolveTargetRef","relativeSourceLocation","trimPath","refDiffList","matchIndex","targetSearchRef","findIndex","unshift","resolveBasePath","encodedParams","replaceAll","generatePath","RoutingContext","RoutingProvider","resolver","versionedValue","AppContext","AppContextProvider","appContext","mkError","thing","logDeprecation","AppIdentityProxy","waitForTarget","resolveTarget","targetOptions","then","enableCookieAuth","stopRefresh","fetchApi","timeout","stopped","firstError","errorBackoff","channel","BroadcastChannel","getDelay","margin","random","max","refresh","requestUrl","postMessage","action","toISOString","scheduleRefresh","onMessage","delayMs","clearTimeout","setTimeout","close","startCookieAuthRefresh","appBaseUrl","AppThemeProvider","appThemeApi","appThemeApiRef","appTheme","shouldPreferDark","selectedTheme","find","theme","darkTheme","variant","resolveTheme","useObservable","matchMedia","mediaQuery","useMemo","setPrefersDark","listener","addListener","removeListener","useShouldPreferDarkTheme","defaultConfigLoader","runtimeConfigJson","staticConfig","process","APP_CONFIG","configScripts","document","querySelectorAll","el","content","textContent","toLocaleUpperCase","windowAppConfig","__APP_CONFIG__","defaultConfigLoaderSync","ApiRegistryBuilder","build","ApiRegistry","builder","isValidTargetRefId","DEFAULT_LANGUAGE","AppLanguageSelector","languages","availableLanguages","initialLanguage","defaultLanguage","storedLanguage","getAvailableLanguages","setLanguage","language$","language","lng","getLanguage","ownKeys$6","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","_objectSpread$6","i","arguments","getOwnPropertyDescriptors","defineProperties","defineProperty","consoleLogger","args","output","baseLogger","Logger","concreteLogger","undefined","logger","debug","bool","_len","_len2","_key2","_len3","_key3","_len4","_key4","lvl","debugOnly","moduleName","EventEmitter","observers","events","_this","l","defer","rej","promise","makeString","getLastOfPath","Empty","cleanKey","indexOf","canNotTraverseDeeper","stack","prototype","call","setPath","newValue","_getLastOfPath","getPath","_getLastOfPath3","deepExtend","overwrite","prop","regexEscape","str","_entityMap","s","isIE10","navigator","userAgentData","userAgent","chars","deepFind","keySeparator","j","p","mix","joinedPath","ownKeys$5","_objectSpread$5","ResourceStore","_EventEmitter","Derived","hasNativeReflectConstruct","_super","Reflect","construct","sham","Proxy","valueOf","_isNativeReflectConstruct$3","Super","NewTarget","ns","defaultNS","ignoreJSONStructure","splice","silent","addNamespaces","emit","resources","toString","addResource","deep","pack","hasResourceBundle","removeNamespaces","getResource","compatibilityAPI","getDataByLanguage","postProcessor","processors","addPostProcessor","module","handle","translator","processor","ownKeys$4","_objectSpread$4","checkedLoadedFor","Translator","_isNativeReflectConstruct$2","services","t","interpolation","resolved","nsSeparator","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","r","RegExp","matched","ki","looksLikeObjectPath","interpolator","nestingRegexp","lastKey","_this2","overloadTranslationOptionHandler","returnDetails","_this$extractFromKey","extractFromKey","appendNamespaceToCIMode","toLowerCase","usedKey","exactUsedKey","usedLng","usedNS","resUsedKey","resExactUsedKey","resType","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","translate","extendTranslation","usedDefault","needsPluralHandling","count","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValue","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","_this3","defaultVariables","skipInterpolation","nestBef","skipOnVariables","nb","interpolate","na","nest","reset","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","_this4","extracted","fallbackNS","needsZeroSuffixLookup","ordinal","shouldUseIntlApi","needsContextHandling","codes","utils","hasLoadedNamespace","code","possibleKey","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","pluralSeparator","contextKey","contextSeparator","returnNull","returnEmptyString","resourceStore","option","capitalize","string","charAt","toUpperCase","LanguageUtil","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","cleanCode","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","isSupportedCode","lngOnly","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","n","deprecatedJsonVersions","suffixesOrder","zero","one","two","few","many","other","PluralResolver","rules","compatibilityJSON","Intl","PluralRules","numbers","plurals","_unused","rule","getRule","resolvedOptions","pluralCategories","sort","pluralCategory1","pluralCategory2","pluralCategory","prepend","select","getSuffixRetroCompatible","idx","noAbs","abs","simplifyPluralSuffix","returnSuffix","ownKeys$3","_objectSpread$3","deepFindWithDefaults","defaultData","getPathWithDefaults","Interpolator","format","escapeValue","iOpts","escape","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexp","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","interpolationkey","f","missingInterpolationHandler","regex","safeValue","todo","exec","matchedVar","temp","lastIndex","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","doReduce","elem","ownKeys$2","_objectSpread$2","createCachedFormatter","fn","cache","formatter","Formatter","formats","opt","NumberFormat","currency","style","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","range","list","ListFormat","_format","mem","_parseFormatStr","formatStr","formatName","formatOptions","optStr","_opt$split","_opt$split2","parseInt","parseFormatStr","formatted","valOptions","formatParams","locale","ownKeys$1","_objectSpread$1","Connector","_isNativeReflectConstruct$1","backend","store","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","queue","callback","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","pendingCount","loaded","err","addResourceBundle","q","_getLastOfPath2","removePending","loadedKeys","fcName","tried","wait","read","bind","queueLoad","loadOne","prepareLoading","_this5","isUpdate","clb","opts","initImmediate","preload","partialBundledLanguages","ret","tDescription","transformOptions","ownKeys","_objectSpread","noop","I18n","_isNativeReflectConstruct","inst","modules","external","getOwnPropertyNames","getPrototypeOf","isInitialized","isClone","defOpts","createClassOnDemand","ClassOrObject","lu","on","languageDetector","detection","_this2$store","_this2$store2","deferred","finish","initializedStoreOnce","changeLanguage","usedCallback","append","resolvedLanguage","setResolvedLanguage","li","lngInLngs","hasLanguageSomeTranslations","isLanguageChangingTo","setLngProps","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","detect","keyPrefix","fixedT","rest","resultKey","_this$translator","_this$translator2","exists","_this6","lastLng","loadNotPending","loadState","precheck","preResult","_this7","preloaded","newLngs","_this8","mergedOptions","clone","instance","createInstance","toInternalTranslationRef","$$type","version","removeNulls","messages","dir","reloadResources","use","getFixedT","setDefaultNamespace","loadNamespaces","loadLanguages","ResourceLoader","onLoad","addTranslationResource","resource","internalResource","toInternalTranslationResource","entry","loader","needsLoading","JsxInterpolator","fromI18n","i18n","originalFormat","formatHook","formatOpts","hook","marker","setFormatHook","wrapT","originalT","elementsMap","elementKey","createElement","I18nextTranslationApi","languageApi","jsxInterpolator","getTranslation","translationRef","internalRef","translation$","loadTicket","loadResource","ticket","ready","onChange","unwrappedT","defaultMessages","getDefaultMessages","defaultResource","getDefaultResource","createLocalBaseUrl","fullUrl","port","AppContextImpl","app","getPlugins","getSystemIcon","getSystemIcons","AppManager","apiHolder","icons","featureFlags","components","configLoader","defaultApis","bindRoutes","appLanguageApi","translationResources","apiFactoryRegistry","__experimentalTranslations","createRoot","AppProvider","getProvider","routeValidationError","needsFeatureFlagRegistrationRef","useRef","routing","usesReactRouterBeta","collectors","toArray","root","contexts","nextContexts","collector","discoverer","discoverers","traverseElementTree","collectedPlugins","verifyPlugins","getApiHolder","loadedConfig","hasConfig","useAsync","noConfigNode","Progress","BootErrorPage","step","ThemeProvider","inputConfigs","urlConfigReader","backendBaseUrl","newBackendBaseUrl","newAppBaseUrl","maybeNewBackendBaseUrl","maybeNewAppBaseUrl","overrideBaseUrlConfigs","useConfigLoader","hasConfigApi","routesById","externalRoutesById","refId","externalRoutes","collectRouteIds","disabledExternalRefs","targetRoutes","externalRoute","bindings","externalRefId","targetRefId","externalRef","defaultRefId","getDefaultTarget","defaultRef","resolveRouteBindings","notLeafRoutes","currentRouteRef","fullPath","validateRouteParameters","externalRouteRef","validateRouteBindings","featureFlagsApi","getFeatureFlags","registeredFlags","flagNames","querySelector","getAttribute","isProtectedApp","errorApiRef","fetchApiRef","discoveryApiRef","Suspense","getRouter","getApis","identityApiRef","pluginIds","createSpecializedApp","FlatRoutes","NotFoundErrorPage","isBeta","withNotFound","useElementFilter","elements","getElements","child","b","localeCompare","useRoutes","baseAssignValue","baseForOwn","baseIteratee","exports","iteratee","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","len","run","runClearTimeout","Item","array","nextTick","browser","argv","versions","once","off","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","Observable","hasSymbol","getSymbol","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","getSpecies","ctor","hostReportError","enqueue","cleanupSubscription","cleanup","_cleanup","unsubscribe","closeSubscription","_observer","_queue","_state","notifySubscription","onNotify","flushSubscription","Subscription","self","subscriptionObserver","_subscriber","C","hasSeed","hasValue","first","all","sources","startNext","subscriptions","outer","inner","completeIfDone","isObservable","of","items","symbol","configurable"],"sourceRoot":""}