@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.
Files changed (58) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +1 -7
  3. package/dist/alpha/appModulePublicSignIn.esm.js +52 -0
  4. package/dist/alpha/appModulePublicSignIn.esm.js.map +1 -0
  5. package/dist/alpha.d.ts +54 -0
  6. package/dist/alpha.esm.js +2 -0
  7. package/dist/alpha.esm.js.map +1 -0
  8. package/dist/apis/DefaultDialogApi.esm.js.map +1 -1
  9. package/dist/apis/SwappableComponentsApi/DefaultSwappableComponentsApi.esm.js +40 -0
  10. package/dist/apis/SwappableComponentsApi/DefaultSwappableComponentsApi.esm.js.map +1 -0
  11. package/dist/defaultApis.esm.js +23 -30
  12. package/dist/defaultApis.esm.js.map +1 -1
  13. package/dist/extensions/AnalyticsApi.esm.js +56 -0
  14. package/dist/extensions/AnalyticsApi.esm.js.map +1 -0
  15. package/dist/extensions/AppLanguageApi.esm.js +1 -1
  16. package/dist/extensions/AppLanguageApi.esm.js.map +1 -1
  17. package/dist/extensions/AppRoot.esm.js.map +1 -1
  18. package/dist/extensions/AppRoutes.esm.js +1 -4
  19. package/dist/extensions/AppRoutes.esm.js.map +1 -1
  20. package/dist/extensions/AppThemeApi.esm.js +1 -1
  21. package/dist/extensions/AppThemeApi.esm.js.map +1 -1
  22. package/dist/extensions/DialogDisplay.esm.js.map +1 -1
  23. package/dist/extensions/FeatureFlagsApi.esm.js +1 -1
  24. package/dist/extensions/FeatureFlagsApi.esm.js.map +1 -1
  25. package/dist/extensions/IconsApi.esm.js +1 -1
  26. package/dist/extensions/IconsApi.esm.js.map +1 -1
  27. package/dist/extensions/LegacyComponentsApi.esm.js +26 -0
  28. package/dist/extensions/LegacyComponentsApi.esm.js.map +1 -0
  29. package/dist/extensions/SwappableComponentsApi.esm.js +40 -0
  30. package/dist/extensions/SwappableComponentsApi.esm.js.map +1 -0
  31. package/dist/extensions/TranslationsApi.esm.js +1 -1
  32. package/dist/extensions/TranslationsApi.esm.js.map +1 -1
  33. package/dist/extensions/components.esm.js +21 -43
  34. package/dist/extensions/components.esm.js.map +1 -1
  35. package/dist/extensions/elements.esm.js +1 -1
  36. package/dist/extensions/elements.esm.js.map +1 -1
  37. package/dist/index.d.ts +143 -63
  38. package/dist/packages/frontend-internal/src/wiring/InternalExtensionDefinition.esm.js +7 -0
  39. package/dist/packages/frontend-internal/src/wiring/InternalExtensionDefinition.esm.js.map +1 -0
  40. package/dist/packages/frontend-internal/src/wiring/InternalFrontendPlugin.esm.js +7 -0
  41. package/dist/packages/frontend-internal/src/wiring/InternalFrontendPlugin.esm.js.map +1 -0
  42. package/dist/packages/frontend-internal/src/wiring/InternalSwappableComponentRef.esm.js +9 -0
  43. package/dist/packages/frontend-internal/src/wiring/InternalSwappableComponentRef.esm.js.map +1 -0
  44. package/dist/packages/opaque-internal/src/OpaqueType.esm.js +103 -0
  45. package/dist/packages/opaque-internal/src/OpaqueType.esm.js.map +1 -0
  46. package/dist/plugin.esm.js +9 -7
  47. package/dist/plugin.esm.js.map +1 -1
  48. package/dist/plugins/app/package.json.esm.js +26 -6
  49. package/dist/plugins/app/package.json.esm.js.map +1 -1
  50. package/package.json +38 -18
  51. package/dist/extensions/ComponentsApi.esm.js +0 -28
  52. package/dist/extensions/ComponentsApi.esm.js.map +0 -1
  53. package/dist/packages/app-defaults/src/defaults/components.esm.js +0 -46
  54. package/dist/packages/app-defaults/src/defaults/components.esm.js.map +0 -1
  55. package/dist/packages/core-app-api/src/apis/implementations/AnalyticsApi/NoOpAnalyticsApi.esm.js +0 -7
  56. package/dist/packages/core-app-api/src/apis/implementations/AnalyticsApi/NoOpAnalyticsApi.esm.js.map +0 -1
  57. package/dist/packages/frontend-app-api/src/apis/implementations/ComponentsApi/DefaultComponentsApi.esm.js +0 -21
  58. 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
