@kuadrant/kuadrant-backstage-plugin-frontend 0.0.2-dev-24d0757 → 0.0.2-dev-7d09bfa
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.
- package/dist/components/ApiAccessCard/ApiAccessCard.esm.js +229 -11
- package/dist/components/ApiAccessCard/ApiAccessCard.esm.js.map +1 -1
- package/dist/components/ApiKeyManagementTab/ApiKeyManagementTab.esm.js +15 -151
- package/dist/components/ApiKeyManagementTab/ApiKeyManagementTab.esm.js.map +1 -1
- package/dist/components/ApiProductDetailPage/ApiProductDetailPage.esm.js +25 -6
- package/dist/components/ApiProductDetailPage/ApiProductDetailPage.esm.js.map +1 -1
- package/dist/components/ApiProductDetails/ApiProductDetails.esm.js +6 -1
- package/dist/components/ApiProductDetails/ApiProductDetails.esm.js.map +1 -1
- package/dist/components/ApiProductInfoCard/ApiProductInfoCard.esm.js +15 -2
- package/dist/components/ApiProductInfoCard/ApiProductInfoCard.esm.js.map +1 -1
- package/dist/components/CreateAPIProductDialog/CreateAPIProductDialog.esm.js +2 -4
- package/dist/components/CreateAPIProductDialog/CreateAPIProductDialog.esm.js.map +1 -1
- package/dist/components/OidcProviderCard/OidcProviderCard.esm.js +23 -0
- package/dist/components/OidcProviderCard/OidcProviderCard.esm.js.map +1 -0
- package/dist/components/RequestAccessDialog/RequestAccessDialog.esm.js +167 -0
- package/dist/components/RequestAccessDialog/RequestAccessDialog.esm.js.map +1 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.esm.js +1 -1
- package/dist/plugin.esm.js +1 -9
- package/dist/plugin.esm.js.map +1 -1
- package/dist/utils/validation.esm.js.map +1 -1
- package/dist-scalprum/configSchema.json +27 -1
- package/dist-scalprum/internal.plugin-kuadrant.5d9e1e73c7f21bbed39a.js +2 -0
- package/dist-scalprum/internal.plugin-kuadrant.5d9e1e73c7f21bbed39a.js.map +1 -0
- package/dist-scalprum/plugin-manifest.json +2 -2
- package/dist-scalprum/static/1994.19e6a1c5.chunk.js +3 -0
- package/dist-scalprum/static/1994.19e6a1c5.chunk.js.map +1 -0
- package/dist-scalprum/static/{2628.6619bf8b.chunk.js → 2628.0605e07f.chunk.js} +3 -3
- package/dist-scalprum/static/2628.0605e07f.chunk.js.map +1 -0
- package/dist-scalprum/static/2752.df63f31c.chunk.js +2 -0
- package/dist-scalprum/static/2752.df63f31c.chunk.js.map +1 -0
- package/dist-scalprum/static/2822.27a4ac5b.chunk.js +2 -0
- package/dist-scalprum/static/2822.27a4ac5b.chunk.js.map +1 -0
- package/dist-scalprum/static/2967.8d9c1b1f.chunk.js +2 -0
- package/dist-scalprum/static/2967.8d9c1b1f.chunk.js.map +1 -0
- package/dist-scalprum/static/{3097.4bd6b35f.chunk.js → 3097.582b68d3.chunk.js} +2 -2
- package/dist-scalprum/static/{3097.4bd6b35f.chunk.js.map → 3097.582b68d3.chunk.js.map} +1 -1
- package/dist-scalprum/static/327.cd6b3fee.chunk.js +2 -0
- package/dist-scalprum/static/327.cd6b3fee.chunk.js.map +1 -0
- package/dist-scalprum/static/3459.a7c29521.chunk.js +2 -0
- package/dist-scalprum/static/3459.a7c29521.chunk.js.map +1 -0
- package/dist-scalprum/static/3584.c820a5c7.chunk.js +2 -0
- package/dist-scalprum/static/3584.c820a5c7.chunk.js.map +1 -0
- package/dist-scalprum/static/3587.490690d6.chunk.js +2 -0
- package/dist-scalprum/static/3587.490690d6.chunk.js.map +1 -0
- package/dist-scalprum/static/{3647.b96f9b3e.chunk.js → 3647.67079e5f.chunk.js} +2 -2
- package/dist-scalprum/static/{3647.b96f9b3e.chunk.js.map → 3647.67079e5f.chunk.js.map} +1 -1
- package/dist-scalprum/static/3650.4f0dc550.chunk.js +2 -0
- package/dist-scalprum/static/3650.4f0dc550.chunk.js.map +1 -0
- package/dist-scalprum/static/3947.7458971d.chunk.js +2 -0
- package/dist-scalprum/static/3947.7458971d.chunk.js.map +1 -0
- package/dist-scalprum/static/3984.7bc07774.chunk.js +2 -0
- package/dist-scalprum/static/3984.7bc07774.chunk.js.map +1 -0
- package/dist-scalprum/static/4302.9a59485e.chunk.js +2 -0
- package/dist-scalprum/static/4302.9a59485e.chunk.js.map +1 -0
- package/dist-scalprum/static/441.f708f1e0.chunk.js +2 -0
- package/dist-scalprum/static/441.f708f1e0.chunk.js.map +1 -0
- package/dist-scalprum/static/4611.0d064cdf.chunk.js +2 -0
- package/dist-scalprum/static/4611.0d064cdf.chunk.js.map +1 -0
- package/dist-scalprum/static/4651.c85cecc4.chunk.js +2 -0
- package/dist-scalprum/static/4651.c85cecc4.chunk.js.map +1 -0
- package/dist-scalprum/static/{4682.6959fcd1.chunk.js → 4682.3c7098a8.chunk.js} +2 -2
- package/dist-scalprum/static/{4682.6959fcd1.chunk.js.map → 4682.3c7098a8.chunk.js.map} +1 -1
- package/dist-scalprum/static/501.87de76da.chunk.js +3 -0
- package/dist-scalprum/static/501.87de76da.chunk.js.LICENSE.txt +21 -0
- package/dist-scalprum/static/501.87de76da.chunk.js.map +1 -0
- package/dist-scalprum/static/{5010.a4aa0f8e.chunk.js → 5010.2228c754.chunk.js} +3 -3
- package/dist-scalprum/static/{5010.a4aa0f8e.chunk.js.map → 5010.2228c754.chunk.js.map} +1 -1
- package/dist-scalprum/static/5203.43732b3f.chunk.js +2 -0
- package/dist-scalprum/static/5203.43732b3f.chunk.js.map +1 -0
- package/dist-scalprum/static/5235.2a59dc45.chunk.js +2 -0
- package/dist-scalprum/static/5235.2a59dc45.chunk.js.map +1 -0
- package/dist-scalprum/static/5453.b3ee2392.chunk.js +2 -0
- package/dist-scalprum/static/5453.b3ee2392.chunk.js.map +1 -0
- package/dist-scalprum/static/{7556.aa8a002f.chunk.js → 5568.5dbce633.chunk.js} +3 -3
- package/dist-scalprum/static/{3466.43dfe991.chunk.js.LICENSE.txt → 5568.5dbce633.chunk.js.LICENSE.txt} +9 -0
- package/dist-scalprum/static/5568.5dbce633.chunk.js.map +1 -0
- package/dist-scalprum/static/6272.ef31cb1c.chunk.js +2 -0
- package/dist-scalprum/static/6272.ef31cb1c.chunk.js.map +1 -0
- package/dist-scalprum/static/6371.c4899d73.chunk.js +3 -0
- package/dist-scalprum/static/6371.c4899d73.chunk.js.map +1 -0
- package/dist-scalprum/static/6386.6386.ce38cef3.css +5 -0
- package/dist-scalprum/static/6386.6386.ce38cef3.css.map +1 -0
- package/dist-scalprum/static/6386.903891f3.chunk.js +3 -0
- package/dist-scalprum/static/6386.903891f3.chunk.js.LICENSE.txt +26 -0
- package/dist-scalprum/static/6386.903891f3.chunk.js.map +1 -0
- package/dist-scalprum/static/65.0e01be7c.chunk.js +2 -0
- package/dist-scalprum/static/65.0e01be7c.chunk.js.map +1 -0
- package/dist-scalprum/static/6753.76832e72.chunk.js +2 -0
- package/dist-scalprum/static/6753.76832e72.chunk.js.map +1 -0
- package/dist-scalprum/static/{8563.7e068fb0.chunk.js → 6763.d6cd937f.chunk.js} +3 -3
- package/dist-scalprum/static/6763.d6cd937f.chunk.js.map +1 -0
- package/dist-scalprum/static/{6800.736d5da3.chunk.js → 6800.8ec3a2eb.chunk.js} +2 -2
- package/dist-scalprum/static/6800.8ec3a2eb.chunk.js.map +1 -0
- package/dist-scalprum/static/{6840.4728fab9.chunk.js → 6840.6cc88a16.chunk.js} +2 -2
- package/dist-scalprum/static/6840.6cc88a16.chunk.js.map +1 -0
- package/dist-scalprum/static/7076.8745d395.chunk.js +2 -0
- package/dist-scalprum/static/7076.8745d395.chunk.js.map +1 -0
- package/dist-scalprum/static/7367.62c9669e.chunk.js +3 -0
- package/dist-scalprum/static/7367.62c9669e.chunk.js.LICENSE.txt +21 -0
- package/dist-scalprum/static/7367.62c9669e.chunk.js.map +1 -0
- package/dist-scalprum/static/7791.55db7365.chunk.js +2 -0
- package/dist-scalprum/static/7791.55db7365.chunk.js.map +1 -0
- package/dist-scalprum/static/8172.e89bbae7.chunk.js +2 -0
- package/dist-scalprum/static/8172.e89bbae7.chunk.js.map +1 -0
- package/dist-scalprum/static/8627.111cbac9.chunk.js +2 -0
- package/dist-scalprum/static/8627.111cbac9.chunk.js.map +1 -0
- package/dist-scalprum/static/8799.4ea4639c.chunk.js +2 -0
- package/dist-scalprum/static/8799.4ea4639c.chunk.js.map +1 -0
- package/dist-scalprum/static/9510.e4112e19.chunk.js +3 -0
- package/dist-scalprum/static/{2946.167c50c2.chunk.js.LICENSE.txt → 9510.e4112e19.chunk.js.LICENSE.txt} +0 -10
- package/dist-scalprum/static/9510.e4112e19.chunk.js.map +1 -0
- package/dist-scalprum/static/9644.7d342123.chunk.js +2 -0
- package/dist-scalprum/static/9644.7d342123.chunk.js.map +1 -0
- package/dist-scalprum/static/993.c164940e.chunk.js +2 -0
- package/dist-scalprum/static/993.c164940e.chunk.js.map +1 -0
- package/dist-scalprum/static/exposed-PluginRoot.5b6638e2.chunk.js +2 -0
- package/dist-scalprum/static/exposed-PluginRoot.5b6638e2.chunk.js.map +1 -0
- package/package.json +3 -1
- package/dist/components/PlanPolicyDetailPage/PlanPolicyDetailPage.esm.js +0 -89
- package/dist/components/PlanPolicyDetailPage/PlanPolicyDetailPage.esm.js.map +0 -1
- package/dist/components/PlanPolicyDetailPage/index.esm.js +0 -2
- package/dist/components/PlanPolicyDetailPage/index.esm.js.map +0 -1
- package/dist-scalprum/internal.plugin-kuadrant.95817f34e88db81b5e8f.js +0 -2
- package/dist-scalprum/internal.plugin-kuadrant.95817f34e88db81b5e8f.js.map +0 -1
- package/dist-scalprum/static/1085.536aa0fa.chunk.js +0 -3
- package/dist-scalprum/static/1085.536aa0fa.chunk.js.map +0 -1
- package/dist-scalprum/static/1613.71f0fccd.chunk.js +0 -3
- package/dist-scalprum/static/1613.71f0fccd.chunk.js.LICENSE.txt +0 -10
- package/dist-scalprum/static/1613.71f0fccd.chunk.js.map +0 -1
- package/dist-scalprum/static/1836.b74b4c40.chunk.js +0 -3
- package/dist-scalprum/static/1836.b74b4c40.chunk.js.LICENSE.txt +0 -10
- package/dist-scalprum/static/1836.b74b4c40.chunk.js.map +0 -1
- package/dist-scalprum/static/2198.5905970e.chunk.js +0 -2
- package/dist-scalprum/static/2198.5905970e.chunk.js.map +0 -1
- package/dist-scalprum/static/2628.6619bf8b.chunk.js.map +0 -1
- package/dist-scalprum/static/2759.fceb317f.chunk.js +0 -2
- package/dist-scalprum/static/2759.fceb317f.chunk.js.map +0 -1
- package/dist-scalprum/static/2928.4303c12e.chunk.js +0 -3
- package/dist-scalprum/static/2928.4303c12e.chunk.js.map +0 -1
- package/dist-scalprum/static/2946.167c50c2.chunk.js +0 -3
- package/dist-scalprum/static/2946.167c50c2.chunk.js.map +0 -1
- package/dist-scalprum/static/2967.ac3a4bee.chunk.js +0 -2
- package/dist-scalprum/static/2967.ac3a4bee.chunk.js.map +0 -1
- package/dist-scalprum/static/2987.1da15560.chunk.js +0 -2
- package/dist-scalprum/static/2987.1da15560.chunk.js.map +0 -1
- package/dist-scalprum/static/3459.5c90b5a3.chunk.js +0 -2
- package/dist-scalprum/static/3459.5c90b5a3.chunk.js.map +0 -1
- package/dist-scalprum/static/3466.43dfe991.chunk.js +0 -3
- package/dist-scalprum/static/3466.43dfe991.chunk.js.map +0 -1
- package/dist-scalprum/static/3503.66b6e510.chunk.js +0 -2
- package/dist-scalprum/static/3503.66b6e510.chunk.js.map +0 -1
- package/dist-scalprum/static/3650.515c743a.chunk.js +0 -2
- package/dist-scalprum/static/3650.515c743a.chunk.js.map +0 -1
- package/dist-scalprum/static/3657.59d45756.chunk.js +0 -3
- package/dist-scalprum/static/3657.59d45756.chunk.js.LICENSE.txt +0 -10
- package/dist-scalprum/static/3657.59d45756.chunk.js.map +0 -1
- package/dist-scalprum/static/428.0a290bc6.chunk.js +0 -2
- package/dist-scalprum/static/428.0a290bc6.chunk.js.map +0 -1
- package/dist-scalprum/static/441.9f02e61b.chunk.js +0 -2
- package/dist-scalprum/static/441.9f02e61b.chunk.js.map +0 -1
- package/dist-scalprum/static/5453.280127dd.chunk.js +0 -2
- package/dist-scalprum/static/5453.280127dd.chunk.js.map +0 -1
- package/dist-scalprum/static/5603.05d9ca7f.chunk.js +0 -2
- package/dist-scalprum/static/5603.05d9ca7f.chunk.js.map +0 -1
- package/dist-scalprum/static/6272.b5ee5195.chunk.js +0 -3
- package/dist-scalprum/static/6272.b5ee5195.chunk.js.LICENSE.txt +0 -9
- package/dist-scalprum/static/6272.b5ee5195.chunk.js.map +0 -1
- package/dist-scalprum/static/6371.c83dc422.chunk.js +0 -2
- package/dist-scalprum/static/6371.c83dc422.chunk.js.map +0 -1
- package/dist-scalprum/static/6422.97baf774.chunk.js +0 -2
- package/dist-scalprum/static/6422.97baf774.chunk.js.map +0 -1
- package/dist-scalprum/static/6800.736d5da3.chunk.js.map +0 -1
- package/dist-scalprum/static/6840.4728fab9.chunk.js.map +0 -1
- package/dist-scalprum/static/7556.aa8a002f.chunk.js.LICENSE.txt +0 -8
- package/dist-scalprum/static/7556.aa8a002f.chunk.js.map +0 -1
- package/dist-scalprum/static/7601.4df83556.chunk.js +0 -3
- package/dist-scalprum/static/7601.4df83556.chunk.js.LICENSE.txt +0 -9
- package/dist-scalprum/static/7601.4df83556.chunk.js.map +0 -1
- package/dist-scalprum/static/7791.12162a71.chunk.js +0 -2
- package/dist-scalprum/static/7791.12162a71.chunk.js.map +0 -1
- package/dist-scalprum/static/7984.c8511b89.chunk.js +0 -2
- package/dist-scalprum/static/7984.c8511b89.chunk.js.map +0 -1
- package/dist-scalprum/static/8365.d3360f18.chunk.js +0 -2
- package/dist-scalprum/static/8365.d3360f18.chunk.js.map +0 -1
- package/dist-scalprum/static/8563.7e068fb0.chunk.js.map +0 -1
- package/dist-scalprum/static/8799.7c749838.chunk.js +0 -2
- package/dist-scalprum/static/8799.7c749838.chunk.js.map +0 -1
- package/dist-scalprum/static/exposed-PluginRoot.a5792fb2.chunk.js +0 -2
- package/dist-scalprum/static/exposed-PluginRoot.a5792fb2.chunk.js.map +0 -1
- /package/dist-scalprum/static/{2928.4303c12e.chunk.js.LICENSE.txt → 1994.19e6a1c5.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{2628.6619bf8b.chunk.js.LICENSE.txt → 2628.0605e07f.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{5010.a4aa0f8e.chunk.js.LICENSE.txt → 5010.2228c754.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{1085.536aa0fa.chunk.js.LICENSE.txt → 6371.c4899d73.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{8563.7e068fb0.chunk.js.LICENSE.txt → 6763.d6cd937f.chunk.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunkinternal_plugin_kuadrant=self.webpackChunkinternal_plugin_kuadrant||[]).push([[9644],{9644:(e,t,n)=>{n.r(t),n.d(t,{AnalyticsContext:()=>u,FeatureFlagState:()=>c.FeatureFlagState,SessionState:()=>c.SessionState,alertApiRef:()=>c.alertApiRef,analyticsApiRef:()=>p,appThemeApiRef:()=>c.appThemeApiRef,atlassianAuthApiRef:()=>c.atlassianAuthApiRef,attachComponentData:()=>b,bitbucketAuthApiRef:()=>c.bitbucketAuthApiRef,bitbucketServerAuthApiRef:()=>c.bitbucketServerAuthApiRef,configApiRef:()=>c.configApiRef,createApiFactory:()=>c.createApiFactory,createApiRef:()=>c.createApiRef,createComponentExtension:()=>S,createExternalRouteRef:()=>z,createPlugin:()=>j,createReactExtension:()=>F,createRoutableExtension:()=>C,createRouteRef:()=>M,createSubRouteRef:()=>_,discoveryApiRef:()=>c.discoveryApiRef,errorApiRef:()=>c.errorApiRef,featureFlagsApiRef:()=>c.featureFlagsApiRef,fetchApiRef:()=>c.fetchApiRef,getComponentData:()=>y,githubAuthApiRef:()=>c.githubAuthApiRef,gitlabAuthApiRef:()=>c.gitlabAuthApiRef,googleAuthApiRef:()=>c.googleAuthApiRef,identityApiRef:()=>c.identityApiRef,microsoftAuthApiRef:()=>c.microsoftAuthApiRef,oauthRequestApiRef:()=>c.oauthRequestApiRef,oktaAuthApiRef:()=>c.oktaAuthApiRef,oneloginAuthApiRef:()=>c.oneloginAuthApiRef,openshiftAuthApiRef:()=>c.openshiftAuthApiRef,storageApiRef:()=>c.storageApiRef,useAnalytics:()=>d,useApi:()=>c.useApi,useApiHolder:()=>c.useApiHolder,useApp:()=>A,useElementFilter:()=>P,useRouteRef:()=>x,useRouteRefParams:()=>W,vmwareCloudAuthApiRef:()=>c.vmwareCloudAuthApiRef,withApis:()=>c.withApis});var r=n(31085),o=n(15427),i=n(95478);const a=(0,o.createVersionedContext)("analytics-context"),s=()=>{const e=(0,i.useContext)(a);if(void 0===e)return{routeRef:"unknown",pluginId:"root",extension:"App"};const t=e.atVersion(1);if(void 0===t)throw new Error("No context found for version 1.");return t},u=e=>{const{attributes:t,children:n}=e,i={...s(),...t},u=(0,o.createVersionedValueMap)({1:i});return(0,r.jsx)(a.Provider,{value:u,children:n})};var c=n(35121);const p=(0,c.createApiRef)({id:"core.analytics"}),l=(0,o.getOrCreateGlobalSingleton)("core-plugin-api:analytics-tracker-events",()=>({mostRecentGatheredNavigation:void 0,mostRecentRoutableExtensionRender:void 0,beforeUnloadRegistered:!1})),f="_ROUTABLE-EXTENSION-RENDERED";class h{analyticsApi;context;constructor(e,t={routeRef:"unknown",pluginId:"root",extension:"App"}){this.analyticsApi=e,this.context=t,l.beforeUnloadRegistered||(addEventListener("beforeunload",()=>{l.mostRecentGatheredNavigation&&(this.analyticsApi.captureEvent({...l.mostRecentGatheredNavigation,...l.mostRecentRoutableExtensionRender}),l.mostRecentGatheredNavigation=void 0,l.mostRecentRoutableExtensionRender=void 0)},{once:!0,passive:!0}),l.beforeUnloadRegistered=!0)}setContext(e){this.context=e}captureEvent(e,t,{value:n,attributes:r}={}){const{_routeNodeType:o,...i}=this.context;if(e!==f){if(l.mostRecentGatheredNavigation){try{this.analyticsApi.captureEvent({...l.mostRecentGatheredNavigation,...l.mostRecentRoutableExtensionRender})}catch(e){console.warn("Error during analytics event capture. %o",e)}l.mostRecentGatheredNavigation=void 0,l.mostRecentRoutableExtensionRender=void 0}if("navigate"!==e||"gathered"!==o||"root"!==i.pluginId)try{this.analyticsApi.captureEvent({action:e,subject:t,value:n,attributes:r,context:i})}catch(e){console.warn("Error during analytics event capture. %o",e)}else l.mostRecentGatheredNavigation={action:e,subject:t,value:n,attributes:r,context:i}}else l.mostRecentGatheredNavigation&&(l.mostRecentRoutableExtensionRender={context:{...i,extension:"App"}})}}function d(){const e=(0,i.useRef)(null),t=s(),n=function(){try{return(0,c.useApi)(p)}catch{return{captureEvent:()=>{}}}}(),r=(null===e.current&&(e.current=new h(n)),e.current);return r.setContext(t),r}const g=(0,o.getOrCreateGlobalSingleton)("legacy-plugin-compatibility-store",()=>new WeakMap);function R(e){let t=g.get(e);if(t)return t;const n=()=>{throw new Error("Not implemented in legacy plugin compatibility layer")};return t={getId:()=>e.id,get routes(){return{}},get externalRoutes(){return{}},getApis:n,getFeatureFlags:n,provide:n},g.set(e,t),t}function m(e){return(0,c.createFrontendPlugin)({pluginId:e.getId()})}const A=()=>{const e=function(){try{return(0,c.useApiHolder)()}catch{return}}(),t=e?.get(c.appTreeApiRef),n=e?.get(c.iconsApiRef),a=(0,o.useVersionedContext)("app-context"),s=(0,i.useMemo)(()=>{if(!t)return;if(!n)return;const{tree:e}=t.getTree();let o;const i=({plugin:e,...t})=>(0,r.jsx)(c.ErrorDisplay,{...t,plugin:e&&m(e)});return{getPlugins(){if(o)return o;const t=new Set;for(const n of e.nodes.values()){const e=n.spec.plugin;e&&t.add(R(e))}return o=Array.from(t),o},getSystemIcon:e=>n.getIcon(e),getSystemIcons:()=>Object.fromEntries(n.listIconKeys().map(e=>[e,n.getIcon(e)])),getComponents:()=>({NotFoundErrorPage:c.NotFoundErrorPage,BootErrorPage(){throw new Error("The BootErrorPage app component should not be accessed by plugins")},Progress:c.Progress,Router(){throw new Error("The Router app component should not be accessed by plugins")},ErrorBoundaryFallback:i})}},[t,n]);if(s)return s;if(!a)throw new Error("App context is not available");const u=a.atVersion(1);if(!u)throw new Error("AppContext v1 not available");return u},v=(0,o.getOrCreateGlobalSingleton)("component-data-store",()=>new WeakMap),w="__backstage_data";function b(e,t,n){const r=e;let o=r[w]??v.get(e);if(o||(o={map:new Map},Object.defineProperty(r,w,{enumerable:!1,configurable:!0,writable:!1,value:o}),v.set(e,o)),o.map.has(t)){const n=e.displayName||e.name;throw new Error(`Attempted to attach duplicate data "${t}" to component "${n}"`)}o.map.set(t,n)}function y(e,t){if(!e)return;const n=e.type;if(!n)return;const r=n[w]??v.get(n);return r?r.map.get(t):void 0}var E=n(49634);function x(e){const{pathname:t}=(0,E.useLocation)(),n=function(){try{return(0,c.useApi)(c.routeResolutionApiRef)}catch{return}}(),r=(0,o.useVersionedContext)("routing-context"),a=r?.atVersion(1),s=(0,i.useMemo)(()=>{if(!n)return null;try{return n?.resolve(e,{sourcePath:t})}catch{return null}},[n,e,t]),u=(0,i.useMemo)(()=>a&&a.resolve(e,{pathname:t}),[a,e,t]);if(null!==s){const t="optional"in e&&e.optional;if(!s&&!t)throw new Error(`No path for ${e}`);return s}if(!r)throw new Error("Routing context is not available");if(!a)throw new Error("RoutingContext v1 not available");const p="optional"in e&&e.optional;if(!u&&!p)throw new Error(`No path for ${e}`);return u}class I extends i.Component{static getDerivedStateFromError(e){return{error:e}}state={error:void 0};handleErrorReset=()=>{this.setState({error:void 0})};render(){const{error:e}=this.state,{app:t,plugin:n}=this.props,{ErrorBoundaryFallback:o}=t.getComponents();return e?(0,r.jsx)(o,{error:e,resetError:this.handleErrorReset,plugin:n}):this.props.children}}var $=n(57556);function C(e){const{component:t,mountPoint:n,name:o}=e;return F({component:{lazy:()=>t().then(e=>{const t=t=>{const o=d();try{x(n)}catch(e){if("object"==typeof e&&null!==e){const{message:t}=e;if("string"==typeof t&&t.startsWith("No path for "))throw new Error(`Routable extension component with mount point ${n} was not discovered in the app element tree. Routable extension components may not be rendered by other components and must be directly available as an element within the App provider component.`)}throw e}return(0,i.useEffect)(()=>{o.captureEvent(f,"")},[o]),(0,r.jsx)(e,{...t})},a=o||e.displayName||e.name||"LazyComponent";return t.displayName=`RoutableExtension(${a})`,t})},data:{"core.mountPoint":n},name:o})}function S(e){const{component:t,name:n}=e;return F({component:t,name:n})}function F(e){const{data:t={},name:n}=e;let o;if(n||console.warn("Declaring extensions without name is DEPRECATED. Make sure that all usages of createReactExtension, createComponentExtension and createRoutableExtension provide a name."),"lazy"in e.component){const t=e.component.lazy;o=(0,i.lazy)(()=>t().then(e=>({default:e}),e=>{const t=n?` of the ${n} extension`:"";throw new $.HK(`Failed lazy loading${t}, try to reload the page`,e)}))}else o=e.component.sync;const a=n||o.displayName||o.name||"Component";return{expose(e){const s=a=>{const s=A(),{Progress:c}=s.getComponents(),p=t?.["core.mountPoint"];return(0,r.jsx)(i.Suspense,{fallback:(0,r.jsx)(c,{}),children:(0,r.jsx)(I,{app:s,plugin:e,children:(0,r.jsx)(u,{attributes:{pluginId:e.getId(),...n&&{extension:n},...p&&{routeRef:p.id}},children:(0,r.jsx)(o,{...a})})})})};b(s,"core.plugin",e),b(s,"core.extensionName",n);for(const[e,n]of Object.entries(t))b(s,e,n);return s.displayName=`Extension(${a})`,s}}}function k(e,t,n,r){return i.Children.toArray(e).flatMap(e=>{if(!(0,i.isValidElement)(e))return[];if(e.type===i.Fragment)return k(e.props.children,t,n,r);if(y(e,"core.featureFlagged")){const o=e.props;return("with"in o?t.isActive(o.with):!t.isActive(o.without))?k(e.props.children,t,n,r):[]}if(void 0===n||n(e))return[e];if(r)throw new Error(r);return k(e.props.children,t,n,r)})}class N{node;featureFlagsApi;constructor(e,t){this.node=e,this.featureFlagsApi=t}selectByComponentData(e){const t=k(this.node,this.featureFlagsApi,t=>void 0!==y(t,e.key),e.withStrictError);return new N(t,this.featureFlagsApi)}findComponentData(e){return k(this.node,this.featureFlagsApi,t=>void 0!==y(t,e.key)).map(t=>y(t,e.key)).filter(e=>void 0!==e)}getElements(){return k(this.node,this.featureFlagsApi)}}function P(e,t,n=[]){const r=(0,c.useApi)(c.featureFlagsApiRef),o=new N(e,r);return(0,i.useMemo)(()=>t(o),[e,...n])}class T{constructor(e){this.config=e}getId(){return this.config.id}getApis(){return this.config.apis??[]}getFeatureFlags(){return this.config.featureFlags?.slice()??[]}get routes(){return this.config.routes??{}}get externalRoutes(){return this.config.externalRoutes??{}}provide(e){return e.expose(this)}toString(){return`plugin{${this.config.id}}`}}function j(e){return new T(e)}const D=(0,o.getOrCreateGlobalSingleton)("route-ref-type",()=>Symbol("route-ref-type"));class G{[D]="absolute";id;params;constructor(e,t){this.id=e,this.params=t}get title(){return this.id}toString(){return this.#e?`routeRef{id=${this.#e},legacyId=${this.id}}`:`routeRef{type=absolute,id=${this.id}}`}$$type="@backstage/RouteRef";version="v1";T=void 0;alias=void 0;#e=void 0;getParams(){return this.params}getDescription(){return this.#e?this.#e:this.id}setId(e){if(!e)throw new Error("RouteRef id must be a non-empty string");if(this.#e&&this.#e!==e)throw new Error(`RouteRef was referenced twice as both '${this.#e}' and '${e}'`);this.#e=e}}function M(e){return new G(e.id,e.params??[])}const O=/^\w+$/;class V{[D]="sub";id;path;parent;params;constructor(e,t,n,r){this.id=e,this.path=t,this.parent=n,this.params=r}toString(){return`routeRef{type=sub,id=${this.id}}`}$$type="@backstage/SubRouteRef";version="v1";T=void 0;getParams(){return this.params}getParent(){return this.parent}getDescription(){return`at ${this.path} with parent ${this.parent}`}}function _(e){const{id:t,path:n,parent:r}=e,o=n.split("/").filter(e=>e.startsWith(":")).map(e=>e.substring(1)),i=[...r.params,...o];if(r.params.some(e=>o.includes(e)))throw new Error("SubRouteRef may not have params that overlap with its parent");if(!n.startsWith("/"))throw new Error(`SubRouteRef path must start with '/', got '${n}'`);if(n.endsWith("/"))throw new Error(`SubRouteRef path must not end with '/', got '${n}'`);for(const e of o)if(!O.test(e))throw new Error(`SubRouteRef path has invalid param, got '${e}'`);return new V(t,n,r,i)}class B{[D]="external";id;params;optional;defaultTarget;constructor(e,t,n,r){this.id=e,this.params=t,this.optional=n,this.defaultTarget=r}toString(){return this.#e?`externalRouteRef{id=${this.#e},legacyId=${this.id}}`:`routeRef{type=external,id=${this.id}}`}getDefaultTarget(){return this.defaultTarget}$$type="@backstage/ExternalRouteRef";version="v1";T=void 0;#e=void 0;getParams(){return this.params}getDescription(){return this.#e?this.#e:this.id}setId(e){if(!e)throw new Error("ExternalRouteRef id must be a non-empty string");if(this.#e&&this.#e!==e)throw new Error(`ExternalRouteRef was referenced twice as both '${this.#e}' and '${e}'`);this.#e=e}}function z(e){return new B(e.id,e.params??[],Boolean(e.optional),e?.defaultTarget)}function W(e){return(0,E.useParams)()}}}]);
|
|
2
|
+
//# sourceMappingURL=9644.7d342123.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/9644.7d342123.chunk.js","mappings":"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","sources":["webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/core-plugin-api/dist/analytics/AnalyticsContext.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/core-plugin-api/dist/apis/definitions/AnalyticsApi.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/core-plugin-api/dist/analytics/Tracker.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/core-plugin-api/dist/analytics/useAnalytics.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/core-plugin-api/dist/app/useApp.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/core-plugin-api/dist/extensions/componentData.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/core-plugin-api/dist/routing/useRouteRef.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/core-plugin-api/dist/extensions/PluginErrorBoundary.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/core-plugin-api/dist/extensions/extensions.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/core-plugin-api/dist/extensions/useElementFilter.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/core-plugin-api/dist/plugin/Plugin.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/core-plugin-api/dist/routing/types.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/core-plugin-api/dist/routing/RouteRef.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/core-plugin-api/dist/routing/SubRouteRef.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/core-plugin-api/dist/routing/ExternalRouteRef.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/core-plugin-api/dist/routing/useRouteRefParams.esm.js"],"sourcesContent":["import { jsx } from 'react/jsx-runtime';\nimport { createVersionedContext, createVersionedValueMap } from '@backstage/version-bridge';\nimport { useContext } from 'react';\n\nconst AnalyticsReactContext = createVersionedContext(\"analytics-context\");\nconst useAnalyticsContext = () => {\n const theContext = useContext(AnalyticsReactContext);\n if (theContext === void 0) {\n return {\n routeRef: \"unknown\",\n pluginId: \"root\",\n extension: \"App\"\n };\n }\n const theValue = theContext.atVersion(1);\n if (theValue === void 0) {\n throw new Error(\"No context found for version 1.\");\n }\n return theValue;\n};\nconst AnalyticsContext = (options) => {\n const { attributes, children } = options;\n const parentValues = useAnalyticsContext();\n const combinedValue = {\n ...parentValues,\n ...attributes\n };\n const versionedCombinedValue = createVersionedValueMap({ 1: combinedValue });\n return /* @__PURE__ */ jsx(AnalyticsReactContext.Provider, { value: versionedCombinedValue, children });\n};\n\nexport { AnalyticsContext, useAnalyticsContext };\n//# sourceMappingURL=AnalyticsContext.esm.js.map\n","import { createApiRef } from '@backstage/frontend-plugin-api';\n\nconst analyticsApiRef = createApiRef({\n id: \"core.analytics\"\n});\n\nexport { analyticsApiRef };\n//# sourceMappingURL=AnalyticsApi.esm.js.map\n","import { getOrCreateGlobalSingleton } from '@backstage/version-bridge';\n\nconst globalEvents = getOrCreateGlobalSingleton(\n \"core-plugin-api:analytics-tracker-events\",\n () => ({\n mostRecentGatheredNavigation: void 0,\n mostRecentRoutableExtensionRender: void 0,\n beforeUnloadRegistered: false\n })\n);\nconst routableExtensionRenderedEvent = \"_ROUTABLE-EXTENSION-RENDERED\";\nclass Tracker {\n analyticsApi;\n context;\n constructor(analyticsApi, context = {\n routeRef: \"unknown\",\n pluginId: \"root\",\n extension: \"App\"\n }) {\n this.analyticsApi = analyticsApi;\n this.context = context;\n if (!globalEvents.beforeUnloadRegistered) {\n addEventListener(\n \"beforeunload\",\n () => {\n if (globalEvents.mostRecentGatheredNavigation) {\n this.analyticsApi.captureEvent({\n ...globalEvents.mostRecentGatheredNavigation,\n ...globalEvents.mostRecentRoutableExtensionRender\n });\n globalEvents.mostRecentGatheredNavigation = void 0;\n globalEvents.mostRecentRoutableExtensionRender = void 0;\n }\n },\n { once: true, passive: true }\n );\n globalEvents.beforeUnloadRegistered = true;\n }\n }\n setContext(context) {\n this.context = context;\n }\n captureEvent(action, subject, {\n value,\n attributes\n } = {}) {\n const { _routeNodeType, ...context } = this.context;\n if (action === routableExtensionRenderedEvent) {\n if (globalEvents.mostRecentGatheredNavigation) {\n globalEvents.mostRecentRoutableExtensionRender = {\n context: {\n ...context,\n extension: \"App\"\n }\n };\n }\n return;\n }\n if (globalEvents.mostRecentGatheredNavigation) {\n try {\n this.analyticsApi.captureEvent({\n ...globalEvents.mostRecentGatheredNavigation,\n ...globalEvents.mostRecentRoutableExtensionRender\n });\n } catch (e) {\n console.warn(\"Error during analytics event capture. %o\", e);\n }\n globalEvents.mostRecentGatheredNavigation = void 0;\n globalEvents.mostRecentRoutableExtensionRender = void 0;\n }\n if (action === \"navigate\" && _routeNodeType === \"gathered\" && context.pluginId === \"root\") {\n globalEvents.mostRecentGatheredNavigation = {\n action,\n subject,\n value,\n attributes,\n context\n };\n return;\n }\n try {\n this.analyticsApi.captureEvent({\n action,\n subject,\n value,\n attributes,\n context\n });\n } catch (e) {\n console.warn(\"Error during analytics event capture. %o\", e);\n }\n }\n}\n\nexport { Tracker, routableExtensionRenderedEvent };\n//# sourceMappingURL=Tracker.esm.js.map\n","import { useAnalyticsContext } from './AnalyticsContext.esm.js';\nimport { useApi } from '@backstage/frontend-plugin-api';\nimport { analyticsApiRef } from '../apis/definitions/AnalyticsApi.esm.js';\nimport { useRef } from 'react';\nimport { Tracker } from './Tracker.esm.js';\n\nfunction useAnalyticsApi() {\n try {\n return useApi(analyticsApiRef);\n } catch {\n return { captureEvent: () => {\n } };\n }\n}\nfunction useAnalytics() {\n const trackerRef = useRef(null);\n const context = useAnalyticsContext();\n const analyticsApi = useAnalyticsApi();\n function getTracker() {\n if (trackerRef.current === null) {\n trackerRef.current = new Tracker(analyticsApi);\n }\n return trackerRef.current;\n }\n const tracker = getTracker();\n tracker.setContext(context);\n return tracker;\n}\n\nexport { useAnalytics };\n//# sourceMappingURL=useAnalytics.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { useMemo } from 'react';\nimport { getOrCreateGlobalSingleton, useVersionedContext } from '@backstage/version-bridge';\nimport { appTreeApiRef, iconsApiRef, Progress, NotFoundErrorPage, useApiHolder, ErrorDisplay, createFrontendPlugin } from '@backstage/frontend-plugin-api';\n\nconst legacyPluginStore = getOrCreateGlobalSingleton(\n \"legacy-plugin-compatibility-store\",\n () => /* @__PURE__ */ new WeakMap()\n);\nfunction toLegacyPlugin(plugin) {\n let legacy = legacyPluginStore.get(plugin);\n if (legacy) {\n return legacy;\n }\n const errorMsg = \"Not implemented in legacy plugin compatibility layer\";\n const notImplemented = () => {\n throw new Error(errorMsg);\n };\n legacy = {\n getId() {\n return plugin.id;\n },\n get routes() {\n return {};\n },\n get externalRoutes() {\n return {};\n },\n getApis: notImplemented,\n getFeatureFlags: notImplemented,\n provide: notImplemented\n };\n legacyPluginStore.set(plugin, legacy);\n return legacy;\n}\nfunction toNewPlugin(plugin) {\n return createFrontendPlugin({\n pluginId: plugin.getId()\n });\n}\nfunction useOptionalApiHolder() {\n try {\n return useApiHolder();\n } catch {\n return void 0;\n }\n}\nconst useApp = () => {\n const apiHolder = useOptionalApiHolder();\n const appTreeApi = apiHolder?.get(appTreeApiRef);\n const iconsApi = apiHolder?.get(iconsApiRef);\n const versionedContext = useVersionedContext(\n \"app-context\"\n );\n const newAppContext = useMemo(() => {\n if (!appTreeApi) {\n return void 0;\n }\n if (!iconsApi) {\n return void 0;\n }\n const { tree } = appTreeApi.getTree();\n let gatheredPlugins = void 0;\n const ErrorBoundaryFallbackWrapper = ({ plugin, ...rest }) => /* @__PURE__ */ jsx(ErrorDisplay, { ...rest, plugin: plugin && toNewPlugin(plugin) });\n return {\n getPlugins() {\n if (gatheredPlugins) {\n return gatheredPlugins;\n }\n const pluginSet = /* @__PURE__ */ new Set();\n for (const node of tree.nodes.values()) {\n const plugin = node.spec.plugin;\n if (plugin) {\n pluginSet.add(toLegacyPlugin(plugin));\n }\n }\n gatheredPlugins = Array.from(pluginSet);\n return gatheredPlugins;\n },\n getSystemIcon(key) {\n return iconsApi.getIcon(key);\n },\n getSystemIcons() {\n return Object.fromEntries(\n iconsApi.listIconKeys().map((key) => [key, iconsApi.getIcon(key)])\n );\n },\n getComponents() {\n return {\n NotFoundErrorPage,\n BootErrorPage() {\n throw new Error(\n \"The BootErrorPage app component should not be accessed by plugins\"\n );\n },\n Progress,\n Router() {\n throw new Error(\n \"The Router app component should not be accessed by plugins\"\n );\n },\n ErrorBoundaryFallback: ErrorBoundaryFallbackWrapper\n };\n }\n };\n }, [appTreeApi, iconsApi]);\n if (newAppContext) {\n return newAppContext;\n }\n if (!versionedContext) {\n throw new Error(\"App context is not available\");\n }\n const appContext = versionedContext.atVersion(1);\n if (!appContext) {\n throw new Error(\"AppContext v1 not available\");\n }\n return appContext;\n};\n\nexport { useApp };\n//# sourceMappingURL=useApp.esm.js.map\n","import { getOrCreateGlobalSingleton } from '@backstage/version-bridge';\n\nconst globalStore = getOrCreateGlobalSingleton(\n \"component-data-store\",\n () => /* @__PURE__ */ new WeakMap()\n);\nconst componentDataKey = \"__backstage_data\";\nfunction attachComponentData(component, type, data) {\n const dataComponent = component;\n let container = dataComponent[componentDataKey] ?? globalStore.get(component);\n if (!container) {\n container = { map: /* @__PURE__ */ new Map() };\n Object.defineProperty(dataComponent, componentDataKey, {\n enumerable: false,\n configurable: true,\n writable: false,\n value: container\n });\n globalStore.set(component, container);\n }\n if (container.map.has(type)) {\n const name = component.displayName || component.name;\n throw new Error(\n `Attempted to attach duplicate data \"${type}\" to component \"${name}\"`\n );\n }\n container.map.set(type, data);\n}\nfunction getComponentData(node, type) {\n if (!node) {\n return void 0;\n }\n const component = node.type;\n if (!component) {\n return void 0;\n }\n const container = component[componentDataKey] ?? globalStore.get(component);\n if (!container) {\n return void 0;\n }\n return container.map.get(type);\n}\n\nexport { attachComponentData, getComponentData };\n//# sourceMappingURL=componentData.esm.js.map\n","import { useMemo } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { useVersionedContext } from '@backstage/version-bridge';\nimport { useApi, routeResolutionApiRef } from '@backstage/frontend-plugin-api';\n\nfunction useRouteResolutionApi() {\n try {\n return useApi(routeResolutionApiRef);\n } catch {\n return void 0;\n }\n}\nfunction useRouteRef(routeRef) {\n const { pathname } = useLocation();\n const routeResolutionApi = useRouteResolutionApi();\n const versionedContext = useVersionedContext(\n \"routing-context\"\n );\n const resolver = versionedContext?.atVersion(1);\n const newRouteFunc = useMemo(() => {\n if (!routeResolutionApi) {\n return null;\n }\n try {\n return routeResolutionApi?.resolve(routeRef, {\n sourcePath: pathname\n });\n } catch {\n return null;\n }\n }, [routeResolutionApi, routeRef, pathname]);\n const legacyRouteFunc = useMemo(\n () => resolver && resolver.resolve(routeRef, { pathname }),\n [resolver, routeRef, pathname]\n );\n if (newRouteFunc !== null) {\n const isOptional2 = \"optional\" in routeRef && routeRef.optional;\n if (!newRouteFunc && !isOptional2) {\n throw new Error(`No path for ${routeRef}`);\n }\n return newRouteFunc;\n }\n if (!versionedContext) {\n throw new Error(\"Routing context is not available\");\n }\n if (!resolver) {\n throw new Error(\"RoutingContext v1 not available\");\n }\n const isOptional = \"optional\" in routeRef && routeRef.optional;\n if (!legacyRouteFunc && !isOptional) {\n throw new Error(`No path for ${routeRef}`);\n }\n return legacyRouteFunc;\n}\n\nexport { useRouteRef };\n//# sourceMappingURL=useRouteRef.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { Component } from 'react';\n\nclass PluginErrorBoundary extends Component {\n static getDerivedStateFromError(error) {\n return { error };\n }\n state = { error: void 0 };\n handleErrorReset = () => {\n this.setState({ error: void 0 });\n };\n render() {\n const { error } = this.state;\n const { app, plugin } = this.props;\n const { ErrorBoundaryFallback } = app.getComponents();\n if (error) {\n return /* @__PURE__ */ jsx(\n ErrorBoundaryFallback,\n {\n error,\n resetError: this.handleErrorReset,\n plugin\n }\n );\n }\n return this.props.children;\n }\n}\n\nexport { PluginErrorBoundary };\n//# sourceMappingURL=PluginErrorBoundary.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { lazy, useEffect, Suspense } from 'react';\nimport { AnalyticsContext } from '../analytics/AnalyticsContext.esm.js';\nimport { useAnalytics } from '../analytics/useAnalytics.esm.js';\nimport { useApp } from '../app/useApp.esm.js';\nimport '../routing/types.esm.js';\nimport { useRouteRef } from '../routing/useRouteRef.esm.js';\nimport 'react-router-dom';\nimport { attachComponentData } from './componentData.esm.js';\nimport { PluginErrorBoundary } from './PluginErrorBoundary.esm.js';\nimport { routableExtensionRenderedEvent } from '../analytics/Tracker.esm.js';\nimport { ForwardedError } from '@backstage/errors';\n\nfunction createRoutableExtension(options) {\n const { component, mountPoint, name } = options;\n return createReactExtension({\n component: {\n lazy: () => component().then((InnerComponent) => {\n const RoutableExtensionWrapper = (props) => {\n const analytics = useAnalytics();\n try {\n useRouteRef(mountPoint);\n } catch (error) {\n if (typeof error === \"object\" && error !== null) {\n const { message } = error;\n if (typeof message === \"string\" && message.startsWith(\"No path for \")) {\n throw new Error(\n `Routable extension component with mount point ${mountPoint} was not discovered in the app element tree. Routable extension components may not be rendered by other components and must be directly available as an element within the App provider component.`\n );\n }\n }\n throw error;\n }\n useEffect(() => {\n analytics.captureEvent(routableExtensionRenderedEvent, \"\");\n }, [analytics]);\n return /* @__PURE__ */ jsx(InnerComponent, { ...props });\n };\n const componentName = name || InnerComponent.displayName || InnerComponent.name || \"LazyComponent\";\n RoutableExtensionWrapper.displayName = `RoutableExtension(${componentName})`;\n return RoutableExtensionWrapper;\n })\n },\n data: {\n \"core.mountPoint\": mountPoint\n },\n name\n });\n}\nfunction createComponentExtension(options) {\n const { component, name } = options;\n return createReactExtension({ component, name });\n}\nfunction createReactExtension(options) {\n const { data = {}, name } = options;\n if (!name) {\n console.warn(\n \"Declaring extensions without name is DEPRECATED. Make sure that all usages of createReactExtension, createComponentExtension and createRoutableExtension provide a name.\"\n );\n }\n let Component;\n if (\"lazy\" in options.component) {\n const lazyLoader = options.component.lazy;\n Component = lazy(\n () => lazyLoader().then(\n (component) => ({ default: component }),\n (error) => {\n const ofExtension = name ? ` of the ${name} extension` : \"\";\n throw new ForwardedError(\n `Failed lazy loading${ofExtension}, try to reload the page`,\n error\n );\n }\n )\n );\n } else {\n Component = options.component.sync;\n }\n const componentName = name || Component.displayName || Component.name || \"Component\";\n return {\n expose(plugin) {\n const Result = (props) => {\n const app = useApp();\n const { Progress } = app.getComponents();\n const mountPoint = data?.[\"core.mountPoint\"];\n return /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(Progress, {}), children: /* @__PURE__ */ jsx(PluginErrorBoundary, { app, plugin, children: /* @__PURE__ */ jsx(\n AnalyticsContext,\n {\n attributes: {\n pluginId: plugin.getId(),\n ...name && { extension: name },\n ...mountPoint && { routeRef: mountPoint.id }\n },\n children: /* @__PURE__ */ jsx(Component, { ...props })\n }\n ) }) });\n };\n attachComponentData(Result, \"core.plugin\", plugin);\n attachComponentData(Result, \"core.extensionName\", name);\n for (const [key, value] of Object.entries(data)) {\n attachComponentData(Result, key, value);\n }\n Result.displayName = `Extension(${componentName})`;\n return Result;\n }\n };\n}\n\nexport { createComponentExtension, createReactExtension, createRoutableExtension };\n//# sourceMappingURL=extensions.esm.js.map\n","import { useMemo, Children, isValidElement, Fragment } from 'react';\nimport { getComponentData } from './componentData.esm.js';\nimport { useApi, featureFlagsApiRef } from '@backstage/frontend-plugin-api';\nimport '../apis/definitions/AnalyticsApi.esm.js';\n\nfunction selectChildren(rootNode, featureFlagsApi, selector, strictError) {\n return Children.toArray(rootNode).flatMap((node) => {\n if (!isValidElement(node)) {\n return [];\n }\n if (node.type === Fragment) {\n return selectChildren(\n node.props.children,\n featureFlagsApi,\n selector,\n strictError\n );\n }\n if (getComponentData(node, \"core.featureFlagged\")) {\n const props = node.props;\n const isEnabled = \"with\" in props ? featureFlagsApi.isActive(props.with) : !featureFlagsApi.isActive(props.without);\n if (isEnabled) {\n return selectChildren(\n node.props.children,\n featureFlagsApi,\n selector,\n strictError\n );\n }\n return [];\n }\n if (selector === void 0 || selector(node)) {\n return [node];\n }\n if (strictError) {\n throw new Error(strictError);\n }\n return selectChildren(\n node.props.children,\n featureFlagsApi,\n selector,\n strictError\n );\n });\n}\nclass Collection {\n node;\n featureFlagsApi;\n constructor(node, featureFlagsApi) {\n this.node = node;\n this.featureFlagsApi = featureFlagsApi;\n }\n selectByComponentData(query) {\n const selection = selectChildren(\n this.node,\n this.featureFlagsApi,\n (node) => getComponentData(node, query.key) !== void 0,\n query.withStrictError\n );\n return new Collection(selection, this.featureFlagsApi);\n }\n findComponentData(query) {\n const selection = selectChildren(\n this.node,\n this.featureFlagsApi,\n (node) => getComponentData(node, query.key) !== void 0\n );\n return selection.map((node) => getComponentData(node, query.key)).filter((data) => data !== void 0);\n }\n getElements() {\n return selectChildren(this.node, this.featureFlagsApi);\n }\n}\nfunction useElementFilter(node, filterFn, dependencies = []) {\n const featureFlagsApi = useApi(featureFlagsApiRef);\n const elements = new Collection(node, featureFlagsApi);\n return useMemo(() => filterFn(elements), [node, ...dependencies]);\n}\n\nexport { useElementFilter };\n//# sourceMappingURL=useElementFilter.esm.js.map\n","class PluginImpl {\n constructor(config) {\n this.config = config;\n }\n getId() {\n return this.config.id;\n }\n getApis() {\n return this.config.apis ?? [];\n }\n getFeatureFlags() {\n return this.config.featureFlags?.slice() ?? [];\n }\n get routes() {\n return this.config.routes ?? {};\n }\n get externalRoutes() {\n return this.config.externalRoutes ?? {};\n }\n provide(extension) {\n return extension.expose(this);\n }\n toString() {\n return `plugin{${this.config.id}}`;\n }\n}\nfunction createPlugin(config) {\n return new PluginImpl(config);\n}\n\nexport { PluginImpl, createPlugin };\n//# sourceMappingURL=Plugin.esm.js.map\n","import { getOrCreateGlobalSingleton } from '@backstage/version-bridge';\n\nconst routeRefType = getOrCreateGlobalSingleton(\n \"route-ref-type\",\n () => /* @__PURE__ */ Symbol(\"route-ref-type\")\n);\n\nexport { routeRefType };\n//# sourceMappingURL=types.esm.js.map\n","import { routeRefType } from './types.esm.js';\n\nclass RouteRefImpl {\n [routeRefType] = \"absolute\";\n id;\n params;\n constructor(id, params) {\n this.id = id;\n this.params = params;\n }\n get title() {\n return this.id;\n }\n toString() {\n if (this.#nfsId) {\n return `routeRef{id=${this.#nfsId},legacyId=${this.id}}`;\n }\n return `routeRef{type=absolute,id=${this.id}}`;\n }\n // NFS implementation below\n $$type = \"@backstage/RouteRef\";\n version = \"v1\";\n T = void 0;\n alias = void 0;\n #nfsId = void 0;\n getParams() {\n return this.params;\n }\n getDescription() {\n if (this.#nfsId) {\n return this.#nfsId;\n }\n return this.id;\n }\n setId(newId) {\n if (!newId) {\n throw new Error(`RouteRef id must be a non-empty string`);\n }\n if (this.#nfsId && this.#nfsId !== newId) {\n throw new Error(\n `RouteRef was referenced twice as both '${this.#nfsId}' and '${newId}'`\n );\n }\n this.#nfsId = newId;\n }\n}\nfunction createRouteRef(config) {\n return new RouteRefImpl(\n config.id,\n config.params ?? []\n );\n}\n\nexport { RouteRefImpl, createRouteRef };\n//# sourceMappingURL=RouteRef.esm.js.map\n","import { routeRefType } from './types.esm.js';\n\nconst PARAM_PATTERN = /^\\w+$/;\nclass SubRouteRefImpl {\n [routeRefType] = \"sub\";\n id;\n path;\n parent;\n params;\n constructor(id, path, parent, params) {\n this.id = id;\n this.path = path;\n this.parent = parent;\n this.params = params;\n }\n toString() {\n return `routeRef{type=sub,id=${this.id}}`;\n }\n // NFS implementation below\n $$type = \"@backstage/SubRouteRef\";\n version = \"v1\";\n T = void 0;\n getParams() {\n return this.params;\n }\n getParent() {\n return this.parent;\n }\n getDescription() {\n return `at ${this.path} with parent ${this.parent}`;\n }\n}\nfunction createSubRouteRef(config) {\n const { id, path, parent } = config;\n const pathParams = path.split(\"/\").filter((p) => p.startsWith(\":\")).map((p) => p.substring(1));\n const params = [...parent.params, ...pathParams];\n if (parent.params.some((p) => pathParams.includes(p))) {\n throw new Error(\n \"SubRouteRef may not have params that overlap with its parent\"\n );\n }\n if (!path.startsWith(\"/\")) {\n throw new Error(`SubRouteRef path must start with '/', got '${path}'`);\n }\n if (path.endsWith(\"/\")) {\n throw new Error(`SubRouteRef path must not end with '/', got '${path}'`);\n }\n for (const param of pathParams) {\n if (!PARAM_PATTERN.test(param)) {\n throw new Error(`SubRouteRef path has invalid param, got '${param}'`);\n }\n }\n const subRouteRef = new SubRouteRefImpl(\n id,\n path,\n parent,\n params\n );\n return subRouteRef;\n}\n\nexport { SubRouteRefImpl, createSubRouteRef };\n//# sourceMappingURL=SubRouteRef.esm.js.map\n","import { routeRefType } from './types.esm.js';\n\nclass ExternalRouteRefImpl {\n [routeRefType] = \"external\";\n id;\n params;\n optional;\n defaultTarget;\n constructor(id, params, optional, defaultTarget) {\n this.id = id;\n this.params = params;\n this.optional = optional;\n this.defaultTarget = defaultTarget;\n }\n toString() {\n if (this.#nfsId) {\n return `externalRouteRef{id=${this.#nfsId},legacyId=${this.id}}`;\n }\n return `routeRef{type=external,id=${this.id}}`;\n }\n getDefaultTarget() {\n return this.defaultTarget;\n }\n // NFS implementation below\n $$type = \"@backstage/ExternalRouteRef\";\n version = \"v1\";\n T = void 0;\n #nfsId = void 0;\n getParams() {\n return this.params;\n }\n getDescription() {\n if (this.#nfsId) {\n return this.#nfsId;\n }\n return this.id;\n }\n setId(newId) {\n if (!newId) {\n throw new Error(`ExternalRouteRef id must be a non-empty string`);\n }\n if (this.#nfsId && this.#nfsId !== newId) {\n throw new Error(\n `ExternalRouteRef was referenced twice as both '${this.#nfsId}' and '${newId}'`\n );\n }\n this.#nfsId = newId;\n }\n}\nfunction createExternalRouteRef(options) {\n return new ExternalRouteRefImpl(\n options.id,\n options.params ?? [],\n Boolean(options.optional),\n options?.defaultTarget\n );\n}\n\nexport { ExternalRouteRefImpl, createExternalRouteRef };\n//# sourceMappingURL=ExternalRouteRef.esm.js.map\n","import { useParams } from 'react-router-dom';\n\nfunction useRouteRefParams(_routeRef) {\n return useParams();\n}\n\nexport { useRouteRefParams };\n//# sourceMappingURL=useRouteRefParams.esm.js.map\n"],"names":["AnalyticsReactContext","createVersionedContext","useAnalyticsContext","theContext","useContext","routeRef","pluginId","extension","theValue","atVersion","Error","AnalyticsContext","options","attributes","children","combinedValue","versionedCombinedValue","createVersionedValueMap","jsx","Provider","value","analyticsApiRef","createApiRef","id","globalEvents","getOrCreateGlobalSingleton","mostRecentGatheredNavigation","mostRecentRoutableExtensionRender","beforeUnloadRegistered","routableExtensionRenderedEvent","Tracker","analyticsApi","context","constructor","this","addEventListener","captureEvent","once","passive","setContext","action","subject","_routeNodeType","e","console","warn","useAnalytics","trackerRef","useRef","useApi","useAnalyticsApi","tracker","current","legacyPluginStore","WeakMap","toLegacyPlugin","plugin","legacy","get","notImplemented","getId","routes","externalRoutes","getApis","getFeatureFlags","provide","set","toNewPlugin","createFrontendPlugin","useApp","apiHolder","useApiHolder","useOptionalApiHolder","appTreeApi","appTreeApiRef","iconsApi","iconsApiRef","versionedContext","useVersionedContext","newAppContext","useMemo","tree","getTree","gatheredPlugins","ErrorBoundaryFallbackWrapper","rest","ErrorDisplay","getPlugins","pluginSet","Set","node","nodes","values","spec","add","Array","from","getSystemIcon","key","getIcon","getSystemIcons","Object","fromEntries","listIconKeys","map","getComponents","NotFoundErrorPage","BootErrorPage","Progress","Router","ErrorBoundaryFallback","appContext","globalStore","componentDataKey","attachComponentData","component","type","data","dataComponent","container","Map","defineProperty","enumerable","configurable","writable","has","name","displayName","getComponentData","useRouteRef","pathname","useLocation","routeResolutionApi","routeResolutionApiRef","useRouteResolutionApi","resolver","newRouteFunc","resolve","sourcePath","legacyRouteFunc","isOptional2","optional","isOptional","PluginErrorBoundary","Component","getDerivedStateFromError","error","state","handleErrorReset","setState","render","app","props","resetError","createRoutableExtension","mountPoint","createReactExtension","lazy","then","InnerComponent","RoutableExtensionWrapper","analytics","message","startsWith","useEffect","componentName","createComponentExtension","lazyLoader","default","ofExtension","sync","expose","Result","Suspense","fallback","entries","selectChildren","rootNode","featureFlagsApi","selector","strictError","Children","toArray","flatMap","isValidElement","Fragment","isActive","with","without","Collection","selectByComponentData","query","selection","withStrictError","findComponentData","filter","getElements","useElementFilter","filterFn","dependencies","featureFlagsApiRef","elements","PluginImpl","config","apis","featureFlags","slice","toString","createPlugin","routeRefType","Symbol","RouteRefImpl","params","title","$$type","version","T","alias","getParams","getDescription","setId","newId","createRouteRef","PARAM_PATTERN","SubRouteRefImpl","path","parent","getParent","createSubRouteRef","pathParams","split","p","substring","some","includes","endsWith","param","test","ExternalRouteRefImpl","defaultTarget","getDefaultTarget","createExternalRouteRef","Boolean","useRouteRefParams","_routeRef","useParams"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunkinternal_plugin_kuadrant=self.webpackChunkinternal_plugin_kuadrant||[]).push([[993],{90993:(e,t,n)=>{n.r(t),n.d(t,{AnalyticsContext:()=>c,AnalyticsImplementationBlueprint:()=>Je,ApiBlueprint:()=>et,AppRootElementBlueprint:()=>rt,AppRootWrapperBlueprint:()=>it,ErrorDisplay:()=>yt,ExtensionBoundary:()=>Pt,FeatureFlagState:()=>Y,IconBundleBlueprint:()=>st,NavContentBlueprint:()=>ut,NavItemBlueprint:()=>dt,NotFoundErrorPage:()=>gt,PageBlueprint:()=>Tt,Progress:()=>ht,RouterBlueprint:()=>jt,SessionState:()=>w,SignInPageBlueprint:()=>_t,SwappableComponentBlueprint:()=>Ct,ThemeBlueprint:()=>Zt,TranslationBlueprint:()=>Mt,alertApiRef:()=>_,analyticsApiRef:()=>h,appLanguageApiRef:()=>I,appThemeApiRef:()=>Z,appTreeApiRef:()=>b,atlassianAuthApiRef:()=>S,bitbucketAuthApiRef:()=>E,bitbucketServerAuthApiRef:()=>T,configApiRef:()=>M,coreExtensionData:()=>nt,createApiFactory:()=>H,createApiRef:()=>m,createExtension:()=>Ve,createExtensionBlueprint:()=>Ke,createExtensionBlueprintParams:()=>Ge,createExtensionDataRef:()=>Ie,createExtensionInput:()=>rn,createExternalRouteRef:()=>Gt,createFrontendFeatureLoader:()=>dn,createFrontendModule:()=>pn,createFrontendPlugin:()=>un,createRouteRef:()=>Dt,createSubRouteRef:()=>Vt,createSwappableComponent:()=>mt,createTranslationMessages:()=>Xt,createTranslationRef:()=>en,createTranslationResource:()=>Jt,dialogApiRef:()=>U,discoveryApiRef:()=>F,errorApiRef:()=>C,featureFlagsApiRef:()=>z,fetchApiRef:()=>L,githubAuthApiRef:()=>x,gitlabAuthApiRef:()=>R,googleAuthApiRef:()=>k,iconsApiRef:()=>D,identityApiRef:()=>B,microsoftAuthApiRef:()=>$,oauthRequestApiRef:()=>V,oktaAuthApiRef:()=>A,oneloginAuthApiRef:()=>P,openshiftAuthApiRef:()=>O,routeResolutionApiRef:()=>q,storageApiRef:()=>G,swappableComponentsApiRef:()=>N,translationApiRef:()=>W,useAnalytics:()=>v,useApi:()=>d,useApiHolder:()=>p,useAppNode:()=>Rt,useRouteRef:()=>Ht,useRouteRefParams:()=>Kt,useTranslationRef:()=>nn,vmwareCloudAuthApiRef:()=>j,withApis:()=>l});var r=n(31085),a=n(15427),i=n(95478);const o=(0,a.createVersionedContext)("analytics-context"),s=()=>{const e=(0,i.useContext)(o);if(void 0===e)return{pluginId:"app",extensionId:"app"};const t=e.atVersion(1);if(void 0===t)throw new Error("No context found for version 1.");return t},c=e=>{const{attributes:t,children:n}=e,i={...s(),...t},c=(0,a.createVersionedValueMap)({1:i});return(0,r.jsx)(o.Provider,{value:c,children:n})};var u=n(57556);function p(){const e=(0,a.useVersionedContext)("api-context");if(!e)throw new u.EH("API context is not available");const t=e.atVersion(1);if(!t)throw new u.EH("ApiContext v1 not available");return t}function d(e){const t=p().get(e);if(!t)throw new u.EH(`No implementation available for ${e}`);return t}function l(e){return function(t){const n=n=>{const a=p(),i={};for(const t in e)if(e.hasOwnProperty(t)){const n=e[t],r=a.get(n);if(!r)throw new u.EH(`No implementation available for ${n}`);i[t]=r}return(0,r.jsx)(t,{...n,...i})},a=t.displayName||t.name||"Component";return n.displayName=`withApis(${a})`,n}}class f{constructor(e){if(this.config=e,!e.id.split(".").flatMap(e=>e.split("-")).every(e=>e.match(/^[a-z][a-z0-9]*$/)))throw new Error(`API id must only contain period separated lowercase alphanum tokens with dashes, got '${e.id}'`)}get id(){return this.config.id}get T(){throw new Error(`tried to read ApiRef.T of ${this}`)}toString(){return`apiRef{${this.config.id}}`}}function m(e){return new f(e)}const h=m({id:"core.analytics"}),g=(0,a.getOrCreateGlobalSingleton)("core-plugin-api:analytics-tracker-events",()=>({mostRecentGatheredNavigation:void 0,mostRecentRoutableExtensionRender:void 0,beforeUnloadRegistered:!1}));class y{analyticsApi;context;constructor(e,t={pluginId:"root",extensionId:"App"}){this.analyticsApi=e,this.context=t,g.beforeUnloadRegistered||(addEventListener("beforeunload",()=>{g.mostRecentGatheredNavigation&&(this.analyticsApi.captureEvent({...g.mostRecentGatheredNavigation,...g.mostRecentRoutableExtensionRender}),g.mostRecentGatheredNavigation=void 0,g.mostRecentRoutableExtensionRender=void 0)},{once:!0,passive:!0}),g.beforeUnloadRegistered=!0)}setContext(e){this.context=e}captureEvent(e,t,{value:n,attributes:r}={}){const a=this.context;if("_ROUTABLE-EXTENSION-RENDERED"!==e){if(g.mostRecentGatheredNavigation){try{this.analyticsApi.captureEvent({...g.mostRecentGatheredNavigation,...g.mostRecentRoutableExtensionRender})}catch(e){console.warn("Error during analytics event capture. %o",e)}g.mostRecentGatheredNavigation=void 0,g.mostRecentRoutableExtensionRender=void 0}if("navigate"!==e||"root"!==a.pluginId)try{this.analyticsApi.captureEvent({action:e,subject:t,value:n,attributes:r,context:a})}catch(e){console.warn("Error during analytics event capture. %o",e)}else g.mostRecentGatheredNavigation={action:e,subject:t,value:n,attributes:r,context:a}}else g.mostRecentGatheredNavigation&&(g.mostRecentRoutableExtensionRender={context:{...a,extensionId:"App"}})}}function v(){const e=(0,i.useRef)(null),t=s(),n=function(){try{return d(h)}catch(e){if("NotImplementedError"===e.name)return{captureEvent:()=>{}};throw e}}(),r=(null===e.current&&(e.current=new y(n)),e.current);return r.setContext(t),r}const b=m({id:"core.app-tree"}),w={SignedIn:"SignedIn",SignedOut:"SignedOut"},k=m({id:"core.auth.google"}),x=m({id:"core.auth.github"}),A=m({id:"core.auth.okta"}),R=m({id:"core.auth.gitlab"}),$=m({id:"core.auth.microsoft"}),P=m({id:"core.auth.onelogin"}),E=m({id:"core.auth.bitbucket"}),T=m({id:"core.auth.bitbucket-server"}),S=m({id:"core.auth.atlassian"}),j=m({id:"core.auth.vmware-cloud"}),O=m({id:"core.auth.openshift"}),_=m({id:"core.alert"}),I=m({id:"core.applanguage"}),Z=m({id:"core.apptheme"}),N=m({id:"core.swappable-components"}),M=m({id:"core.config"}),F=m({id:"core.discovery"}),C=m({id:"core.error"}),Y={None:0,Active:1},z=m({id:"core.featureflags"}),L=m({id:"core.fetch"}),D=m({id:"core.icons"}),B=m({id:"core.identity"}),U=m({id:"core.dialog"}),V=m({id:"core.oauthrequest"}),q=m({id:"core.route-resolution"}),G=m({id:"core.storage"}),W=m({id:"core.translation"});function H(e,t){return"id"in e?{api:e,deps:{},factory:()=>t}:e}const K=Symbol("Let zodToJsonSchema decide on which parser to use"),X={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:"definitions",target:"jsonSchema7",strictUnions:!1,definitions:{},errorMessages:!1,markdownDescription:!1,patternStrategy:"escape",applyRegexFlags:!1,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref",openAiAnyTypeName:"OpenAiAnyType"};var J=n(53215);const Q=(e,t)=>{let n=0;for(;n<e.length&&n<t.length&&e[n]===t[n];n++);return[(e.length-n).toString(),...t.slice(n)].join("/")};function ee(e){if("openAi"!==e.target)return{};const t=[...e.basePath,e.definitionPath,e.openAiAnyTypeName];return e.flags.hasReferencedOpenAiAnyType=!0,{$ref:"relative"===e.$refStrategy?Q(t,e.currentPath):t.join("/")}}function te(e,t,n,r){r?.errorMessages&&n&&(e.errorMessage={...e.errorMessage,[t]:n})}function ne(e,t,n,r,a){e[t]=n,te(e,t,r,a)}function re(e,t){return Se(e.type._def,t)}function ae(e,t,n){const r=n??t.dateStrategy;if(Array.isArray(r))return{anyOf:r.map((n,r)=>ae(e,t,n))};switch(r){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return ie(e,t)}}const ie=(e,t)=>{const n={type:"integer",format:"unix-time"};if("openApi3"===t.target)return n;for(const r of e.checks)switch(r.kind){case"min":ne(n,"minimum",r.value,r.message,t);break;case"max":ne(n,"maximum",r.value,r.message,t)}return n};let oe;const se=/^[cC][^\s-]{8,}$/,ce=/^[0-9a-z]+$/,ue=/^[0-9A-HJKMNP-TV-Z]{26}$/,pe=/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,de=()=>(void 0===oe&&(oe=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),oe),le=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,fe=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,me=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,he=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,ge=/^[a-zA-Z0-9_-]{21}$/,ye=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/;function ve(e,t){const n={type:"string"};if(e.checks)for(const r of e.checks)switch(r.kind){case"min":ne(n,"minLength","number"==typeof n.minLength?Math.max(n.minLength,r.value):r.value,r.message,t);break;case"max":ne(n,"maxLength","number"==typeof n.maxLength?Math.min(n.maxLength,r.value):r.value,r.message,t);break;case"email":switch(t.emailStrategy){case"format:email":ke(n,"email",r.message,t);break;case"format:idn-email":ke(n,"idn-email",r.message,t);break;case"pattern:zod":xe(n,pe,r.message,t)}break;case"url":ke(n,"uri",r.message,t);break;case"uuid":ke(n,"uuid",r.message,t);break;case"regex":xe(n,r.regex,r.message,t);break;case"cuid":xe(n,se,r.message,t);break;case"cuid2":xe(n,ce,r.message,t);break;case"startsWith":xe(n,RegExp(`^${be(r.value,t)}`),r.message,t);break;case"endsWith":xe(n,RegExp(`${be(r.value,t)}$`),r.message,t);break;case"datetime":ke(n,"date-time",r.message,t);break;case"date":ke(n,"date",r.message,t);break;case"time":ke(n,"time",r.message,t);break;case"duration":ke(n,"duration",r.message,t);break;case"length":ne(n,"minLength","number"==typeof n.minLength?Math.max(n.minLength,r.value):r.value,r.message,t),ne(n,"maxLength","number"==typeof n.maxLength?Math.min(n.maxLength,r.value):r.value,r.message,t);break;case"includes":xe(n,RegExp(be(r.value,t)),r.message,t);break;case"ip":"v6"!==r.version&&ke(n,"ipv4",r.message,t),"v4"!==r.version&&ke(n,"ipv6",r.message,t);break;case"base64url":xe(n,he,r.message,t);break;case"jwt":xe(n,ye,r.message,t);break;case"cidr":"v6"!==r.version&&xe(n,le,r.message,t),"v4"!==r.version&&xe(n,fe,r.message,t);break;case"emoji":xe(n,de(),r.message,t);break;case"ulid":xe(n,ue,r.message,t);break;case"base64":switch(t.base64Strategy){case"format:binary":ke(n,"binary",r.message,t);break;case"contentEncoding:base64":ne(n,"contentEncoding","base64",r.message,t);break;case"pattern:zod":xe(n,me,r.message,t)}break;case"nanoid":xe(n,ge,r.message,t);case"toLowerCase":case"toUpperCase":case"trim":break;default:(()=>{})()}return n}function be(e,t){return"escape"===t.patternStrategy?function(e){let t="";for(let n=0;n<e.length;n++)we.has(e[n])||(t+="\\"),t+=e[n];return t}(e):e}const we=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function ke(e,t,n,r){e.format||e.anyOf?.some(e=>e.format)?(e.anyOf||(e.anyOf=[]),e.format&&(e.anyOf.push({format:e.format,...e.errorMessage&&r.errorMessages&&{errorMessage:{format:e.errorMessage.format}}}),delete e.format,e.errorMessage&&(delete e.errorMessage.format,0===Object.keys(e.errorMessage).length&&delete e.errorMessage)),e.anyOf.push({format:t,...n&&r.errorMessages&&{errorMessage:{format:n}}})):ne(e,"format",t,n,r)}function xe(e,t,n,r){e.pattern||e.allOf?.some(e=>e.pattern)?(e.allOf||(e.allOf=[]),e.pattern&&(e.allOf.push({pattern:e.pattern,...e.errorMessage&&r.errorMessages&&{errorMessage:{pattern:e.errorMessage.pattern}}}),delete e.pattern,e.errorMessage&&(delete e.errorMessage.pattern,0===Object.keys(e.errorMessage).length&&delete e.errorMessage)),e.allOf.push({pattern:Ae(t,r),...n&&r.errorMessages&&{errorMessage:{pattern:n}}})):ne(e,"pattern",Ae(t,r),n,r)}function Ae(e,t){if(!t.applyRegexFlags||!e.flags)return e.source;const n=e.flags.includes("i"),r=e.flags.includes("m"),a=e.flags.includes("s"),i=n?e.source.toLowerCase():e.source;let o="",s=!1,c=!1,u=!1;for(let e=0;e<i.length;e++)if(s)o+=i[e],s=!1;else{if(n)if(c){if(i[e].match(/[a-z]/)){u?(o+=i[e],o+=`${i[e-2]}-${i[e]}`.toUpperCase(),u=!1):"-"===i[e+1]&&i[e+2]?.match(/[a-z]/)?(o+=i[e],u=!0):o+=`${i[e]}${i[e].toUpperCase()}`;continue}}else if(i[e].match(/[a-z]/)){o+=`[${i[e]}${i[e].toUpperCase()}]`;continue}if(r){if("^"===i[e]){o+="(^|(?<=[\r\n]))";continue}if("$"===i[e]){o+="($|(?=[\r\n]))";continue}}a&&"."===i[e]?o+=c?`${i[e]}\r\n`:`[${i[e]}\r\n]`:(o+=i[e],"\\"===i[e]?s=!0:c&&"]"===i[e]?c=!1:c||"["!==i[e]||(c=!0))}try{new RegExp(o)}catch{return console.warn(`Could not convert regex pattern at ${t.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),e.source}return o}function Re(e,t){if("openAi"===t.target&&console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."),"openApi3"===t.target&&e.keyType?._def.typeName===J.kY.ZodEnum)return{type:"object",required:e.keyType._def.values,properties:e.keyType._def.values.reduce((n,r)=>({...n,[r]:Se(e.valueType._def,{...t,currentPath:[...t.currentPath,"properties",r]})??ee(t)}),{}),additionalProperties:t.rejectedAdditionalProperties};const n={type:"object",additionalProperties:Se(e.valueType._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]})??t.allowedAdditionalProperties};if("openApi3"===t.target)return n;if(e.keyType?._def.typeName===J.kY.ZodString&&e.keyType._def.checks?.length){const{type:r,...a}=ve(e.keyType._def,t);return{...n,propertyNames:a}}if(e.keyType?._def.typeName===J.kY.ZodEnum)return{...n,propertyNames:{enum:e.keyType._def.values}};if(e.keyType?._def.typeName===J.kY.ZodBranded&&e.keyType._def.type._def.typeName===J.kY.ZodString&&e.keyType._def.type._def.checks?.length){const{type:r,...a}=re(e.keyType._def,t);return{...n,propertyNames:a}}return n}const $e={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"},Pe=(e,t)=>{const n=(e.options instanceof Map?Array.from(e.options.values()):e.options).map((e,n)=>Se(e._def,{...t,currentPath:[...t.currentPath,"anyOf",`${n}`]})).filter(e=>!!e&&(!t.strictUnions||"object"==typeof e&&Object.keys(e).length>0));return n.length?{anyOf:n}:void 0};function Ee(e){try{return e.isOptional()}catch{return!0}}const Te=(e,t,n)=>{switch(t){case J.kY.ZodString:return ve(e,n);case J.kY.ZodNumber:return function(e,t){const n={type:"number"};if(!e.checks)return n;for(const r of e.checks)switch(r.kind){case"int":n.type="integer",te(n,"type",r.message,t);break;case"min":"jsonSchema7"===t.target?r.inclusive?ne(n,"minimum",r.value,r.message,t):ne(n,"exclusiveMinimum",r.value,r.message,t):(r.inclusive||(n.exclusiveMinimum=!0),ne(n,"minimum",r.value,r.message,t));break;case"max":"jsonSchema7"===t.target?r.inclusive?ne(n,"maximum",r.value,r.message,t):ne(n,"exclusiveMaximum",r.value,r.message,t):(r.inclusive||(n.exclusiveMaximum=!0),ne(n,"maximum",r.value,r.message,t));break;case"multipleOf":ne(n,"multipleOf",r.value,r.message,t)}return n}(e,n);case J.kY.ZodObject:return function(e,t){const n="openAi"===t.target,r={type:"object",properties:{}},a=[],i=e.shape();for(const e in i){let o=i[e];if(void 0===o||void 0===o._def)continue;let s=Ee(o);s&&n&&("ZodOptional"===o._def.typeName&&(o=o._def.innerType),o.isNullable()||(o=o.nullable()),s=!1);const c=Se(o._def,{...t,currentPath:[...t.currentPath,"properties",e],propertyPath:[...t.currentPath,"properties",e]});void 0!==c&&(r.properties[e]=c,s||a.push(e))}a.length&&(r.required=a);const o=function(e,t){if("ZodNever"!==e.catchall._def.typeName)return Se(e.catchall._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]});switch(e.unknownKeys){case"passthrough":return t.allowedAdditionalProperties;case"strict":return t.rejectedAdditionalProperties;case"strip":return"strict"===t.removeAdditionalStrategy?t.allowedAdditionalProperties:t.rejectedAdditionalProperties}}(e,t);return void 0!==o&&(r.additionalProperties=o),r}(e,n);case J.kY.ZodBigInt:return function(e,t){const n={type:"integer",format:"int64"};if(!e.checks)return n;for(const r of e.checks)switch(r.kind){case"min":"jsonSchema7"===t.target?r.inclusive?ne(n,"minimum",r.value,r.message,t):ne(n,"exclusiveMinimum",r.value,r.message,t):(r.inclusive||(n.exclusiveMinimum=!0),ne(n,"minimum",r.value,r.message,t));break;case"max":"jsonSchema7"===t.target?r.inclusive?ne(n,"maximum",r.value,r.message,t):ne(n,"exclusiveMaximum",r.value,r.message,t):(r.inclusive||(n.exclusiveMaximum=!0),ne(n,"maximum",r.value,r.message,t));break;case"multipleOf":ne(n,"multipleOf",r.value,r.message,t)}return n}(e,n);case J.kY.ZodBoolean:return{type:"boolean"};case J.kY.ZodDate:return ae(e,n);case J.kY.ZodUndefined:return function(e){return{not:ee(e)}}(n);case J.kY.ZodNull:return function(e){return"openApi3"===e.target?{enum:["null"],nullable:!0}:{type:"null"}}(n);case J.kY.ZodArray:return function(e,t){const n={type:"array"};return e.type?._def&&e.type?._def?.typeName!==J.kY.ZodAny&&(n.items=Se(e.type._def,{...t,currentPath:[...t.currentPath,"items"]})),e.minLength&&ne(n,"minItems",e.minLength.value,e.minLength.message,t),e.maxLength&&ne(n,"maxItems",e.maxLength.value,e.maxLength.message,t),e.exactLength&&(ne(n,"minItems",e.exactLength.value,e.exactLength.message,t),ne(n,"maxItems",e.exactLength.value,e.exactLength.message,t)),n}(e,n);case J.kY.ZodUnion:case J.kY.ZodDiscriminatedUnion:return function(e,t){if("openApi3"===t.target)return Pe(e,t);const n=e.options instanceof Map?Array.from(e.options.values()):e.options;if(n.every(e=>e._def.typeName in $e&&(!e._def.checks||!e._def.checks.length))){const e=n.reduce((e,t)=>{const n=$e[t._def.typeName];return n&&!e.includes(n)?[...e,n]:e},[]);return{type:e.length>1?e:e[0]}}if(n.every(e=>"ZodLiteral"===e._def.typeName&&!e.description)){const e=n.reduce((e,t)=>{const n=typeof t._def.value;switch(n){case"string":case"number":case"boolean":return[...e,n];case"bigint":return[...e,"integer"];case"object":if(null===t._def.value)return[...e,"null"];default:return e}},[]);if(e.length===n.length){const t=e.filter((e,t,n)=>n.indexOf(e)===t);return{type:t.length>1?t:t[0],enum:n.reduce((e,t)=>e.includes(t._def.value)?e:[...e,t._def.value],[])}}}else if(n.every(e=>"ZodEnum"===e._def.typeName))return{type:"string",enum:n.reduce((e,t)=>[...e,...t._def.values.filter(t=>!e.includes(t))],[])};return Pe(e,t)}(e,n);case J.kY.ZodIntersection:return function(e,t){const n=[Se(e.left._def,{...t,currentPath:[...t.currentPath,"allOf","0"]}),Se(e.right._def,{...t,currentPath:[...t.currentPath,"allOf","1"]})].filter(e=>!!e);let r="jsonSchema2019-09"===t.target?{unevaluatedProperties:!1}:void 0;const a=[];return n.forEach(e=>{if("type"in(t=e)&&"string"===t.type||!("allOf"in t)){let t=e;if("additionalProperties"in e&&!1===e.additionalProperties){const{additionalProperties:n,...r}=e;t=r}else r=void 0;a.push(t)}else a.push(...e.allOf),void 0===e.unevaluatedProperties&&(r=void 0);var t}),a.length?{allOf:a,...r}:void 0}(e,n);case J.kY.ZodTuple:return function(e,t){return e.rest?{type:"array",minItems:e.items.length,items:e.items.map((e,n)=>Se(e._def,{...t,currentPath:[...t.currentPath,"items",`${n}`]})).reduce((e,t)=>void 0===t?e:[...e,t],[]),additionalItems:Se(e.rest._def,{...t,currentPath:[...t.currentPath,"additionalItems"]})}:{type:"array",minItems:e.items.length,maxItems:e.items.length,items:e.items.map((e,n)=>Se(e._def,{...t,currentPath:[...t.currentPath,"items",`${n}`]})).reduce((e,t)=>void 0===t?e:[...e,t],[])}}(e,n);case J.kY.ZodRecord:return Re(e,n);case J.kY.ZodLiteral:return function(e,t){const n=typeof e.value;return"bigint"!==n&&"number"!==n&&"boolean"!==n&&"string"!==n?{type:Array.isArray(e.value)?"array":"object"}:"openApi3"===t.target?{type:"bigint"===n?"integer":n,enum:[e.value]}:{type:"bigint"===n?"integer":n,const:e.value}}(e,n);case J.kY.ZodEnum:return function(e){return{type:"string",enum:Array.from(e.values)}}(e);case J.kY.ZodNativeEnum:return function(e){const t=e.values,n=Object.keys(e.values).filter(e=>"number"!=typeof t[t[e]]).map(e=>t[e]),r=Array.from(new Set(n.map(e=>typeof e)));return{type:1===r.length?"string"===r[0]?"string":"number":["string","number"],enum:n}}(e);case J.kY.ZodNullable:return function(e,t){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(e.innerType._def.typeName)&&(!e.innerType._def.checks||!e.innerType._def.checks.length))return"openApi3"===t.target?{type:$e[e.innerType._def.typeName],nullable:!0}:{type:[$e[e.innerType._def.typeName],"null"]};if("openApi3"===t.target){const n=Se(e.innerType._def,{...t,currentPath:[...t.currentPath]});return n&&"$ref"in n?{allOf:[n],nullable:!0}:n&&{...n,nullable:!0}}const n=Se(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","0"]});return n&&{anyOf:[n,{type:"null"}]}}(e,n);case J.kY.ZodOptional:return((e,t)=>{if(t.currentPath.toString()===t.propertyPath?.toString())return Se(e.innerType._def,t);const n=Se(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","1"]});return n?{anyOf:[{not:ee(t)},n]}:ee(t)})(e,n);case J.kY.ZodMap:return function(e,t){return"record"===t.mapStrategy?Re(e,t):{type:"array",maxItems:125,items:{type:"array",items:[Se(e.keyType._def,{...t,currentPath:[...t.currentPath,"items","items","0"]})||ee(t),Se(e.valueType._def,{...t,currentPath:[...t.currentPath,"items","items","1"]})||ee(t)],minItems:2,maxItems:2}}}(e,n);case J.kY.ZodSet:return function(e,t){const n={type:"array",uniqueItems:!0,items:Se(e.valueType._def,{...t,currentPath:[...t.currentPath,"items"]})};return e.minSize&&ne(n,"minItems",e.minSize.value,e.minSize.message,t),e.maxSize&&ne(n,"maxItems",e.maxSize.value,e.maxSize.message,t),n}(e,n);case J.kY.ZodLazy:return()=>e.getter()._def;case J.kY.ZodPromise:return function(e,t){return Se(e.type._def,t)}(e,n);case J.kY.ZodNaN:case J.kY.ZodNever:return function(e){return"openAi"===e.target?void 0:{not:ee({...e,currentPath:[...e.currentPath,"not"]})}}(n);case J.kY.ZodEffects:return function(e,t){return"input"===t.effectStrategy?Se(e.schema._def,t):ee(t)}(e,n);case J.kY.ZodAny:return ee(n);case J.kY.ZodUnknown:return function(e){return ee(e)}(n);case J.kY.ZodDefault:return function(e,t){return{...Se(e.innerType._def,t),default:e.defaultValue()}}(e,n);case J.kY.ZodBranded:return re(e,n);case J.kY.ZodReadonly:case J.kY.ZodCatch:return((e,t)=>Se(e.innerType._def,t))(e,n);case J.kY.ZodPipeline:return((e,t)=>{if("input"===t.pipeStrategy)return Se(e.in._def,t);if("output"===t.pipeStrategy)return Se(e.out._def,t);const n=Se(e.in._def,{...t,currentPath:[...t.currentPath,"allOf","0"]});return{allOf:[n,Se(e.out._def,{...t,currentPath:[...t.currentPath,"allOf",n?"1":"0"]})].filter(e=>void 0!==e)}})(e,n);case J.kY.ZodFunction:case J.kY.ZodVoid:case J.kY.ZodSymbol:default:return}};function Se(e,t,n=!1){const r=t.seen.get(e);if(t.override){const a=t.override?.(e,t,r,n);if(a!==K)return a}if(r&&!n){const e=je(r,t);if(void 0!==e)return e}const a={def:e,path:t.currentPath,jsonSchema:void 0};t.seen.set(e,a);const i=Te(e,e.typeName,t),o="function"==typeof i?Se(i(),t):i;if(o&&Oe(e,t,o),t.postProcess){const n=t.postProcess(o,e,t);return a.jsonSchema=o,n}return a.jsonSchema=o,o}const je=(e,t)=>{switch(t.$refStrategy){case"root":return{$ref:e.path.join("/")};case"relative":return{$ref:Q(t.currentPath,e.path)};case"none":case"seen":return e.path.length<t.currentPath.length&&e.path.every((e,n)=>t.currentPath[n]===e)?(console.warn(`Recursive reference detected at ${t.currentPath.join("/")}! Defaulting to any`),ee(t)):"seen"===t.$refStrategy?ee(t):void 0}},Oe=(e,t,n)=>(e.description&&(n.description=e.description,t.markdownDescription&&(n.markdownDescription=e.description)),n),_e=(e,t)=>{const n=(e=>{const t=(e=>"string"==typeof e?{...X,name:e}:{...X,...e})(e),n=void 0!==t.name?[...t.basePath,t.definitionPath,t.name]:t.basePath;return{...t,flags:{hasReferencedOpenAiAnyType:!1},currentPath:n,propertyPath:void 0,seen:new Map(Object.entries(t.definitions).map(([e,n])=>[n._def,{def:n._def,path:[...t.basePath,t.definitionPath,e],jsonSchema:void 0}]))}})(t);let r="object"==typeof t&&t.definitions?Object.entries(t.definitions).reduce((e,[t,r])=>({...e,[t]:Se(r._def,{...n,currentPath:[...n.basePath,n.definitionPath,t]},!0)??ee(n)}),{}):void 0;const a="string"==typeof t?t:"title"===t?.nameStrategy?void 0:t?.name,i=Se(e._def,void 0===a?n:{...n,currentPath:[...n.basePath,n.definitionPath,a]},!1)??ee(n),o="object"==typeof t&&void 0!==t.name&&"title"===t.nameStrategy?t.name:void 0;void 0!==o&&(i.title=o),n.flags.hasReferencedOpenAiAnyType&&(r||(r={}),r[n.openAiAnyTypeName]||(r[n.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:"relative"===n.$refStrategy?"1":[...n.basePath,n.definitionPath,n.openAiAnyTypeName].join("/")}}));const s=void 0===a?r?{...i,[n.definitionPath]:r}:i:{$ref:[..."relative"===n.$refStrategy?[]:n.basePath,n.definitionPath,a].join("/"),[n.definitionPath]:{...r,[a]:i}};return"jsonSchema7"===n.target?s.$schema="http://json-schema.org/draft-07/schema#":"jsonSchema2019-09"!==n.target&&"openAi"!==n.target||(s.$schema="https://json-schema.org/draft/2019-09/schema#"),"openAi"===n.target&&("anyOf"in s||"oneOf"in s||"allOf"in s||"type"in s&&Array.isArray(s.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),s};function Ie(){const e=e=>Object.assign(t=>({$$type:"@backstage/ExtensionDataValue",id:e,value:t}),{id:e,$$type:"@backstage/ExtensionDataRef",config:{},optional(){return{...this,config:{...this.config,optional:!0}}},toString(){const t=Boolean(this.config.optional);return`ExtensionDataRef{id=${e},optional=${t}}`}});return{with:t=>e(t.id)}}function Ze(e,t,n){if("object"!=typeof e||!e?.[Symbol.iterator])throw new Error(`${t} did not provide an iterable object`);const r=new Map,a=n&&new Map(n.map(e=>[e.id,e]));for(const t of e){if(a&&!a.delete(t.id))throw new Error(`extension data '${t.id}' was provided but not declared`);r.set(t.id,t)}const i=a&&Array.from(a.values()).filter(e=>!e.config.optional);if(i&&i.length>0)throw new Error(`missing required extension data value(s) '${i.map(e=>e.id).join(", ")}'`);return{get:e=>r.get(e.id)?.value,[Symbol.iterator]:()=>r.values()}}function Ne(e){return e}function Me(e){return e}function Fe(e,t,n){if(!e||!t||!n)return t;const r={};for(const a in e){if(!Object.hasOwn(e,a))continue;const i=e[a],o=n[a];if(i.config.singleton){const e=Me(t[a]);if(o){const t=Ze(o,"extension input override",i.extensionData);if(!e)throw new Error(`attempted to override data of input '${a}' but it is not present in the original inputs`);r[a]=Object.assign(t,{node:e.node})}}else{const e=Ne(t[a]);if(!Array.isArray(o))throw new Error(`override data provided for input '${a}' must be an array`);if(0===o.length)r[a]=[];else{const t=o.filter(e=>"node"in e).length;if(0===t){if(e.length!==o.length)throw new Error(`override data provided for input '${a}' must match the length of the original inputs`);r[a]=o.map((t,n)=>{const r=Ze(t,"extension input override",i.extensionData);return Object.assign(r,{node:e[n].node})})}else{if(t!==o.length)throw new Error(`override data for input '${a}' may not mix forwarded inputs with data overrides`);r[a]=o}}}}return r}var Ce=n(33587);function Ye(e){if("invalid_union"===e.code)return Ye(e.unionErrors[0].issues[0]);let t=e.message;return"Required"===t&&(t="Missing required value"),e.path.length&&(t+=` at '${e.path.join(".")}'`),t}class ze{static create(e){return new ze(e.type,new Set(e.versions))}#e;#t;constructor(e,t){this.#e=e,this.#t=t}TPublic=void 0;TInternal=void 0;isType=e=>this.#n(e);toInternal=e=>{if(!this.#n(e))throw new TypeError(`Invalid opaque type, expected '${this.#e}', but got '${this.#r(e)}'`);if(!this.#t.has(e.version)){const t=Array.from(this.#t).map(this.#a);t.length>1&&(t[t.length-1]=`or ${t[t.length-1]}`);const n=t.length>2?t.join(", "):t.join(" ");throw new TypeError(`Invalid opaque type instance, got version ${this.#a(e.version)}, expected ${n}`)}return e};createInstance(e,t){return Object.assign(t,{$$type:this.#e,...e&&{version:e}})}#n(e){return null!==e&&"object"==typeof e&&e.$$type===this.#e}#r(e){return"object"!=typeof e?`<${typeof e}>`:null===e?"<null>":String("$$type"in e?e.$$type:e)}#a=e=>e?`'${e}'`:"undefined"}const Le=ze.create({type:"@backstage/ExtensionDefinition",versions:["v1","v2"]}),De=ze.create({type:"@backstage/ExtensionInput",versions:[void 0]}),Be=Symbol("params");function Ue(e,t,n){return e?Object.fromEntries(Object.entries(e).map(([e,r])=>[e,De.toInternal(r).withContext?.({kind:t,name:n,input:e})??r])):{}}function Ve(e){const t=e.config?.schema,n=t&&function(){const e=(n=Ce).object(Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t(n)])));var n;return{parse:t=>{const n=e.safeParse(t);if(n.success)return n.data;throw new Error(n.error.issues.map(Ye).join("; "))},schema:_e(e)}}();return Le.createInstance("v2",{T:void 0,kind:e.kind,name:e.name,attachTo:e.attachTo,disabled:e.disabled??!1,inputs:Ue(e.inputs,e.kind,e.name),output:e.output,configSchema:n,factory:e.factory,toString(){const t=[];e.kind&&t.push(`kind=${e.kind}`),e.name&&t.push(`name=${e.name}`);const n=[e.attachTo].flat().map(e=>{const t=e;if(De.isType(t)){const{context:e}=De.toInternal(t);if(!e)return"<detached-input>";let n="<plugin>";return e?.kind&&(n=`${e?.kind}:${n}`),e?.name&&(n=`${n}/${e?.name}`),`${n}@${e.input}`}if("relative"in t&&t.relative){let e="<plugin>";return t.relative.kind&&(e=`${t.relative.kind}:${e}`),t.relative.name&&(e=`${e}/${t.relative.name}`),`${e}@${t.input}`}if("id"in t)return`${t.id}@${t.input}`;throw new Error("Invalid attachment point specification")}).join("+");return t.push(`attachTo=${n}`),`ExtensionDefinition{${t.join(",")}}`},override(t){if(!Array.isArray(e.output))throw new Error("Cannot override an extension that is not declared using the new format with outputs as an array");if(t.output&&!t.factory)throw new Error("Refused to override output without also overriding factory");if(t.params&&t.factory)throw new Error("Refused to override params and factory at the same time");return Ve({kind:e.kind,name:e.name,attachTo:t.attachTo??e.attachTo,disabled:t.disabled??e.disabled,inputs:Ue({...e.inputs??{},...t.inputs??{}},e.kind,e.name),output:t.output??e.output,config:e.config||t.config?{schema:{...e.config?.schema,...t.config?.schema}}:void 0,factory:({node:n,apis:r,config:a,inputs:i})=>{if(!t.factory)return e.factory({node:n,apis:r,config:a,inputs:i,[Be]:t.params});const o=t.factory(t=>Ze(e.factory({node:n,apis:r,config:t?.config??a,inputs:Fe(e.inputs,i,t?.inputs),[Be]:t?.params}),"original extension factory",e.output),{node:n,apis:r,config:a,inputs:i});if("object"!=typeof o||!o?.[Symbol.iterator])throw new Error("extension factory override did not provide an iterable object");const s=new Map;for(const e of o)s.set(e.id,e);return s.values()}})}})}const qe=ze.create({type:"@backstage/BlueprintParams",versions:["v1"]});function Ge(e){return qe.createInstance("v1",{T:null,params:e})}function We(e,t,n){const r=e(t);try{return qe.toInternal(r).params}catch(e){throw new TypeError(`Invalid invocation of blueprint with kind '${n}', the parameter definition callback function did not return a valid parameter definition object; Caused by: ${e.message}`)}}function He(e,t,n,r){const a=t[Be];if(n){if(a){if("function"!=typeof a)throw new TypeError(`Invalid extension override of blueprint with kind '${r}', the override params were passed as a plain object, but this blueprint requires them to be passed in callback form`);return We(a,n,r)}if("function"!=typeof e)throw new TypeError(`Invalid invocation of blueprint with kind '${r}', the parameters where passed as a plain object, but this blueprint requires them to be passed in callback form`);return We(e,n,r)}return{..."function"==typeof e?We(e,Ge,r):e,..."function"==typeof a?We(a,Ge,r):a}}function Ke(e){const t=e.defineParams;return{dataRefs:e.dataRefs,make:n=>Ve({kind:e.kind,name:n.name,attachTo:n.attachTo??e.attachTo,disabled:n.disabled??e.disabled,inputs:e.inputs,output:e.output,config:e.config,factory:r=>e.factory(He(n.params,r,t,e.kind),r)}),makeWithOverrides:n=>Ve({kind:e.kind,name:n.name,attachTo:n.attachTo??e.attachTo,disabled:n.disabled??e.disabled,inputs:{...n.inputs,...e.inputs},output:n.output??e.output,config:e.config||n.config?{schema:{...e.config?.schema,...n.config?.schema}}:void 0,factory:r=>{const{node:a,config:i,inputs:o,apis:s}=r;return n.factory((n,c)=>Ze(e.factory(He(n,r,t,e.kind),{apis:s,node:a,config:c?.config??i,inputs:Fe(e.inputs,o,c?.inputs)}),"original blueprint factory",e.output),{apis:s,node:a,config:i,inputs:o})}})}}const Xe=Ie().with({id:"core.analytics.factory"}),Je=Ke({kind:"analytics",attachTo:[{id:"api:app/analytics",input:"implementations"}],output:[Xe],dataRefs:{factory:Xe},defineParams:e=>Ge(e),*factory(e){yield Xe(e)}}),Qe=Ie().with({id:"core.api.factory"}),et=Ke({kind:"api",attachTo:{id:"root",input:"apis"},output:[Qe],dataRefs:{factory:Qe},defineParams:e=>Ge(e),*factory(e){yield Qe(e)}});var tt=n(94050);const nt={title:Ie().with({id:"core.title"}),reactElement:Ie().with({id:"core.reactElement"}),routePath:Ie().with({id:"core.routing.path"}),routeRef:Ie().with({id:"core.routing.ref"})},rt=Ke({kind:"app-root-element",attachTo:{id:"app/root",input:"elements"},output:[nt.reactElement],*factory(e,{node:t}){yield nt.reactElement((0,r.jsx)(tt.ExtensionBoundary,{node:t,errorPresentation:"error-api",children:e.element}))}}),at=Ie().with({id:"app.root.wrapper"}),it=Ke({kind:"app-root-wrapper",attachTo:{id:"app/root",input:"wrappers"},output:[at],dataRefs:{component:at},*factory(e){yield at(e.component)}}),ot=Ie().with({id:"core.icons"}),st=Ke({kind:"icon-bundle",attachTo:{id:"api:app/icons",input:"icons"},output:[ot],factory:e=>[ot(e.icons)],dataRefs:{icons:ot}}),ct=Ie().with({id:"core.nav-content.component"}),ut=Ke({kind:"nav-content",attachTo:{id:"app/nav",input:"content"},output:[ct],dataRefs:{component:ct},*factory(e){yield ct(e.component)}}),pt=Ie().with({id:"core.nav-item.target"}),dt=Ke({kind:"nav-item",attachTo:{id:"app/nav",input:"items"},output:[pt],dataRefs:{target:pt},factory:({icon:e,routeRef:t,title:n},{config:r})=>[pt({title:r.title??n,icon:e,routeRef:t})],config:{schema:{title:e=>e.string().optional()}}}),lt=ze.create({versions:["v1"],type:"@backstage/SwappableComponentRef"}),ft=()=>{try{return d(N)}catch(e){return}};function mt(e){const t=t=>(0,r.jsx)("div",{"data-testid":e.id,...t}),n=lt.createInstance("v1",{id:e.id,TProps:null,TExternalProps:null,toString:()=>`SwappableComponentRef{id=${e.id}}`,defaultComponent:(0,i.lazy)(async()=>({default:await(e.loader?.())??t})),transformProps:e.transformProps}),a=e=>{const t=ft();if(!t){const t=lt.toInternal(n),a=t.defaultComponent,i=t.transformProps?.(e)??e;return(0,r.jsx)(a,{...i})}const a=t.getComponent(n);return(0,r.jsx)(a,{...e})};return Object.assign(a,{ref:n}),a}const ht=mt({id:"core-progress"}),gt=mt({id:"core-not-found-error-page"}),yt=mt({id:"core-error-display",loader:()=>e=>(0,r.jsx)("div",{"data-testid":"core-error-display",children:e.error.message})});class vt extends i.Component{static getDerivedStateFromError(e){return{error:e}}state={error:void 0};handleErrorReset=()=>{this.setState({error:void 0})};render(){const{error:e}=this.state,{plugin:t,children:n}=this.props;return e?(0,r.jsx)(yt,{plugin:t,error:e,resetError:this.handleErrorReset}):n}}class bt extends i.Component{static getDerivedStateFromError(e){return{error:e}}state={error:void 0};componentDidCatch(e,t){const{node:n,errorApi:r}=this.props;r?.post(new u.HK(`Error in extension '${n.spec.id}'`,e))}render(){return this.state.error?null:this.props.children}}(0,a.getOrCreateGlobalSingleton)("core-plugin-api:analytics-tracker-events",()=>({mostRecentGatheredNavigation:void 0,mostRecentRoutableExtensionRender:void 0,beforeUnloadRegistered:!1}));const wt=(0,tt.createApiRef)({id:"core.plugin-wrapper.alpha"}),kt="app-node-context",xt=(0,a.createVersionedContext)(kt);function At({node:e,children:t}){const n=(0,a.createVersionedValueMap)({1:{node:e}});return(0,r.jsx)(xt.Provider,{value:n,children:t})}function Rt(){const e=(0,a.useVersionedContext)(kt);if(!e)return;const t=e.atVersion(1);if(!t)throw new Error("AppNodeContext v1 not available");return t.node}const $t=e=>{const{enabled:t,children:n}=e,a=v();return(0,i.useEffect)(()=>{t&&a.captureEvent("_ROUTABLE-EXTENSION-RENDERED","")},[a,t]),(0,r.jsx)(r.Fragment,{children:n})};function Pt(e){const{node:t,children:n}=e,a=function(){try{return d(C)}catch{return}}(),o=Boolean(t.instance?.getData(nt.routePath)),s=t.spec.plugin,u=s.id??"app",p=function(){try{return d(wt)}catch{return}}(),l=(0,i.useMemo)(()=>p?.getPluginWrapper(u),[p,u]),f={extensionId:t.spec.id,pluginId:u};let m=(0,r.jsx)(c,{attributes:f,children:(0,r.jsx)($t,{enabled:o,children:n})});return l&&(m=(0,r.jsx)(l,{children:m})),m="error-api"===e.errorPresentation?(0,r.jsx)(bt,{node:t,errorApi:a,children:m}):(0,r.jsx)(vt,{plugin:s,children:m}),(0,r.jsx)(At,{node:t,children:(0,r.jsx)(i.Suspense,{fallback:(0,r.jsx)(ht,{}),children:m})})}var Et;(Et=Pt||(Pt={})).lazy=function(e,t){const n=(0,i.lazy)(()=>t().then(e=>({default:()=>e})));return(0,r.jsx)(Et,{node:e,children:(0,r.jsx)(n,{})})},Et.lazyComponent=function(e,t){const n=(0,i.lazy)(()=>t().then(e=>({default:e})));return t=>(0,r.jsx)(Et,{node:e,children:(0,r.jsx)(n,{...t})})};const Tt=Ke({kind:"page",attachTo:{id:"app/routes",input:"routes"},output:[nt.routePath,nt.reactElement,nt.routeRef.optional()],config:{schema:{path:e=>e.string().optional()}},*factory(e,{config:t,node:n}){yield nt.routePath(t.path??e.path),yield nt.reactElement(Pt.lazy(n,e.loader)),e.routeRef&&(yield nt.routeRef(e.routeRef))}}),St=Ie().with({id:"app.router.wrapper"}),jt=Ke({kind:"app-router-component",attachTo:{id:"app/root",input:"router"},output:[St],dataRefs:{component:St},*factory(e){yield St(e.component)}}),Ot=Ie().with({id:"core.sign-in-page.component"}),_t=Ke({kind:"sign-in-page",attachTo:{id:"app/root",input:"signInPage"},output:[Ot],dataRefs:{component:Ot},*factory({loader:e},{node:t}){const n=(0,i.lazy)(()=>e().then(e=>({default:e})));yield Ot(e=>(0,r.jsx)(Pt,{node:t,children:(0,r.jsx)(n,{...e})}))}}),It=Ie().with({id:"core.theme.theme"}),Zt=Ke({kind:"theme",attachTo:{id:"api:app/app-theme",input:"themes"},output:[It],dataRefs:{theme:It},factory:({theme:e})=>[It(e)]}),Nt=Ie().with({id:"core.translation.translation"}),Mt=Ke({kind:"translation",attachTo:{id:"api:app/translations",input:"translations"},output:[Nt],dataRefs:{translation:Nt},factory:({resource:e})=>[Nt(e)]}),Ft=Ie().with({id:"core.swappableComponent"}),Ct=Ke({kind:"component",attachTo:{id:"api:app/swappable-components",input:"components"},output:[Ft],dataRefs:{component:Ft},defineParams:e=>Ge(e),factory:e=>[Ft({ref:e.component.ref,loader:e.loader})]}),Yt="eHgtF5hmbrXyiEvo";function zt(e=Error){const{stack:t}=new e(Yt);if(!t)return"<unknown>";const n=t.includes(Yt)?t.indexOf("\n")+1:0,r=t.indexOf("\n",t.indexOf("\n",n)+1)+1,a=t.indexOf("\n",r),i=t.substring(r,a).trim();return i?i.includes("(")?i.substring(i.indexOf("(")+1,i.indexOf(")")):i.includes("@")?i.substring(i.indexOf("@")+1):i:"unknown"}const Lt=ze.create({type:"@backstage/RouteRef",versions:["v1"]});function Dt(e){const t=e?.params??[],n=zt();let r;return Lt.createInstance("v1",{T:void 0,getParams:()=>t,getDescription:()=>r||`created at '${n}'`,alias:e?.aliasFor,setId(e){if(!e)throw new Error("RouteRef id must be a non-empty string");if(r&&r!==e)throw new Error(`RouteRef was referenced twice as both '${r}' and '${e}'`);r=e},toString:()=>`routeRef{id=${r},at='${n}'}`})}const Bt=ze.create({type:"@backstage/SubRouteRef",versions:["v1"]}),Ut=/^\w+$/;function Vt(e){const{path:t,parent:n}=e,r=Lt.toInternal(n),a=r.getParams(),i=r.getDescription(),o=t.split("/").filter(e=>e.startsWith(":")).map(e=>e.substring(1)),s=[...a,...o];if(a.some(e=>o.includes(e)))throw new Error("SubRouteRef may not have params that overlap with its parent");if(!t.startsWith("/"))throw new Error(`SubRouteRef path must start with '/', got '${t}'`);if(t.endsWith("/"))throw new Error(`SubRouteRef path must not end with '/', got '${t}'`);for(const e of o)if(!Ut.test(e))throw new Error(`SubRouteRef path has invalid param, got '${e}'`);return Bt.createInstance("v1",{T:void 0,path:t,getParams:()=>s,getParent:()=>n,getDescription:()=>`at ${t} with parent ${i}`,toString:()=>`subRouteRef{path='${t}',parent=${n}}`})}const qt=ze.create({type:"@backstage/ExternalRouteRef",versions:["v1"]});function Gt(e){const t=e?.params??[],n=zt();let r;return qt.createInstance("v1",{T:void 0,getParams:()=>t,getDescription:()=>r||`created at '${n}'`,getDefaultTarget:()=>e?.defaultTarget,setId(e){if(!e)throw new Error("ExternalRouteRef id must be a non-empty string");if(r&&r!==e)throw new Error(`ExternalRouteRef was referenced twice as both '${r}' and '${e}'`);r=e},toString:()=>`externalRouteRef{id=${r},at='${n}'}`})}var Wt=n(49634);function Ht(e){const{pathname:t}=(0,Wt.useLocation)(),n=d(q);return(0,i.useMemo)(()=>n.resolve(e,{sourcePath:t}),[n,e,t])}function Kt(e){return(0,Wt.useParams)()}function Xt(e){return{$$type:"@backstage/TranslationMessages",id:e.ref.id,full:Boolean(e.full),messages:e.messages}}function Jt(e){return{$$type:"@backstage/TranslationResource",version:"v1",id:e.ref.id,resources:Object.entries(e.translations).map(([e,t])=>({language:e,loader:()=>t().then(e=>{const t=e.default;return{messages:"@backstage/TranslationMessages"===t?.$$type?t.messages:t}})}))}}class Qt{#i;#o;#s;constructor(e){this.#i=e.id,this.#o=function(e){const t=new Array;return function e(n,r){for(const[a,i]of Object.entries(n))"string"==typeof i?t.push([r+a,i]):e(i,`${r}${a}.`)}(e,""),Object.fromEntries(t)}(e.messages)}$$type="@backstage/TranslationRef";version="v1";get id(){return this.#i}get T(){throw new Error("Not implemented")}getDefaultMessages(){return this.#o}setDefaultResource(e){this.#s=e}getDefaultResource(){return this.#s}toString(){return`TranslationRef{id=${this.id}}`}}function en(e){const t=new Qt(e);return e.translations&&t.setDefaultResource(Jt({ref:t,translations:e.translations})),t}const tn=new WeakSet,nn=e=>{const t=d(C),n=d(W),[r,a]=(0,i.useState)(()=>n.getTranslation(e)),o=(0,i.useMemo)(()=>n.translation$(e),[n,e]),s=(0,i.useCallback)(n=>{if(!tn.has(e)){const r=`Failed to load translation resource '${e.id}'; caused by ${n}`;console.error(r),t.post(new Error(r)),tn.add(e)}},[t,e]);(0,i.useEffect)(()=>{const e=o.subscribe({next(e){e.ready&&a(e)},error(e){s(e)}});return()=>{e.unsubscribe()}},[o,s]);const c=(0,i.useRef)(!0);if((0,i.useEffect)(()=>{c.current?c.current=!1:a(n.getTranslation(e))},[n,e]),!r.ready)throw new Promise(e=>{const t=o.subscribe({next(n){n.ready&&(t.unsubscribe(),e())},error(n){t.unsubscribe(),s(n),e()}})});return{t:r.t}};function rn(e,t){const n={extensionData:e,config:{singleton:Boolean(t?.singleton),optional:Boolean(t?.optional)},replaces:t?.replaces};return function e(t){return De.createInstance(void 0,{...n,context:t,withContext:e})}()}function an(e,t,n){const r=n&&t?`${t}/${n}`:t||n;if(!r)throw new Error(`Extension must declare an explicit namespace or name as it could not be resolved from context, kind=${e} namespace=${t} name=${n}`);return e?`${e}:${r}`:r}function on(e,t){const n=e=>{if(De.isType(e)){const{context:n}=De.toInternal(e);if(!n)throw new Error("Invalid input object without a parent extension used as attachment point");return{id:an(n.kind,t,n.name),input:n.input}}if("relative"in e&&e.relative)return{id:an(e.relative.kind,t,e.relative.name),input:e.input};if("id"in e)return{id:e.id,input:e.input};throw new Error("Invalid attachment point specification")};return Array.isArray(e)?e.map(n):n(e)}function sn(e,t){const n=Le.toInternal(e),{name:r,kind:a,namespace:i,override:o,attachTo:s,...c}=n,u=i??t?.namespace,p=an(a,u,r);return{...c,attachTo:on(s,u),$$type:"@backstage/Extension",version:n.version,id:p,toString:()=>`Extension{id=${p}}`}}const cn=ze.create({type:"@backstage/FrontendPlugin",versions:["v1"]});function un(e){const t=e.pluginId,n=new Array,r=new Map;for(const a of e.extensions??[]){const e=Le.toInternal(a),i=sn(a,{namespace:t});n.push(i),r.set(i.id,{...e,namespace:t})}if(n.length!==r.size){const e=n.map(e=>e.id),r=Array.from(new Set(e.filter((t,n)=>e.indexOf(t)!==n)));throw new Error(`Plugin '${t}' provided duplicate extensions: ${r.join(", ")}`)}return cn.createInstance("v1",{id:t,routes:e.routes??{},externalRoutes:e.externalRoutes??{},featureFlags:e.featureFlags??[],extensions:n,infoOptions:e.info,async info(){throw new Error(`Attempted to load plugin info for plugin '${t}', but the plugin instance is not installed in an app`)},getExtension(e){const n=r.get(e);if(!n)throw new Error(`Attempted to get non-existent extension '${e}' from plugin '${t}'`);return n},toString:()=>`Plugin{id=${t}}`,withOverrides(n){const r=new Set(n.extensions.map(e=>sn(e,{namespace:t}).id)),a=(e.extensions??[]).filter(e=>!r.has(sn(e,{namespace:t}).id));return un({...e,pluginId:t,extensions:[...a,...n.extensions],info:{...e.info,...n.info}})}})}function pn(e){const{pluginId:t}=e,n=new Array,r=new Map;for(const a of e.extensions??[]){const e=Le.toInternal(a),i=sn(a,{namespace:t});n.push(i),r.set(i.id,{...e,namespace:t})}if(n.length!==r.size){const e=n.map(e=>e.id),r=Array.from(new Set(e.filter((t,n)=>e.indexOf(t)!==n)));throw new Error(`Plugin '${t}' provided duplicate extensions: ${r.join(", ")}`)}return{$$type:"@backstage/FrontendModule",version:"v1",pluginId:t,featureFlags:e.featureFlags??[],extensions:n,toString:()=>`Module{pluginId=${t}}`}}function dn(e){const t=`created at '${zt()}'`;return{$$type:"@backstage/FrontendFeatureLoader",version:"v1",description:t,toString:()=>`FeatureLoader{description=${t}}`,async loader(t){const n=await e.loader(t),r=new Array;for await(const e of n)if(ln(e))r.push(e);else{if(!("default"in e))throw new Error(`Invalid item "${e}"`);r.push(e.default)}return r}}}function ln(e){return null!==e&&"object"==typeof e&&"$$type"in e&&("@backstage/FrontendPlugin"===e.$$type||"@backstage/FrontendModule"===e.$$type||"@backstage/FrontendFeatureLoader"===e.$$type)}}}]);
|
|
2
|
+
//# sourceMappingURL=993.c164940e.chunk.js.map
|