@backstage/plugin-app 0.2.0-next.0 → 0.2.0-next.2
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/CHANGELOG.md +48 -0
- package/README.md +1 -7
- package/dist/alpha/appModulePublicSignIn.esm.js +52 -0
- package/dist/alpha/appModulePublicSignIn.esm.js.map +1 -0
- package/dist/alpha.d.ts +54 -0
- package/dist/alpha.esm.js +2 -0
- package/dist/alpha.esm.js.map +1 -0
- package/dist/apis/DefaultDialogApi.esm.js.map +1 -1
- package/dist/apis/SwappableComponentsApi/DefaultSwappableComponentsApi.esm.js +40 -0
- package/dist/apis/SwappableComponentsApi/DefaultSwappableComponentsApi.esm.js.map +1 -0
- package/dist/defaultApis.esm.js +23 -30
- package/dist/defaultApis.esm.js.map +1 -1
- package/dist/extensions/AnalyticsApi.esm.js +56 -0
- package/dist/extensions/AnalyticsApi.esm.js.map +1 -0
- package/dist/extensions/AppLanguageApi.esm.js +1 -1
- package/dist/extensions/AppLanguageApi.esm.js.map +1 -1
- package/dist/extensions/AppRoot.esm.js.map +1 -1
- package/dist/extensions/AppRoutes.esm.js +1 -4
- package/dist/extensions/AppRoutes.esm.js.map +1 -1
- package/dist/extensions/AppThemeApi.esm.js +1 -1
- package/dist/extensions/AppThemeApi.esm.js.map +1 -1
- package/dist/extensions/DialogDisplay.esm.js.map +1 -1
- package/dist/extensions/FeatureFlagsApi.esm.js +1 -1
- package/dist/extensions/FeatureFlagsApi.esm.js.map +1 -1
- package/dist/extensions/IconsApi.esm.js +1 -1
- package/dist/extensions/IconsApi.esm.js.map +1 -1
- package/dist/extensions/LegacyComponentsApi.esm.js +26 -0
- package/dist/extensions/LegacyComponentsApi.esm.js.map +1 -0
- package/dist/extensions/SwappableComponentsApi.esm.js +40 -0
- package/dist/extensions/SwappableComponentsApi.esm.js.map +1 -0
- package/dist/extensions/TranslationsApi.esm.js +1 -1
- package/dist/extensions/TranslationsApi.esm.js.map +1 -1
- package/dist/extensions/components.esm.js +21 -43
- package/dist/extensions/components.esm.js.map +1 -1
- package/dist/extensions/elements.esm.js +1 -1
- package/dist/extensions/elements.esm.js.map +1 -1
- package/dist/index.d.ts +143 -63
- package/dist/packages/frontend-internal/src/wiring/InternalExtensionDefinition.esm.js +7 -0
- package/dist/packages/frontend-internal/src/wiring/InternalExtensionDefinition.esm.js.map +1 -0
- package/dist/packages/frontend-internal/src/wiring/InternalFrontendPlugin.esm.js +7 -0
- package/dist/packages/frontend-internal/src/wiring/InternalFrontendPlugin.esm.js.map +1 -0
- package/dist/packages/frontend-internal/src/wiring/InternalSwappableComponentRef.esm.js +9 -0
- package/dist/packages/frontend-internal/src/wiring/InternalSwappableComponentRef.esm.js.map +1 -0
- package/dist/packages/opaque-internal/src/OpaqueType.esm.js +103 -0
- package/dist/packages/opaque-internal/src/OpaqueType.esm.js.map +1 -0
- package/dist/plugin.esm.js +9 -7
- package/dist/plugin.esm.js.map +1 -1
- package/dist/plugins/app/package.json.esm.js +26 -6
- package/dist/plugins/app/package.json.esm.js.map +1 -1
- package/package.json +38 -18
- package/dist/extensions/ComponentsApi.esm.js +0 -28
- package/dist/extensions/ComponentsApi.esm.js.map +0 -1
- package/dist/packages/app-defaults/src/defaults/components.esm.js +0 -46
- package/dist/packages/app-defaults/src/defaults/components.esm.js.map +0 -1
- package/dist/packages/core-app-api/src/apis/implementations/AnalyticsApi/NoOpAnalyticsApi.esm.js +0 -7
- package/dist/packages/core-app-api/src/apis/implementations/AnalyticsApi/NoOpAnalyticsApi.esm.js.map +0 -1
- package/dist/packages/frontend-app-api/src/apis/implementations/ComponentsApi/DefaultComponentsApi.esm.js +0 -21
- package/dist/packages/frontend-app-api/src/apis/implementations/ComponentsApi/DefaultComponentsApi.esm.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# @backstage/plugin-app
|
|
2
2
|
|
|
3
|
+
## 0.2.0-next.2
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- fda1bbc: **BREAKING**: The `componentsApi` implementation has been removed from the plugin and replaced with the new `SwappableComponentsApi` instead.
|
|
8
|
+
|
|
9
|
+
If you were overriding the `componentsApi` implementation, you can now use the new `SwappableComponentsApi` instead.
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
// old
|
|
13
|
+
appPlugin.getExtension('api:app/components').override(...)
|
|
14
|
+
|
|
15
|
+
// new
|
|
16
|
+
appPlugin.getExtension('api:app/swappable-components').override(...)
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- 91cbdf4: Log a warning when `SwappableComponent` extensions are installed outside of using the `app` plugin
|
|
22
|
+
- fda1bbc: Default implementations of core components are now provided by this package.
|
|
23
|
+
|
|
24
|
+
A backwards compatible `componentsApi` implementation is also provided from this package which uses the `SwappableComponentsApi` as the implementation. This backwards compatible wrapper will be removed in the future.
|
|
25
|
+
|
|
26
|
+
- 9831f4e: Adjusted the dialog API types to have more sensible defaults
|
|
27
|
+
- Updated dependencies
|
|
28
|
+
- @backstage/frontend-plugin-api@0.11.0-next.2
|
|
29
|
+
- @backstage/core-components@0.17.5-next.2
|
|
30
|
+
|
|
31
|
+
## 0.2.0-next.1
|
|
32
|
+
|
|
33
|
+
### Minor Changes
|
|
34
|
+
|
|
35
|
+
- 121899a: **BREAKING**: The `app-root-element` extension now only accepts `JSX.Element` in its `element` param, meaning overrides need to be updated.
|
|
36
|
+
|
|
37
|
+
### Patch Changes
|
|
38
|
+
|
|
39
|
+
- a08f95f: Added a new module for implementing public sign-in apps, exported as `appModulePublicSignIn` via the `/alpha` sub-path export. This replaces the `createPublicSignInApp` export from `@backstage/frontend-defaults`, which is now deprecated.
|
|
40
|
+
- 5d31d66: Updated the usage of the `RouterBlueprint` and `AppRootWrapperBlueprint` to use the lowercase `component` parameter
|
|
41
|
+
- 93b5e38: The default implementation of the Analytics API now collects and instantiates analytics implementations exposed via `AnalyticsImplementationBlueprint` extensions. If no such extensions are discovered, the API continues to do nothing with analytics events fired within Backstage. If multiple such extensions are discovered, every discovered implementation automatically receives analytics events.
|
|
42
|
+
- Updated dependencies
|
|
43
|
+
- @backstage/frontend-plugin-api@0.11.0-next.1
|
|
44
|
+
- @backstage/core-components@0.17.5-next.1
|
|
45
|
+
- @backstage/core-plugin-api@1.10.9
|
|
46
|
+
- @backstage/integration-react@1.2.9
|
|
47
|
+
- @backstage/theme@0.6.8-next.0
|
|
48
|
+
- @backstage/types@1.2.1
|
|
49
|
+
- @backstage/plugin-permission-react@0.4.36
|
|
50
|
+
|
|
3
51
|
## 0.2.0-next.0
|
|
4
52
|
|
|
5
53
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
1
|
# app
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
_This plugin was created through the Backstage CLI_
|
|
6
|
-
|
|
7
|
-
## Getting started
|
|
8
|
-
|
|
9
|
-
Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn start` in the root directory, and then navigating to [/app](http://localhost:3000/app).
|
|
3
|
+
This plugin is part of the new frontend system, and represents the foundation of the frontend application itself, which then other features attach themselves into.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import appPlugin from '@backstage/plugin-app';
|
|
3
|
+
import { useAsync, useMountEffect } from '@react-hookz/web';
|
|
4
|
+
import { createFrontendModule, coreExtensionData, useApi, identityApiRef } from '@backstage/frontend-plugin-api';
|
|
5
|
+
|
|
6
|
+
function InternalCookieAuthRedirect() {
|
|
7
|
+
const identityApi = useApi(identityApiRef);
|
|
8
|
+
const [state, actions] = useAsync(async () => {
|
|
9
|
+
const { token } = await identityApi.getCredentials();
|
|
10
|
+
if (!token) {
|
|
11
|
+
throw new Error("Expected Backstage token in sign-in response");
|
|
12
|
+
}
|
|
13
|
+
return token;
|
|
14
|
+
});
|
|
15
|
+
useMountEffect(actions.execute);
|
|
16
|
+
if (state.status === "error" && state.error) {
|
|
17
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18
|
+
"An error occurred: ",
|
|
19
|
+
state.error.message
|
|
20
|
+
] });
|
|
21
|
+
}
|
|
22
|
+
if (state.status === "success" && state.result) {
|
|
23
|
+
return /* @__PURE__ */ jsxs(
|
|
24
|
+
"form",
|
|
25
|
+
{
|
|
26
|
+
ref: (form) => form?.submit(),
|
|
27
|
+
action: window.location.href,
|
|
28
|
+
method: "POST",
|
|
29
|
+
style: { visibility: "hidden" },
|
|
30
|
+
children: [
|
|
31
|
+
/* @__PURE__ */ jsx("input", { type: "hidden", name: "type", value: "sign-in" }),
|
|
32
|
+
/* @__PURE__ */ jsx("input", { type: "hidden", name: "token", value: state.result }),
|
|
33
|
+
/* @__PURE__ */ jsx("input", { type: "submit", value: "Continue" })
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const appModulePublicSignIn = createFrontendModule({
|
|
41
|
+
pluginId: "app",
|
|
42
|
+
extensions: [
|
|
43
|
+
appPlugin.getExtension("app/layout").override({
|
|
44
|
+
factory: () => [
|
|
45
|
+
coreExtensionData.reactElement(/* @__PURE__ */ jsx(InternalCookieAuthRedirect, {}))
|
|
46
|
+
]
|
|
47
|
+
})
|
|
48
|
+
]
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
export { InternalCookieAuthRedirect, appModulePublicSignIn };
|
|
52
|
+
//# sourceMappingURL=appModulePublicSignIn.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appModulePublicSignIn.esm.js","sources":["../../src/alpha/appModulePublicSignIn.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport appPlugin from '@backstage/plugin-app';\nimport { useAsync, useMountEffect } from '@react-hookz/web';\nimport {\n coreExtensionData,\n createFrontendModule,\n identityApiRef,\n useApi,\n} from '@backstage/frontend-plugin-api';\n\n// This is a copy of the CookieAuthRedirect component from the auth-react\n// plugin, to avoid a dependency on that package. Long-term we want this to be\n// the only implementation and remove the one in auth-react once the old frontend system is gone.\n\n// TODO(Rugvip): Should this be part of the app plugin instead? since it owns the backend part of it.\n\n/** @internal */\nexport function InternalCookieAuthRedirect() {\n const identityApi = useApi(identityApiRef);\n\n const [state, actions] = useAsync(async () => {\n const { token } = await identityApi.getCredentials();\n if (!token) {\n throw new Error('Expected Backstage token in sign-in response');\n }\n return token;\n });\n\n useMountEffect(actions.execute);\n\n if (state.status === 'error' && state.error) {\n return <>An error occurred: {state.error.message}</>;\n }\n\n if (state.status === 'success' && state.result) {\n return (\n <form\n ref={form => form?.submit()}\n action={window.location.href}\n method=\"POST\"\n style={{ visibility: 'hidden' }}\n >\n <input type=\"hidden\" name=\"type\" value=\"sign-in\" />\n <input type=\"hidden\" name=\"token\" value={state.result} />\n <input type=\"submit\" value=\"Continue\" />\n </form>\n );\n }\n\n return null;\n}\n\n/**\n * This module is intended for use in public sign-in page apps, in the\n * `index-public-experimental.tsx` file.\n *\n * @remarks\n *\n * This module is used to enable the public sign-in flow where the build output\n * is split into one small publicly accessible app, and the full app protected\n * by auth.\n *\n * This module overrides the `app/layout` extension, which means that most\n * extension typically installed in an app will be ignored. However, you can\n * still for example install API and root element extensions.\n *\n * A typical setup of this app will only install a custom sign-in page.\n *\n * @example\n *\n *#### In `index-public-experimental.tsx`\n *\n *```ts\n *import { createApp } from '@backstage/frontend-defaults\n *import { appModulePublicSignIn } from '@backstage/plugin-app/alpha';\n *import { appModuleSignInPage } from './appModuleSignInPage';\n *\n *const app = createApp({\n * features: [appModuleSignInPage, appModulePublicSignIn],\n *});\n *```\n *\n *#### In `appModuleSignInPage.tsx`\n *\n *```tsx\n *import { createFrontendModule, SignInPageBlueprint } from '@backstage/frontend-plugin-api';\n *\n *export const appModuleSignInPage = createFrontendModule({\n * pluginId: 'app',\n * extensions: [\n * SignInPageBlueprint.make({\n * params: {\n * ...\n * }\n * }),\n * ],\n *})\n *```\n *\n * @alpha\n */\nexport const appModulePublicSignIn = createFrontendModule({\n pluginId: 'app',\n extensions: [\n appPlugin.getExtension('app/layout').override({\n factory: () => [\n coreExtensionData.reactElement(<InternalCookieAuthRedirect />),\n ],\n }),\n ],\n});\n"],"names":[],"mappings":";;;;;AAgCO,SAAS,0BAA6B,GAAA;AAC3C,EAAM,MAAA,WAAA,GAAc,OAAO,cAAc,CAAA;AAEzC,EAAA,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,GAAI,SAAS,YAAY;AAC5C,IAAA,MAAM,EAAE,KAAA,EAAU,GAAA,MAAM,YAAY,cAAe,EAAA;AACnD,IAAA,IAAI,CAAC,KAAO,EAAA;AACV,MAAM,MAAA,IAAI,MAAM,8CAA8C,CAAA;AAAA;AAEhE,IAAO,OAAA,KAAA;AAAA,GACR,CAAA;AAED,EAAA,cAAA,CAAe,QAAQ,OAAO,CAAA;AAE9B,EAAA,IAAI,KAAM,CAAA,MAAA,KAAW,OAAW,IAAA,KAAA,CAAM,KAAO,EAAA;AAC3C,IAAA,uBAAS,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,MAAA,qBAAA;AAAA,MAAoB,MAAM,KAAM,CAAA;AAAA,KAAQ,EAAA,CAAA;AAAA;AAGnD,EAAA,IAAI,KAAM,CAAA,MAAA,KAAW,SAAa,IAAA,KAAA,CAAM,MAAQ,EAAA;AAC9C,IACE,uBAAA,IAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,CAAQ,IAAA,KAAA,IAAA,EAAM,MAAO,EAAA;AAAA,QAC1B,MAAA,EAAQ,OAAO,QAAS,CAAA,IAAA;AAAA,QACxB,MAAO,EAAA,MAAA;AAAA,QACP,KAAA,EAAO,EAAE,UAAA,EAAY,QAAS,EAAA;AAAA,QAE9B,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,WAAM,IAAK,EAAA,QAAA,EAAS,IAAK,EAAA,MAAA,EAAO,OAAM,SAAU,EAAA,CAAA;AAAA,0BACjD,GAAA,CAAC,WAAM,IAAK,EAAA,QAAA,EAAS,MAAK,OAAQ,EAAA,KAAA,EAAO,MAAM,MAAQ,EAAA,CAAA;AAAA,0BACtD,GAAA,CAAA,OAAA,EAAA,EAAM,IAAK,EAAA,QAAA,EAAS,OAAM,UAAW,EAAA;AAAA;AAAA;AAAA,KACxC;AAAA;AAIJ,EAAO,OAAA,IAAA;AACT;AAmDO,MAAM,wBAAwB,oBAAqB,CAAA;AAAA,EACxD,QAAU,EAAA,KAAA;AAAA,EACV,UAAY,EAAA;AAAA,IACV,SAAU,CAAA,YAAA,CAAa,YAAY,CAAA,CAAE,QAAS,CAAA;AAAA,MAC5C,SAAS,MAAM;AAAA,QACb,iBAAkB,CAAA,YAAA,iBAAc,GAAA,CAAA,0BAAA,EAAA,EAA2B,CAAE;AAAA;AAC/D,KACD;AAAA;AAEL,CAAC;;;;"}
|
package/dist/alpha.d.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This module is intended for use in public sign-in page apps, in the
|
|
5
|
+
* `index-public-experimental.tsx` file.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
*
|
|
9
|
+
* This module is used to enable the public sign-in flow where the build output
|
|
10
|
+
* is split into one small publicly accessible app, and the full app protected
|
|
11
|
+
* by auth.
|
|
12
|
+
*
|
|
13
|
+
* This module overrides the `app/layout` extension, which means that most
|
|
14
|
+
* extension typically installed in an app will be ignored. However, you can
|
|
15
|
+
* still for example install API and root element extensions.
|
|
16
|
+
*
|
|
17
|
+
* A typical setup of this app will only install a custom sign-in page.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
*
|
|
21
|
+
*#### In `index-public-experimental.tsx`
|
|
22
|
+
*
|
|
23
|
+
*```ts
|
|
24
|
+
*import { createApp } from '@backstage/frontend-defaults
|
|
25
|
+
*import { appModulePublicSignIn } from '@backstage/plugin-app/alpha';
|
|
26
|
+
*import { appModuleSignInPage } from './appModuleSignInPage';
|
|
27
|
+
*
|
|
28
|
+
*const app = createApp({
|
|
29
|
+
* features: [appModuleSignInPage, appModulePublicSignIn],
|
|
30
|
+
*});
|
|
31
|
+
*```
|
|
32
|
+
*
|
|
33
|
+
*#### In `appModuleSignInPage.tsx`
|
|
34
|
+
*
|
|
35
|
+
*```tsx
|
|
36
|
+
*import { createFrontendModule, SignInPageBlueprint } from '@backstage/frontend-plugin-api';
|
|
37
|
+
*
|
|
38
|
+
*export const appModuleSignInPage = createFrontendModule({
|
|
39
|
+
* pluginId: 'app',
|
|
40
|
+
* extensions: [
|
|
41
|
+
* SignInPageBlueprint.make({
|
|
42
|
+
* params: {
|
|
43
|
+
* ...
|
|
44
|
+
* }
|
|
45
|
+
* }),
|
|
46
|
+
* ],
|
|
47
|
+
*})
|
|
48
|
+
*```
|
|
49
|
+
*
|
|
50
|
+
* @alpha
|
|
51
|
+
*/
|
|
52
|
+
declare const appModulePublicSignIn: _backstage_frontend_plugin_api.FrontendModule;
|
|
53
|
+
|
|
54
|
+
export { appModulePublicSignIn };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alpha.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultDialogApi.esm.js","sources":["../../src/apis/DefaultDialogApi.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DialogApi, DialogApiDialog } from '@backstage/frontend-plugin-api';\n\nexport type OnShowDialog = (options: {\n component: (props: { dialog: DialogApiDialog<any> }) => React.JSX.Element;\n modal: boolean;\n}) => DialogApiDialog
|
|
1
|
+
{"version":3,"file":"DefaultDialogApi.esm.js","sources":["../../src/apis/DefaultDialogApi.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DialogApi, DialogApiDialog } from '@backstage/frontend-plugin-api';\n\nexport type OnShowDialog = (options: {\n component: (props: { dialog: DialogApiDialog<any> }) => React.JSX.Element;\n modal: boolean;\n}) => DialogApiDialog<unknown>;\n\n/**\n * Default implementation for the {@link DialogApi}.\n * @internal\n */\nexport class DefaultDialogApi implements DialogApi {\n #onShow?: OnShowDialog;\n\n show<TResult = void>(\n elementOrComponent:\n | JSX.Element\n | ((props: {\n dialog: DialogApiDialog<TResult | undefined>;\n }) => JSX.Element),\n ): DialogApiDialog<TResult | undefined> {\n if (!this.#onShow) {\n throw new Error('Dialog API has not been connected');\n }\n return this.#onShow({\n component:\n typeof elementOrComponent === 'function'\n ? elementOrComponent\n : () => elementOrComponent,\n modal: false,\n }) as DialogApiDialog<TResult | undefined>;\n }\n\n showModal<TResult = void>(\n elementOrComponent:\n | JSX.Element\n | ((props: { dialog: DialogApiDialog<TResult> }) => JSX.Element),\n ): DialogApiDialog<TResult> {\n if (!this.#onShow) {\n throw new Error('Dialog API has not been connected');\n }\n return this.#onShow({\n component:\n typeof elementOrComponent === 'function'\n ? elementOrComponent\n : () => elementOrComponent,\n modal: true,\n }) as DialogApiDialog<TResult>;\n }\n\n connect(onShow: OnShowDialog): void {\n this.#onShow = onShow;\n }\n}\n"],"names":[],"mappings":"AA2BO,MAAM,gBAAsC,CAAA;AAAA,EACjD,OAAA;AAAA,EAEA,KACE,kBAKsC,EAAA;AACtC,IAAI,IAAA,CAAC,KAAK,OAAS,EAAA;AACjB,MAAM,MAAA,IAAI,MAAM,mCAAmC,CAAA;AAAA;AAErD,IAAA,OAAO,KAAK,OAAQ,CAAA;AAAA,MAClB,SACE,EAAA,OAAO,kBAAuB,KAAA,UAAA,GAC1B,qBACA,MAAM,kBAAA;AAAA,MACZ,KAAO,EAAA;AAAA,KACR,CAAA;AAAA;AACH,EAEA,UACE,kBAG0B,EAAA;AAC1B,IAAI,IAAA,CAAC,KAAK,OAAS,EAAA;AACjB,MAAM,MAAA,IAAI,MAAM,mCAAmC,CAAA;AAAA;AAErD,IAAA,OAAO,KAAK,OAAQ,CAAA;AAAA,MAClB,SACE,EAAA,OAAO,kBAAuB,KAAA,UAAA,GAC1B,qBACA,MAAM,kBAAA;AAAA,MACZ,KAAO,EAAA;AAAA,KACR,CAAA;AAAA;AACH,EAEA,QAAQ,MAA4B,EAAA;AAClC,IAAA,IAAA,CAAK,OAAU,GAAA,MAAA;AAAA;AAEnB;;;;"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { lazy } from 'react';
|
|
3
|
+
import { OpaqueSwappableComponentRef } from '../../packages/frontend-internal/src/wiring/InternalSwappableComponentRef.esm.js';
|
|
4
|
+
import '../../packages/frontend-internal/src/wiring/InternalExtensionDefinition.esm.js';
|
|
5
|
+
import '../../packages/frontend-internal/src/wiring/InternalFrontendPlugin.esm.js';
|
|
6
|
+
|
|
7
|
+
class DefaultSwappableComponentsApi {
|
|
8
|
+
#components;
|
|
9
|
+
static fromComponents(components) {
|
|
10
|
+
return new DefaultSwappableComponentsApi(
|
|
11
|
+
new Map(
|
|
12
|
+
components.map((entry) => {
|
|
13
|
+
return [
|
|
14
|
+
entry.ref.id,
|
|
15
|
+
entry.loader ? lazy(async () => ({
|
|
16
|
+
default: await entry.loader()
|
|
17
|
+
})) : void 0
|
|
18
|
+
];
|
|
19
|
+
})
|
|
20
|
+
)
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
constructor(components) {
|
|
24
|
+
this.#components = components;
|
|
25
|
+
}
|
|
26
|
+
getComponent(ref) {
|
|
27
|
+
const OverrideComponent = this.#components.get(ref.id);
|
|
28
|
+
const { defaultComponent: DefaultComponent, transformProps } = OpaqueSwappableComponentRef.toInternal(ref);
|
|
29
|
+
return (props) => {
|
|
30
|
+
const innerProps = transformProps?.(props) ?? props;
|
|
31
|
+
if (OverrideComponent) {
|
|
32
|
+
return /* @__PURE__ */ jsx(OverrideComponent, { ...innerProps });
|
|
33
|
+
}
|
|
34
|
+
return /* @__PURE__ */ jsx(DefaultComponent, { ...innerProps });
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export { DefaultSwappableComponentsApi };
|
|
40
|
+
//# sourceMappingURL=DefaultSwappableComponentsApi.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultSwappableComponentsApi.esm.js","sources":["../../../src/apis/SwappableComponentsApi/DefaultSwappableComponentsApi.tsx"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n SwappableComponentRef,\n SwappableComponentsApi,\n SwappableComponentBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport { OpaqueSwappableComponentRef } from '@internal/frontend';\n\nimport { lazy } from 'react';\n\n/**\n * Implementation for the {@link SwappableComponentsApi}\n *\n * @internal\n */\nexport class DefaultSwappableComponentsApi implements SwappableComponentsApi {\n #components: Map<string, ((props: object) => JSX.Element | null) | undefined>;\n\n static fromComponents(\n components: Array<typeof SwappableComponentBlueprint.dataRefs.component.T>,\n ) {\n return new DefaultSwappableComponentsApi(\n new Map(\n components.map(entry => {\n return [\n entry.ref.id,\n entry.loader\n ? lazy(async () => ({\n default: await entry.loader!(),\n }))\n : undefined,\n ];\n }),\n ),\n );\n }\n\n constructor(components: Map<string, any>) {\n this.#components = components;\n }\n\n getComponent(\n ref: SwappableComponentRef<any>,\n ): (props: object) => JSX.Element | null {\n const OverrideComponent = this.#components.get(ref.id);\n const { defaultComponent: DefaultComponent, transformProps } =\n OpaqueSwappableComponentRef.toInternal(ref);\n\n return (props: object) => {\n const innerProps = transformProps?.(props) ?? props;\n\n if (OverrideComponent) {\n return <OverrideComponent {...innerProps} />;\n }\n\n return <DefaultComponent {...innerProps} />;\n };\n }\n}\n"],"names":[],"mappings":";;;;;;AA8BO,MAAM,6BAAgE,CAAA;AAAA,EAC3E,WAAA;AAAA,EAEA,OAAO,eACL,UACA,EAAA;AACA,IAAA,OAAO,IAAI,6BAAA;AAAA,MACT,IAAI,GAAA;AAAA,QACF,UAAA,CAAW,IAAI,CAAS,KAAA,KAAA;AACtB,UAAO,OAAA;AAAA,YACL,MAAM,GAAI,CAAA,EAAA;AAAA,YACV,KAAA,CAAM,MACF,GAAA,IAAA,CAAK,aAAa;AAAA,cAChB,OAAA,EAAS,MAAM,KAAA,CAAM,MAAQ;AAAA,cAC7B,CACF,GAAA,KAAA;AAAA,WACN;AAAA,SACD;AAAA;AACH,KACF;AAAA;AACF,EAEA,YAAY,UAA8B,EAAA;AACxC,IAAA,IAAA,CAAK,WAAc,GAAA,UAAA;AAAA;AACrB,EAEA,aACE,GACuC,EAAA;AACvC,IAAA,MAAM,iBAAoB,GAAA,IAAA,CAAK,WAAY,CAAA,GAAA,CAAI,IAAI,EAAE,CAAA;AACrD,IAAA,MAAM,EAAE,gBAAkB,EAAA,gBAAA,EAAkB,gBAC1C,GAAA,2BAAA,CAA4B,WAAW,GAAG,CAAA;AAE5C,IAAA,OAAO,CAAC,KAAkB,KAAA;AACxB,MAAM,MAAA,UAAA,GAAa,cAAiB,GAAA,KAAK,CAAK,IAAA,KAAA;AAE9C,MAAA,IAAI,iBAAmB,EAAA;AACrB,QAAO,uBAAA,GAAA,CAAC,iBAAmB,EAAA,EAAA,GAAG,UAAY,EAAA,CAAA;AAAA;AAG5C,MAAO,uBAAA,GAAA,CAAC,gBAAkB,EAAA,EAAA,GAAG,UAAY,EAAA,CAAA;AAAA,KAC3C;AAAA;AAEJ;;;;"}
|
package/dist/defaultApis.esm.js
CHANGED
|
@@ -2,7 +2,7 @@ import GithubAuth from './packages/core-app-api/src/apis/implementations/auth/gi
|
|
|
2
2
|
import GitlabAuth from './packages/core-app-api/src/apis/implementations/auth/gitlab/GitlabAuth.esm.js';
|
|
3
3
|
import GoogleAuth from './packages/core-app-api/src/apis/implementations/auth/google/GoogleAuth.esm.js';
|
|
4
4
|
import 'zen-observable';
|
|
5
|
-
import { discoveryApiRef, configApiRef, alertApiRef,
|
|
5
|
+
import { discoveryApiRef, configApiRef, alertApiRef, errorApiRef, storageApiRef, fetchApiRef, identityApiRef, oauthRequestApiRef, googleAuthApiRef, microsoftAuthApiRef, githubAuthApiRef, oktaAuthApiRef, gitlabAuthApiRef, oneloginAuthApiRef, bitbucketAuthApiRef, bitbucketServerAuthApiRef, atlassianAuthApiRef, vmwareCloudAuthApiRef } from '@backstage/core-plugin-api';
|
|
6
6
|
import OktaAuth from './packages/core-app-api/src/apis/implementations/auth/okta/OktaAuth.esm.js';
|
|
7
7
|
import './packages/core-app-api/src/apis/implementations/auth/saml/types.esm.js';
|
|
8
8
|
import MicrosoftAuth from './packages/core-app-api/src/apis/implementations/auth/microsoft/MicrosoftAuth.esm.js';
|
|
@@ -12,7 +12,6 @@ import BitbucketServerAuth from './packages/core-app-api/src/apis/implementation
|
|
|
12
12
|
import AtlassianAuth from './packages/core-app-api/src/apis/implementations/auth/atlassian/AtlassianAuth.esm.js';
|
|
13
13
|
import VMwareCloudAuth from './packages/core-app-api/src/apis/implementations/auth/vmwareCloud/VMwareCloudAuth.esm.js';
|
|
14
14
|
import { AlertApiForwarder } from './packages/core-app-api/src/apis/implementations/AlertApi/AlertApiForwarder.esm.js';
|
|
15
|
-
import { NoOpAnalyticsApi } from './packages/core-app-api/src/apis/implementations/AnalyticsApi/NoOpAnalyticsApi.esm.js';
|
|
16
15
|
import '@backstage/config';
|
|
17
16
|
import { UrlPatternDiscovery } from './packages/core-app-api/src/apis/implementations/DiscoveryApi/UrlPatternDiscovery.esm.js';
|
|
18
17
|
import { ErrorAlerter } from './packages/core-app-api/src/apis/implementations/ErrorApi/ErrorAlerter.esm.js';
|
|
@@ -26,11 +25,12 @@ import { ApiBlueprint, dialogApiRef } from '@backstage/frontend-plugin-api';
|
|
|
26
25
|
import { ScmAuth, scmIntegrationsApiRef, ScmIntegrationsApi } from '@backstage/integration-react';
|
|
27
26
|
import { permissionApiRef, IdentityPermissionApi } from '@backstage/plugin-permission-react';
|
|
28
27
|
import { DefaultDialogApi } from './apis/DefaultDialogApi.esm.js';
|
|
28
|
+
import { analyticsApi } from './extensions/AnalyticsApi.esm.js';
|
|
29
29
|
|
|
30
30
|
const apis = [
|
|
31
31
|
ApiBlueprint.make({
|
|
32
32
|
name: "dialog",
|
|
33
|
-
params: (
|
|
33
|
+
params: (defineParams) => defineParams({
|
|
34
34
|
api: dialogApiRef,
|
|
35
35
|
deps: {},
|
|
36
36
|
factory: () => new DefaultDialogApi()
|
|
@@ -38,7 +38,7 @@ const apis = [
|
|
|
38
38
|
}),
|
|
39
39
|
ApiBlueprint.make({
|
|
40
40
|
name: "discovery",
|
|
41
|
-
params: (
|
|
41
|
+
params: (defineParams) => defineParams({
|
|
42
42
|
api: discoveryApiRef,
|
|
43
43
|
deps: { configApi: configApiRef },
|
|
44
44
|
factory: ({ configApi }) => UrlPatternDiscovery.compile(
|
|
@@ -48,23 +48,16 @@ const apis = [
|
|
|
48
48
|
}),
|
|
49
49
|
ApiBlueprint.make({
|
|
50
50
|
name: "alert",
|
|
51
|
-
params: (
|
|
51
|
+
params: (defineParams) => defineParams({
|
|
52
52
|
api: alertApiRef,
|
|
53
53
|
deps: {},
|
|
54
54
|
factory: () => new AlertApiForwarder()
|
|
55
55
|
})
|
|
56
56
|
}),
|
|
57
|
-
|
|
58
|
-
name: "analytics",
|
|
59
|
-
params: (define) => define({
|
|
60
|
-
api: analyticsApiRef,
|
|
61
|
-
deps: {},
|
|
62
|
-
factory: () => new NoOpAnalyticsApi()
|
|
63
|
-
})
|
|
64
|
-
}),
|
|
57
|
+
analyticsApi,
|
|
65
58
|
ApiBlueprint.make({
|
|
66
59
|
name: "error",
|
|
67
|
-
params: (
|
|
60
|
+
params: (defineParams) => defineParams({
|
|
68
61
|
api: errorApiRef,
|
|
69
62
|
deps: { alertApi: alertApiRef },
|
|
70
63
|
factory: ({ alertApi }) => {
|
|
@@ -76,7 +69,7 @@ const apis = [
|
|
|
76
69
|
}),
|
|
77
70
|
ApiBlueprint.make({
|
|
78
71
|
name: "storage",
|
|
79
|
-
params: (
|
|
72
|
+
params: (defineParams) => defineParams({
|
|
80
73
|
api: storageApiRef,
|
|
81
74
|
deps: { errorApi: errorApiRef },
|
|
82
75
|
factory: ({ errorApi }) => WebStorage.create({ errorApi })
|
|
@@ -84,7 +77,7 @@ const apis = [
|
|
|
84
77
|
}),
|
|
85
78
|
ApiBlueprint.make({
|
|
86
79
|
name: "fetch",
|
|
87
|
-
params: (
|
|
80
|
+
params: (defineParams) => defineParams({
|
|
88
81
|
api: fetchApiRef,
|
|
89
82
|
deps: {
|
|
90
83
|
configApi: configApiRef,
|
|
@@ -108,7 +101,7 @@ const apis = [
|
|
|
108
101
|
}),
|
|
109
102
|
ApiBlueprint.make({
|
|
110
103
|
name: "oauth-request",
|
|
111
|
-
params: (
|
|
104
|
+
params: (defineParams) => defineParams({
|
|
112
105
|
api: oauthRequestApiRef,
|
|
113
106
|
deps: {},
|
|
114
107
|
factory: () => new OAuthRequestManager()
|
|
@@ -116,7 +109,7 @@ const apis = [
|
|
|
116
109
|
}),
|
|
117
110
|
ApiBlueprint.make({
|
|
118
111
|
name: "google-auth",
|
|
119
|
-
params: (
|
|
112
|
+
params: (defineParams) => defineParams({
|
|
120
113
|
api: googleAuthApiRef,
|
|
121
114
|
deps: {
|
|
122
115
|
discoveryApi: discoveryApiRef,
|
|
@@ -133,7 +126,7 @@ const apis = [
|
|
|
133
126
|
}),
|
|
134
127
|
ApiBlueprint.make({
|
|
135
128
|
name: "microsoft-auth",
|
|
136
|
-
params: (
|
|
129
|
+
params: (defineParams) => defineParams({
|
|
137
130
|
api: microsoftAuthApiRef,
|
|
138
131
|
deps: {
|
|
139
132
|
discoveryApi: discoveryApiRef,
|
|
@@ -150,7 +143,7 @@ const apis = [
|
|
|
150
143
|
}),
|
|
151
144
|
ApiBlueprint.make({
|
|
152
145
|
name: "github-auth",
|
|
153
|
-
params: (
|
|
146
|
+
params: (defineParams) => defineParams({
|
|
154
147
|
api: githubAuthApiRef,
|
|
155
148
|
deps: {
|
|
156
149
|
discoveryApi: discoveryApiRef,
|
|
@@ -168,7 +161,7 @@ const apis = [
|
|
|
168
161
|
}),
|
|
169
162
|
ApiBlueprint.make({
|
|
170
163
|
name: "okta-auth",
|
|
171
|
-
params: (
|
|
164
|
+
params: (defineParams) => defineParams({
|
|
172
165
|
api: oktaAuthApiRef,
|
|
173
166
|
deps: {
|
|
174
167
|
discoveryApi: discoveryApiRef,
|
|
@@ -185,7 +178,7 @@ const apis = [
|
|
|
185
178
|
}),
|
|
186
179
|
ApiBlueprint.make({
|
|
187
180
|
name: "gitlab-auth",
|
|
188
|
-
params: (
|
|
181
|
+
params: (defineParams) => defineParams({
|
|
189
182
|
api: gitlabAuthApiRef,
|
|
190
183
|
deps: {
|
|
191
184
|
discoveryApi: discoveryApiRef,
|
|
@@ -202,7 +195,7 @@ const apis = [
|
|
|
202
195
|
}),
|
|
203
196
|
ApiBlueprint.make({
|
|
204
197
|
name: "onelogin-auth",
|
|
205
|
-
params: (
|
|
198
|
+
params: (defineParams) => defineParams({
|
|
206
199
|
api: oneloginAuthApiRef,
|
|
207
200
|
deps: {
|
|
208
201
|
discoveryApi: discoveryApiRef,
|
|
@@ -219,7 +212,7 @@ const apis = [
|
|
|
219
212
|
}),
|
|
220
213
|
ApiBlueprint.make({
|
|
221
214
|
name: "bitbucket-auth",
|
|
222
|
-
params: (
|
|
215
|
+
params: (defineParams) => defineParams({
|
|
223
216
|
api: bitbucketAuthApiRef,
|
|
224
217
|
deps: {
|
|
225
218
|
discoveryApi: discoveryApiRef,
|
|
@@ -237,7 +230,7 @@ const apis = [
|
|
|
237
230
|
}),
|
|
238
231
|
ApiBlueprint.make({
|
|
239
232
|
name: "bitbucket-server-auth",
|
|
240
|
-
params: (
|
|
233
|
+
params: (defineParams) => defineParams({
|
|
241
234
|
api: bitbucketServerAuthApiRef,
|
|
242
235
|
deps: {
|
|
243
236
|
discoveryApi: discoveryApiRef,
|
|
@@ -255,7 +248,7 @@ const apis = [
|
|
|
255
248
|
}),
|
|
256
249
|
ApiBlueprint.make({
|
|
257
250
|
name: "atlassian-auth",
|
|
258
|
-
params: (
|
|
251
|
+
params: (defineParams) => defineParams({
|
|
259
252
|
api: atlassianAuthApiRef,
|
|
260
253
|
deps: {
|
|
261
254
|
discoveryApi: discoveryApiRef,
|
|
@@ -274,7 +267,7 @@ const apis = [
|
|
|
274
267
|
}),
|
|
275
268
|
ApiBlueprint.make({
|
|
276
269
|
name: "vmware-cloud-auth",
|
|
277
|
-
params: (
|
|
270
|
+
params: (defineParams) => defineParams({
|
|
278
271
|
api: vmwareCloudAuthApiRef,
|
|
279
272
|
deps: {
|
|
280
273
|
discoveryApi: discoveryApiRef,
|
|
@@ -293,7 +286,7 @@ const apis = [
|
|
|
293
286
|
}),
|
|
294
287
|
ApiBlueprint.make({
|
|
295
288
|
name: "permission",
|
|
296
|
-
params: (
|
|
289
|
+
params: (defineParams) => defineParams({
|
|
297
290
|
api: permissionApiRef,
|
|
298
291
|
deps: {
|
|
299
292
|
discovery: discoveryApiRef,
|
|
@@ -305,11 +298,11 @@ const apis = [
|
|
|
305
298
|
}),
|
|
306
299
|
ApiBlueprint.make({
|
|
307
300
|
name: "scm-auth",
|
|
308
|
-
params: (
|
|
301
|
+
params: (defineParams) => defineParams(ScmAuth.createDefaultApiFactory())
|
|
309
302
|
}),
|
|
310
303
|
ApiBlueprint.make({
|
|
311
304
|
name: "scm-integrations",
|
|
312
|
-
params: (
|
|
305
|
+
params: (defineParams) => defineParams({
|
|
313
306
|
api: scmIntegrationsApiRef,
|
|
314
307
|
deps: { configApi: configApiRef },
|
|
315
308
|
factory: ({ configApi }) => ScmIntegrationsApi.fromConfig(configApi)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultApis.esm.js","sources":["../src/defaultApis.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line @backstage/no-relative-monorepo-imports\nimport {\n AlertApiForwarder,\n NoOpAnalyticsApi,\n ErrorApiForwarder,\n ErrorAlerter,\n GoogleAuth,\n GithubAuth,\n OktaAuth,\n GitlabAuth,\n MicrosoftAuth,\n BitbucketAuth,\n BitbucketServerAuth,\n OAuthRequestManager,\n WebStorage,\n UrlPatternDiscovery,\n OneLoginAuth,\n UnhandledErrorForwarder,\n AtlassianAuth,\n createFetchApi,\n FetchMiddlewares,\n VMwareCloudAuth,\n} from '../../../packages/core-app-api/src/apis/implementations';\n\nimport {\n alertApiRef,\n analyticsApiRef,\n errorApiRef,\n discoveryApiRef,\n fetchApiRef,\n identityApiRef,\n oauthRequestApiRef,\n googleAuthApiRef,\n githubAuthApiRef,\n oktaAuthApiRef,\n gitlabAuthApiRef,\n microsoftAuthApiRef,\n storageApiRef,\n configApiRef,\n oneloginAuthApiRef,\n bitbucketAuthApiRef,\n bitbucketServerAuthApiRef,\n atlassianAuthApiRef,\n vmwareCloudAuthApiRef,\n} from '@backstage/core-plugin-api';\nimport { ApiBlueprint, dialogApiRef } from '@backstage/frontend-plugin-api';\nimport {\n ScmAuth,\n ScmIntegrationsApi,\n scmIntegrationsApiRef,\n} from '@backstage/integration-react';\nimport {\n permissionApiRef,\n IdentityPermissionApi,\n} from '@backstage/plugin-permission-react';\nimport { DefaultDialogApi } from './apis/DefaultDialogApi';\n\nexport const apis = [\n ApiBlueprint.make({\n name: 'dialog',\n params: define =>\n define({\n api: dialogApiRef,\n deps: {},\n factory: () => new DefaultDialogApi(),\n }),\n }),\n ApiBlueprint.make({\n name: 'discovery',\n params: define =>\n define({\n api: discoveryApiRef,\n deps: { configApi: configApiRef },\n factory: ({ configApi }) =>\n UrlPatternDiscovery.compile(\n `${configApi.getString('backend.baseUrl')}/api/{{ pluginId }}`,\n ),\n }),\n }),\n ApiBlueprint.make({\n name: 'alert',\n params: define =>\n define({\n api: alertApiRef,\n deps: {},\n factory: () => new AlertApiForwarder(),\n }),\n }),\n ApiBlueprint.make({\n name: 'analytics',\n params: define =>\n define({\n api: analyticsApiRef,\n deps: {},\n factory: () => new NoOpAnalyticsApi(),\n }),\n }),\n ApiBlueprint.make({\n name: 'error',\n params: define =>\n define({\n api: errorApiRef,\n deps: { alertApi: alertApiRef },\n factory: ({ alertApi }) => {\n const errorApi = new ErrorAlerter(alertApi, new ErrorApiForwarder());\n UnhandledErrorForwarder.forward(errorApi, { hidden: false });\n return errorApi;\n },\n }),\n }),\n ApiBlueprint.make({\n name: 'storage',\n params: define =>\n define({\n api: storageApiRef,\n deps: { errorApi: errorApiRef },\n factory: ({ errorApi }) => WebStorage.create({ errorApi }),\n }),\n }),\n ApiBlueprint.make({\n name: 'fetch',\n params: define =>\n define({\n api: fetchApiRef,\n deps: {\n configApi: configApiRef,\n identityApi: identityApiRef,\n discoveryApi: discoveryApiRef,\n },\n factory: ({ configApi, identityApi, discoveryApi }) => {\n return createFetchApi({\n middleware: [\n FetchMiddlewares.resolvePluginProtocol({\n discoveryApi,\n }),\n FetchMiddlewares.injectIdentityAuth({\n identityApi,\n config: configApi,\n }),\n ],\n });\n },\n }),\n }),\n ApiBlueprint.make({\n name: 'oauth-request',\n params: define =>\n define({\n api: oauthRequestApiRef,\n deps: {},\n factory: () => new OAuthRequestManager(),\n }),\n }),\n ApiBlueprint.make({\n name: 'google-auth',\n params: define =>\n define({\n api: googleAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n GoogleAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n }),\n ApiBlueprint.make({\n name: 'microsoft-auth',\n params: define =>\n define({\n api: microsoftAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n MicrosoftAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n }),\n ApiBlueprint.make({\n name: 'github-auth',\n params: define =>\n define({\n api: githubAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n GithubAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n defaultScopes: ['read:user'],\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n }),\n ApiBlueprint.make({\n name: 'okta-auth',\n params: define =>\n define({\n api: oktaAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n OktaAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n }),\n ApiBlueprint.make({\n name: 'gitlab-auth',\n params: define =>\n define({\n api: gitlabAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n GitlabAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n }),\n ApiBlueprint.make({\n name: 'onelogin-auth',\n params: define =>\n define({\n api: oneloginAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n OneLoginAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n }),\n ApiBlueprint.make({\n name: 'bitbucket-auth',\n params: define =>\n define({\n api: bitbucketAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n BitbucketAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n defaultScopes: ['account'],\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n }),\n ApiBlueprint.make({\n name: 'bitbucket-server-auth',\n params: define =>\n define({\n api: bitbucketServerAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n BitbucketServerAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n defaultScopes: ['REPO_READ'],\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n }),\n ApiBlueprint.make({\n name: 'atlassian-auth',\n params: define =>\n define({\n api: atlassianAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) => {\n return AtlassianAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n });\n },\n }),\n }),\n ApiBlueprint.make({\n name: 'vmware-cloud-auth',\n params: define =>\n define({\n api: vmwareCloudAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) => {\n return VMwareCloudAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n });\n },\n }),\n }),\n ApiBlueprint.make({\n name: 'permission',\n params: define =>\n define({\n api: permissionApiRef,\n deps: {\n discovery: discoveryApiRef,\n identity: identityApiRef,\n config: configApiRef,\n },\n factory: ({ config, discovery, identity }) =>\n IdentityPermissionApi.create({ config, discovery, identity }),\n }),\n }),\n ApiBlueprint.make({\n name: 'scm-auth',\n params: define => define(ScmAuth.createDefaultApiFactory()),\n }),\n ApiBlueprint.make({\n name: 'scm-integrations',\n params: define =>\n define({\n api: scmIntegrationsApiRef,\n deps: { configApi: configApiRef },\n factory: ({ configApi }) => ScmIntegrationsApi.fromConfig(configApi),\n }),\n }),\n] as const;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"defaultApis.esm.js","sources":["../src/defaultApis.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line @backstage/no-relative-monorepo-imports\nimport {\n AlertApiForwarder,\n ErrorApiForwarder,\n ErrorAlerter,\n GoogleAuth,\n GithubAuth,\n OktaAuth,\n GitlabAuth,\n MicrosoftAuth,\n BitbucketAuth,\n BitbucketServerAuth,\n OAuthRequestManager,\n WebStorage,\n UrlPatternDiscovery,\n OneLoginAuth,\n UnhandledErrorForwarder,\n AtlassianAuth,\n createFetchApi,\n FetchMiddlewares,\n VMwareCloudAuth,\n} from '../../../packages/core-app-api/src/apis/implementations';\n\nimport {\n alertApiRef,\n errorApiRef,\n discoveryApiRef,\n fetchApiRef,\n identityApiRef,\n oauthRequestApiRef,\n googleAuthApiRef,\n githubAuthApiRef,\n oktaAuthApiRef,\n gitlabAuthApiRef,\n microsoftAuthApiRef,\n storageApiRef,\n configApiRef,\n oneloginAuthApiRef,\n bitbucketAuthApiRef,\n bitbucketServerAuthApiRef,\n atlassianAuthApiRef,\n vmwareCloudAuthApiRef,\n} from '@backstage/core-plugin-api';\nimport { ApiBlueprint, dialogApiRef } from '@backstage/frontend-plugin-api';\nimport {\n ScmAuth,\n ScmIntegrationsApi,\n scmIntegrationsApiRef,\n} from '@backstage/integration-react';\nimport {\n permissionApiRef,\n IdentityPermissionApi,\n} from '@backstage/plugin-permission-react';\nimport { DefaultDialogApi } from './apis/DefaultDialogApi';\nimport { analyticsApi } from './extensions/AnalyticsApi';\n\nexport const apis = [\n ApiBlueprint.make({\n name: 'dialog',\n params: defineParams =>\n defineParams({\n api: dialogApiRef,\n deps: {},\n factory: () => new DefaultDialogApi(),\n }),\n }),\n ApiBlueprint.make({\n name: 'discovery',\n params: defineParams =>\n defineParams({\n api: discoveryApiRef,\n deps: { configApi: configApiRef },\n factory: ({ configApi }) =>\n UrlPatternDiscovery.compile(\n `${configApi.getString('backend.baseUrl')}/api/{{ pluginId }}`,\n ),\n }),\n }),\n ApiBlueprint.make({\n name: 'alert',\n params: defineParams =>\n defineParams({\n api: alertApiRef,\n deps: {},\n factory: () => new AlertApiForwarder(),\n }),\n }),\n analyticsApi,\n ApiBlueprint.make({\n name: 'error',\n params: defineParams =>\n defineParams({\n api: errorApiRef,\n deps: { alertApi: alertApiRef },\n factory: ({ alertApi }) => {\n const errorApi = new ErrorAlerter(alertApi, new ErrorApiForwarder());\n UnhandledErrorForwarder.forward(errorApi, { hidden: false });\n return errorApi;\n },\n }),\n }),\n ApiBlueprint.make({\n name: 'storage',\n params: defineParams =>\n defineParams({\n api: storageApiRef,\n deps: { errorApi: errorApiRef },\n factory: ({ errorApi }) => WebStorage.create({ errorApi }),\n }),\n }),\n ApiBlueprint.make({\n name: 'fetch',\n params: defineParams =>\n defineParams({\n api: fetchApiRef,\n deps: {\n configApi: configApiRef,\n identityApi: identityApiRef,\n discoveryApi: discoveryApiRef,\n },\n factory: ({ configApi, identityApi, discoveryApi }) => {\n return createFetchApi({\n middleware: [\n FetchMiddlewares.resolvePluginProtocol({\n discoveryApi,\n }),\n FetchMiddlewares.injectIdentityAuth({\n identityApi,\n config: configApi,\n }),\n ],\n });\n },\n }),\n }),\n ApiBlueprint.make({\n name: 'oauth-request',\n params: defineParams =>\n defineParams({\n api: oauthRequestApiRef,\n deps: {},\n factory: () => new OAuthRequestManager(),\n }),\n }),\n ApiBlueprint.make({\n name: 'google-auth',\n params: defineParams =>\n defineParams({\n api: googleAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n GoogleAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n }),\n ApiBlueprint.make({\n name: 'microsoft-auth',\n params: defineParams =>\n defineParams({\n api: microsoftAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n MicrosoftAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n }),\n ApiBlueprint.make({\n name: 'github-auth',\n params: defineParams =>\n defineParams({\n api: githubAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n GithubAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n defaultScopes: ['read:user'],\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n }),\n ApiBlueprint.make({\n name: 'okta-auth',\n params: defineParams =>\n defineParams({\n api: oktaAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n OktaAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n }),\n ApiBlueprint.make({\n name: 'gitlab-auth',\n params: defineParams =>\n defineParams({\n api: gitlabAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n GitlabAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n }),\n ApiBlueprint.make({\n name: 'onelogin-auth',\n params: defineParams =>\n defineParams({\n api: oneloginAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n OneLoginAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n }),\n ApiBlueprint.make({\n name: 'bitbucket-auth',\n params: defineParams =>\n defineParams({\n api: bitbucketAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n BitbucketAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n defaultScopes: ['account'],\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n }),\n ApiBlueprint.make({\n name: 'bitbucket-server-auth',\n params: defineParams =>\n defineParams({\n api: bitbucketServerAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n BitbucketServerAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n defaultScopes: ['REPO_READ'],\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n }),\n ApiBlueprint.make({\n name: 'atlassian-auth',\n params: defineParams =>\n defineParams({\n api: atlassianAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) => {\n return AtlassianAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n });\n },\n }),\n }),\n ApiBlueprint.make({\n name: 'vmware-cloud-auth',\n params: defineParams =>\n defineParams({\n api: vmwareCloudAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) => {\n return VMwareCloudAuth.create({\n configApi,\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n });\n },\n }),\n }),\n ApiBlueprint.make({\n name: 'permission',\n params: defineParams =>\n defineParams({\n api: permissionApiRef,\n deps: {\n discovery: discoveryApiRef,\n identity: identityApiRef,\n config: configApiRef,\n },\n factory: ({ config, discovery, identity }) =>\n IdentityPermissionApi.create({ config, discovery, identity }),\n }),\n }),\n ApiBlueprint.make({\n name: 'scm-auth',\n params: defineParams => defineParams(ScmAuth.createDefaultApiFactory()),\n }),\n ApiBlueprint.make({\n name: 'scm-integrations',\n params: defineParams =>\n defineParams({\n api: scmIntegrationsApiRef,\n deps: { configApi: configApiRef },\n factory: ({ configApi }) => ScmIntegrationsApi.fromConfig(configApi),\n }),\n }),\n] as const;\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ApiBlueprint, createExtensionInput, AnalyticsImplementationBlueprint, analyticsApiRef } from '@backstage/frontend-plugin-api';
|
|
2
|
+
|
|
3
|
+
const analyticsApi = ApiBlueprint.makeWithOverrides({
|
|
4
|
+
name: "analytics",
|
|
5
|
+
inputs: {
|
|
6
|
+
implementations: createExtensionInput([
|
|
7
|
+
AnalyticsImplementationBlueprint.dataRefs.factory
|
|
8
|
+
])
|
|
9
|
+
},
|
|
10
|
+
factory(originalFactory, { inputs }) {
|
|
11
|
+
const aggregatedDeps = inputs.implementations.flatMap(
|
|
12
|
+
(impls) => Object.values(
|
|
13
|
+
impls.get(AnalyticsImplementationBlueprint.dataRefs.factory).deps
|
|
14
|
+
)
|
|
15
|
+
).reduce((accum, ref) => {
|
|
16
|
+
accum[ref.id] = ref;
|
|
17
|
+
return accum;
|
|
18
|
+
}, {});
|
|
19
|
+
return originalFactory(
|
|
20
|
+
(defineParams) => defineParams({
|
|
21
|
+
api: analyticsApiRef,
|
|
22
|
+
deps: aggregatedDeps,
|
|
23
|
+
factory: (analyticsApiDeps) => {
|
|
24
|
+
const actualApis = inputs.implementations.map(
|
|
25
|
+
(impl) => impl.get(AnalyticsImplementationBlueprint.dataRefs.factory)
|
|
26
|
+
).map(
|
|
27
|
+
({ factory, deps }) => factory(
|
|
28
|
+
// Reconstruct a deps argument to pass to this analytics
|
|
29
|
+
// implementation factory from those passed into ours.
|
|
30
|
+
Object.keys(deps).reduce(
|
|
31
|
+
(accum, dep) => {
|
|
32
|
+
accum[dep] = analyticsApiDeps[deps[dep].id];
|
|
33
|
+
return accum;
|
|
34
|
+
},
|
|
35
|
+
{}
|
|
36
|
+
)
|
|
37
|
+
)
|
|
38
|
+
);
|
|
39
|
+
return {
|
|
40
|
+
captureEvent: (event) => {
|
|
41
|
+
actualApis.forEach((api) => {
|
|
42
|
+
try {
|
|
43
|
+
api.captureEvent(event);
|
|
44
|
+
} catch {
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
})
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
export { analyticsApi };
|
|
56
|
+
//# sourceMappingURL=AnalyticsApi.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnalyticsApi.esm.js","sources":["../../src/extensions/AnalyticsApi.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n analyticsApiRef,\n AnalyticsImplementationBlueprint,\n ApiBlueprint,\n ApiRef,\n createExtensionInput,\n} from '@backstage/frontend-plugin-api';\n\nexport const analyticsApi = ApiBlueprint.makeWithOverrides({\n name: 'analytics',\n inputs: {\n implementations: createExtensionInput([\n AnalyticsImplementationBlueprint.dataRefs.factory,\n ]),\n },\n factory(originalFactory, { inputs }) {\n // Pull out and aggregate deps from every implementation input into an\n // object keyed by the apiRef ID to be passed to this API implementation as\n // if they were its own deps.\n const aggregatedDeps = inputs.implementations\n .flatMap<ApiRef<unknown>>(impls =>\n Object.values(\n impls.get(AnalyticsImplementationBlueprint.dataRefs.factory).deps,\n ),\n )\n .reduce<{ [x: string]: ApiRef<unknown> }>((accum, ref) => {\n accum[ref.id] = ref;\n return accum;\n }, {});\n\n return originalFactory(defineParams =>\n defineParams({\n api: analyticsApiRef,\n deps: aggregatedDeps,\n factory: analyticsApiDeps => {\n const actualApis = inputs.implementations\n .map(impl =>\n impl.get(AnalyticsImplementationBlueprint.dataRefs.factory),\n )\n .map(({ factory, deps }) =>\n factory(\n // Reconstruct a deps argument to pass to this analytics\n // implementation factory from those passed into ours.\n Object.keys(deps).reduce<{ [x: string]: ApiRef<unknown> }>(\n (accum, dep) => {\n accum[dep] = analyticsApiDeps[\n (deps as { [x: string]: ApiRef<unknown> })[dep].id\n ] as ApiRef<unknown>;\n return accum;\n },\n {},\n ),\n ),\n );\n return {\n captureEvent: event => {\n actualApis.forEach(api => {\n try {\n api.captureEvent(event);\n } catch {\n /* ignored */\n }\n });\n },\n };\n },\n }),\n );\n },\n});\n"],"names":[],"mappings":";;AAwBa,MAAA,YAAA,GAAe,aAAa,iBAAkB,CAAA;AAAA,EACzD,IAAM,EAAA,WAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACN,iBAAiB,oBAAqB,CAAA;AAAA,MACpC,iCAAiC,QAAS,CAAA;AAAA,KAC3C;AAAA,GACH;AAAA,EACA,OAAQ,CAAA,eAAA,EAAiB,EAAE,MAAA,EAAU,EAAA;AAInC,IAAM,MAAA,cAAA,GAAiB,OAAO,eAC3B,CAAA,OAAA;AAAA,MAAyB,WACxB,MAAO,CAAA,MAAA;AAAA,QACL,KAAM,CAAA,GAAA,CAAI,gCAAiC,CAAA,QAAA,CAAS,OAAO,CAAE,CAAA;AAAA;AAC/D,KAED,CAAA,MAAA,CAAyC,CAAC,KAAA,EAAO,GAAQ,KAAA;AACxD,MAAM,KAAA,CAAA,GAAA,CAAI,EAAE,CAAI,GAAA,GAAA;AAChB,MAAO,OAAA,KAAA;AAAA,KACT,EAAG,EAAE,CAAA;AAEP,IAAO,OAAA,eAAA;AAAA,MAAgB,kBACrB,YAAa,CAAA;AAAA,QACX,GAAK,EAAA,eAAA;AAAA,QACL,IAAM,EAAA,cAAA;AAAA,QACN,SAAS,CAAoB,gBAAA,KAAA;AAC3B,UAAM,MAAA,UAAA,GAAa,OAAO,eACvB,CAAA,GAAA;AAAA,YAAI,CACH,IAAA,KAAA,IAAA,CAAK,GAAI,CAAA,gCAAA,CAAiC,SAAS,OAAO;AAAA,WAE3D,CAAA,GAAA;AAAA,YAAI,CAAC,EAAE,OAAS,EAAA,IAAA,EACf,KAAA,OAAA;AAAA;AAAA;AAAA,cAGE,MAAA,CAAO,IAAK,CAAA,IAAI,CAAE,CAAA,MAAA;AAAA,gBAChB,CAAC,OAAO,GAAQ,KAAA;AACd,kBAAA,KAAA,CAAM,GAAG,CAAI,GAAA,gBAAA,CACV,IAA0C,CAAA,GAAG,EAAE,EAClD,CAAA;AACA,kBAAO,OAAA,KAAA;AAAA,iBACT;AAAA,gBACA;AAAC;AACH;AACF,WACF;AACF,UAAO,OAAA;AAAA,YACL,cAAc,CAAS,KAAA,KAAA;AACrB,cAAA,UAAA,CAAW,QAAQ,CAAO,GAAA,KAAA;AACxB,gBAAI,IAAA;AACF,kBAAA,GAAA,CAAI,aAAa,KAAK,CAAA;AAAA,iBAChB,CAAA,MAAA;AAAA;AAER,eACD,CAAA;AAAA;AACH,WACF;AAAA;AACF,OACD;AAAA,KACH;AAAA;AAEJ,CAAC;;;;"}
|
|
@@ -4,7 +4,7 @@ import { ApiBlueprint } from '@backstage/frontend-plugin-api';
|
|
|
4
4
|
|
|
5
5
|
const AppLanguageApi = ApiBlueprint.make({
|
|
6
6
|
name: "app-language",
|
|
7
|
-
params: (
|
|
7
|
+
params: (defineParams) => defineParams({
|
|
8
8
|
api: appLanguageApiRef,
|
|
9
9
|
deps: {},
|
|
10
10
|
factory: () => AppLanguageSelector.createWithStorage()
|