- Welcome to the app plugin!
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;;;;"}
@@ -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,2 @@
1
+ export { appModulePublicSignIn } from './alpha/appModulePublicSignIn.esm.js';
2
+ //# sourceMappingURL=alpha.esm.js.map
@@ -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;\n\n/**\n * Default implementation for the {@link DialogApi}.\n * @internal\n */\nexport class DefaultDialogApi implements DialogApi {\n #onShow?: OnShowDialog;\n\n show<TResult = {}>(\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 = {}>(\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;;;;"}
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;;;;"}
@@ -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, analyticsApiRef, errorApiRef, storageApiRef, fetchApiRef, identityApiRef, oauthRequestApiRef, googleAuthApiRef, microsoftAuthApiRef, githubAuthApiRef, oktaAuthApiRef, gitlabAuthApiRef, oneloginAuthApiRef, bitbucketAuthApiRef, bitbucketServerAuthApiRef, atlassianAuthApiRef, vmwareCloudAuthApiRef } from '@backstage/core-plugin-api';
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: (define) => define({
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: (define) => define({
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: (define) => define({
51
+ params: (defineParams) => defineParams({
52
52
  api: alertApiRef,
53
53
  deps: {},
54
54
  factory: () => new AlertApiForwarder()
55
55
  })
56
56
  }),
57
- ApiBlueprint.make({
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: (define) => define({
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: (define) => define({
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: (define) => define({
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: (define) => define({
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: (define) => define({
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: (define) => define({
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: (define) => define({
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: (define) => define({
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: (define) => define({
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: (define) => define({
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: (define) => define({
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: (define) => define({
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: (define) => define({
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: (define) => define({
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: (define) => define({
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: (define) => define(ScmAuth.createDefaultApiFactory())
301
+ params: (defineParams) => defineParams(ScmAuth.createDefaultApiFactory())
309
302
  }),
310
303
  ApiBlueprint.make({
311
304
  name: "scm-integrations",
312
- params: (define) => define({
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyEO,MAAM,IAAO,GAAA;AAAA,EAClB,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,QAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,YAAA;AAAA,MACL,MAAM,EAAC;AAAA,MACP,OAAA,EAAS,MAAM,IAAI,gBAAiB;AAAA,KACrC;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,WAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,eAAA;AAAA,MACL,IAAA,EAAM,EAAE,SAAA,EAAW,YAAa,EAAA;AAAA,MAChC,OAAS,EAAA,CAAC,EAAE,SAAA,OACV,mBAAoB,CAAA,OAAA;AAAA,QAClB,CAAG,EAAA,SAAA,CAAU,SAAU,CAAA,iBAAiB,CAAC,CAAA,mBAAA;AAAA;AAC3C,KACH;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,OAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,WAAA;AAAA,MACL,MAAM,EAAC;AAAA,MACP,OAAA,EAAS,MAAM,IAAI,iBAAkB;AAAA,KACtC;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,WAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,eAAA;AAAA,MACL,MAAM,EAAC;AAAA,MACP,OAAA,EAAS,MAAM,IAAI,gBAAiB;AAAA,KACrC;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,OAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,WAAA;AAAA,MACL,IAAA,EAAM,EAAE,QAAA,EAAU,WAAY,EAAA;AAAA,MAC9B,OAAS,EAAA,CAAC,EAAE,QAAA,EAAe,KAAA;AACzB,QAAA,MAAM,WAAW,IAAI,YAAA,CAAa,QAAU,EAAA,IAAI,mBAAmB,CAAA;AACnE,QAAA,uBAAA,CAAwB,OAAQ,CAAA,QAAA,EAAU,EAAE,MAAA,EAAQ,OAAO,CAAA;AAC3D,QAAO,OAAA,QAAA;AAAA;AACT,KACD;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,SAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,aAAA;AAAA,MACL,IAAA,EAAM,EAAE,QAAA,EAAU,WAAY,EAAA;AAAA,MAC9B,OAAA,EAAS,CAAC,EAAE,QAAA,OAAe,UAAW,CAAA,MAAA,CAAO,EAAE,QAAA,EAAU;AAAA,KAC1D;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,OAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,WAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,SAAW,EAAA,YAAA;AAAA,QACX,WAAa,EAAA,cAAA;AAAA,QACb,YAAc,EAAA;AAAA,OAChB;AAAA,MACA,SAAS,CAAC,EAAE,SAAW,EAAA,WAAA,EAAa,cAAmB,KAAA;AACrD,QAAA,OAAO,cAAe,CAAA;AAAA,UACpB,UAAY,EAAA;AAAA,YACV,iBAAiB,qBAAsB,CAAA;AAAA,cACrC;AAAA,aACD,CAAA;AAAA,YACD,iBAAiB,kBAAmB,CAAA;AAAA,cAClC,WAAA;AAAA,cACA,MAAQ,EAAA;AAAA,aACT;AAAA;AACH,SACD,CAAA;AAAA;AACH,KACD;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,eAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,kBAAA;AAAA,MACL,MAAM,EAAC;AAAA,MACP,OAAA,EAAS,MAAM,IAAI,mBAAoB;AAAA,KACxC;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,aAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,gBAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,YAAc,EAAA,eAAA;AAAA,QACd,eAAiB,EAAA,kBAAA;AAAA,QACjB,SAAW,EAAA;AAAA,OACb;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,iBAAiB,SAAU,EAAA,KACnD,WAAW,MAAO,CAAA;AAAA,QAChB,SAAA;AAAA,QACA,YAAA;AAAA,QACA,eAAA;AAAA,QACA,WAAA,EAAa,SAAU,CAAA,iBAAA,CAAkB,kBAAkB;AAAA,OAC5D;AAAA,KACJ;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,gBAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,mBAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,YAAc,EAAA,eAAA;AAAA,QACd,eAAiB,EAAA,kBAAA;AAAA,QACjB,SAAW,EAAA;AAAA,OACb;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,iBAAiB,SAAU,EAAA,KACnD,cAAc,MAAO,CAAA;AAAA,QACnB,SAAA;AAAA,QACA,YAAA;AAAA,QACA,eAAA;AAAA,QACA,WAAA,EAAa,SAAU,CAAA,iBAAA,CAAkB,kBAAkB;AAAA,OAC5D;AAAA,KACJ;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,aAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,gBAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,YAAc,EAAA,eAAA;AAAA,QACd,eAAiB,EAAA,kBAAA;AAAA,QACjB,SAAW,EAAA;AAAA,OACb;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,iBAAiB,SAAU,EAAA,KACnD,WAAW,MAAO,CAAA;AAAA,QAChB,SAAA;AAAA,QACA,YAAA;AAAA,QACA,eAAA;AAAA,QACA,aAAA,EAAe,CAAC,WAAW,CAAA;AAAA,QAC3B,WAAA,EAAa,SAAU,CAAA,iBAAA,CAAkB,kBAAkB;AAAA,OAC5D;AAAA,KACJ;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,WAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,cAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,YAAc,EAAA,eAAA;AAAA,QACd,eAAiB,EAAA,kBAAA;AAAA,QACjB,SAAW,EAAA;AAAA,OACb;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,iBAAiB,SAAU,EAAA,KACnD,SAAS,MAAO,CAAA;AAAA,QACd,SAAA;AAAA,QACA,YAAA;AAAA,QACA,eAAA;AAAA,QACA,WAAA,EAAa,SAAU,CAAA,iBAAA,CAAkB,kBAAkB;AAAA,OAC5D;AAAA,KACJ;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,aAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,gBAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,YAAc,EAAA,eAAA;AAAA,QACd,eAAiB,EAAA,kBAAA;AAAA,QACjB,SAAW,EAAA;AAAA,OACb;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,iBAAiB,SAAU,EAAA,KACnD,WAAW,MAAO,CAAA;AAAA,QAChB,SAAA;AAAA,QACA,YAAA;AAAA,QACA,eAAA;AAAA,QACA,WAAA,EAAa,SAAU,CAAA,iBAAA,CAAkB,kBAAkB;AAAA,OAC5D;AAAA,KACJ;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,eAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,kBAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,YAAc,EAAA,eAAA;AAAA,QACd,eAAiB,EAAA,kBAAA;AAAA,QACjB,SAAW,EAAA;AAAA,OACb;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,iBAAiB,SAAU,EAAA,KACnD,aAAa,MAAO,CAAA;AAAA,QAClB,SAAA;AAAA,QACA,YAAA;AAAA,QACA,eAAA;AAAA,QACA,WAAA,EAAa,SAAU,CAAA,iBAAA,CAAkB,kBAAkB;AAAA,OAC5D;AAAA,KACJ;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,gBAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,mBAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,YAAc,EAAA,eAAA;AAAA,QACd,eAAiB,EAAA,kBAAA;AAAA,QACjB,SAAW,EAAA;AAAA,OACb;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,iBAAiB,SAAU,EAAA,KACnD,cAAc,MAAO,CAAA;AAAA,QACnB,SAAA;AAAA,QACA,YAAA;AAAA,QACA,eAAA;AAAA,QACA,aAAA,EAAe,CAAC,SAAS,CAAA;AAAA,QACzB,WAAA,EAAa,SAAU,CAAA,iBAAA,CAAkB,kBAAkB;AAAA,OAC5D;AAAA,KACJ;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,uBAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,yBAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,YAAc,EAAA,eAAA;AAAA,QACd,eAAiB,EAAA,kBAAA;AAAA,QACjB,SAAW,EAAA;AAAA,OACb;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,iBAAiB,SAAU,EAAA,KACnD,oBAAoB,MAAO,CAAA;AAAA,QACzB,SAAA;AAAA,QACA,YAAA;AAAA,QACA,eAAA;AAAA,QACA,aAAA,EAAe,CAAC,WAAW,CAAA;AAAA,QAC3B,WAAA,EAAa,SAAU,CAAA,iBAAA,CAAkB,kBAAkB;AAAA,OAC5D;AAAA,KACJ;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,gBAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,mBAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,YAAc,EAAA,eAAA;AAAA,QACd,eAAiB,EAAA,kBAAA;AAAA,QACjB,SAAW,EAAA;AAAA,OACb;AAAA,MACA,SAAS,CAAC,EAAE,YAAc,EAAA,eAAA,EAAiB,WAAgB,KAAA;AACzD,QAAA,OAAO,cAAc,MAAO,CAAA;AAAA,UAC1B,SAAA;AAAA,UACA,YAAA;AAAA,UACA,eAAA;AAAA,UACA,WAAA,EAAa,SAAU,CAAA,iBAAA,CAAkB,kBAAkB;AAAA,SAC5D,CAAA;AAAA;AACH,KACD;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,mBAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,qBAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,YAAc,EAAA,eAAA;AAAA,QACd,eAAiB,EAAA,kBAAA;AAAA,QACjB,SAAW,EAAA;AAAA,OACb;AAAA,MACA,SAAS,CAAC,EAAE,YAAc,EAAA,eAAA,EAAiB,WAAgB,KAAA;AACzD,QAAA,OAAO,gBAAgB,MAAO,CAAA;AAAA,UAC5B,SAAA;AAAA,UACA,YAAA;AAAA,UACA,eAAA;AAAA,UACA,WAAA,EAAa,SAAU,CAAA,iBAAA,CAAkB,kBAAkB;AAAA,SAC5D,CAAA;AAAA;AACH,KACD;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,YAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,gBAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,SAAW,EAAA,eAAA;AAAA,QACX,QAAU,EAAA,cAAA;AAAA,QACV,MAAQ,EAAA;AAAA,OACV;AAAA,MACA,OAAS,EAAA,CAAC,EAAE,MAAA,EAAQ,SAAW,EAAA,QAAA,EAC7B,KAAA,qBAAA,CAAsB,MAAO,CAAA,EAAE,MAAQ,EAAA,SAAA,EAAW,UAAU;AAAA,KAC/D;AAAA,GACJ,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,UAAA;AAAA,IACN,MAAQ,EAAA,CAAA,MAAA,KAAU,MAAO,CAAA,OAAA,CAAQ,yBAAyB;AAAA,GAC3D,CAAA;AAAA,EACD,aAAa,IAAK,CAAA;AAAA,IAChB,IAAM,EAAA,kBAAA;AAAA,IACN,MAAA,EAAQ,YACN,MAAO,CAAA;AAAA,MACL,GAAK,EAAA,qBAAA;AAAA,MACL,IAAA,EAAM,EAAE,SAAA,EAAW,YAAa,EAAA;AAAA,MAChC,SAAS,CAAC,EAAE,WAAgB,KAAA,kBAAA,CAAmB,WAAW,SAAS;AAAA,KACpE;AAAA,GACJ;AACH;;;;"}
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: (define) => define({
7
+ params: (defineParams) => defineParams({
8
8
  api: appLanguageApiRef,
9
9
  deps: {},
10
10
  factory: () => AppLanguageSelector.createWithStorage()