@backstage/core-compat-api 0.5.8-next.2 → 0.5.9-next.0
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
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# @backstage/core-compat-api
|
|
2
2
|
|
|
3
|
+
## 0.5.9-next.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies
|
|
8
|
+
- @backstage/frontend-plugin-api@0.14.2-next.0
|
|
9
|
+
- @backstage/plugin-catalog-react@2.0.1-next.0
|
|
10
|
+
- @backstage/core-plugin-api@1.12.4-next.0
|
|
11
|
+
- @backstage/types@1.2.2
|
|
12
|
+
- @backstage/version-bridge@1.0.12
|
|
13
|
+
- @backstage/plugin-app-react@0.2.1-next.0
|
|
14
|
+
|
|
15
|
+
## 0.5.8
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- c38b74d: Internal updates for blueprint moves to `@backstage/plugin-app-react`.
|
|
20
|
+
- ef6916e: Added `IconElement` type as a replacement for the deprecated `IconComponent`. The `IconsApi` now has a new `icon()` method that returns `IconElement`, while the existing `getIcon()` method is deprecated. The `IconBundleBlueprint` now accepts both `IconComponent` and `IconElement` values.
|
|
21
|
+
- 53b6549: Plugins in the new frontend system now have a `pluginId` field rather than `id` to better align with naming conventions used throughout the frontend and backend systems. The old field is still present but marked as deprecated. All internal code has been updated to prefer `pluginId` while maintaining backward compatibility by falling back to `id` when needed.
|
|
22
|
+
- a7e0d50: Updated `react-router-dom` peer dependency to `^6.30.2` and explicitly disabled v7 future flags to suppress deprecation warnings.
|
|
23
|
+
- 69d880e: Bump to latest zod to ensure it has the latest features
|
|
24
|
+
- Updated dependencies
|
|
25
|
+
- @backstage/plugin-catalog-react@2.0.0
|
|
26
|
+
- @backstage/frontend-plugin-api@0.14.0
|
|
27
|
+
- @backstage/plugin-app-react@0.2.0
|
|
28
|
+
- @backstage/core-plugin-api@1.12.3
|
|
29
|
+
- @backstage/version-bridge@1.0.12
|
|
30
|
+
|
|
3
31
|
## 0.5.8-next.2
|
|
4
32
|
|
|
5
33
|
### Patch Changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useApp } from '@backstage/core-plugin-api';
|
|
3
3
|
import { swappableComponentsApiRef, iconsApiRef, routeResolutionApiRef, ErrorDisplay, NotFoundErrorPage, Progress } from '@backstage/frontend-plugin-api';
|
|
4
|
-
import { useMemo } from 'react';
|
|
4
|
+
import { useMemo, createElement } from 'react';
|
|
5
5
|
import { toLegacyPlugin } from './BackwardsCompatProvider.esm.js';
|
|
6
6
|
import { ApiProvider } from '../core-app-api/src/apis/system/ApiProvider.esm.js';
|
|
7
7
|
import { useVersionedContext } from '@backstage/version-bridge';
|
|
@@ -44,6 +44,10 @@ class CompatIconsApi {
|
|
|
44
44
|
constructor(app) {
|
|
45
45
|
this.#app = app;
|
|
46
46
|
}
|
|
47
|
+
icon(key) {
|
|
48
|
+
const Icon = this.#app.getSystemIcon(key);
|
|
49
|
+
return Icon ? createElement(Icon) : void 0;
|
|
50
|
+
}
|
|
47
51
|
getIcon(key) {
|
|
48
52
|
return this.#app.getSystemIcon(key);
|
|
49
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForwardsCompatProvider.esm.js","sources":["../../src/compatWrapper/ForwardsCompatProvider.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 ApiHolder,\n ApiRef,\n AppContext,\n useApp,\n} from '@backstage/core-plugin-api';\nimport {\n AnyRouteRefParams,\n SwappableComponentRef,\n SwappableComponentsApi,\n ErrorDisplayProps,\n NotFoundErrorPageProps,\n ProgressProps,\n ExternalRouteRef,\n IconComponent,\n IconsApi,\n RouteFunc,\n RouteRef,\n RouteResolutionApi,\n SubRouteRef,\n swappableComponentsApiRef,\n iconsApiRef,\n routeResolutionApiRef,\n Progress,\n NotFoundErrorPage,\n ErrorDisplay,\n} from '@backstage/frontend-plugin-api';\nimport { ComponentType, useMemo } from 'react';\nimport { ReactNode } from 'react';\nimport { toLegacyPlugin } from './BackwardsCompatProvider';\n// eslint-disable-next-line @backstage/no-relative-monorepo-imports\nimport { ApiProvider } from '../../../core-app-api/src/apis/system/ApiProvider';\nimport { useVersionedContext } from '@backstage/version-bridge';\n// eslint-disable-next-line @backstage/no-relative-monorepo-imports\nimport { type RouteResolver } from '../../../core-plugin-api/src/routing/useRouteRef';\nimport { convertLegacyRouteRef } from '../convertLegacyRouteRef';\n\nclass CompatComponentsApi implements SwappableComponentsApi {\n readonly #Progress: ComponentType<ProgressProps>;\n readonly #NotFoundErrorPage: ComponentType<NotFoundErrorPageProps>;\n readonly #ErrorBoundaryFallback: ComponentType<ErrorDisplayProps>;\n\n constructor(app: AppContext) {\n const components = app.getComponents();\n const ErrorBoundaryFallback = (props: ErrorDisplayProps) => (\n <components.ErrorBoundaryFallback\n {...props}\n plugin={props.plugin && toLegacyPlugin(props.plugin)}\n />\n );\n this.#Progress = components.Progress;\n this.#NotFoundErrorPage = components.NotFoundErrorPage;\n this.#ErrorBoundaryFallback = ErrorBoundaryFallback;\n }\n\n getComponent<\n TInnerComponentProps extends {},\n TExternalComponentProps extends {} = TInnerComponentProps,\n >(\n ref: SwappableComponentRef<TInnerComponentProps, TExternalComponentProps>,\n ): (props: TInnerComponentProps) => JSX.Element | null {\n switch (ref.id) {\n case Progress.ref.id:\n return this.#Progress as (props: object) => JSX.Element | null;\n case NotFoundErrorPage.ref.id:\n return this.#NotFoundErrorPage as (props: object) => JSX.Element | null;\n case ErrorDisplay.ref.id:\n return this.#ErrorBoundaryFallback as (\n props: object,\n ) => JSX.Element | null;\n default:\n throw new Error(\n `No backwards compatible component is available for ref '${ref.id}'`,\n );\n }\n }\n}\n\nclass CompatIconsApi implements IconsApi {\n readonly #app: AppContext;\n\n constructor(app: AppContext) {\n this.#app = app;\n }\n\n getIcon(key: string): IconComponent | undefined {\n return this.#app.getSystemIcon(key);\n }\n\n listIconKeys(): string[] {\n return Object.keys(this.#app.getSystemIcons());\n }\n}\n\nclass CompatRouteResolutionApi implements RouteResolutionApi {\n readonly #routeResolver: RouteResolver;\n\n constructor(routeResolver: RouteResolver) {\n this.#routeResolver = routeResolver;\n }\n\n resolve<TParams extends AnyRouteRefParams>(\n anyRouteRef:\n | RouteRef<TParams>\n | SubRouteRef<TParams>\n | ExternalRouteRef<TParams>,\n options?: { sourcePath?: string },\n ): RouteFunc<TParams> | undefined {\n const legacyRef = convertLegacyRouteRef(anyRouteRef as RouteRef<TParams>);\n return this.#routeResolver.resolve(legacyRef, options?.sourcePath ?? '/');\n }\n}\n\nclass ForwardsCompatApis implements ApiHolder {\n readonly #componentsApi: SwappableComponentsApi;\n readonly #iconsApi: IconsApi;\n readonly #routeResolutionApi: RouteResolutionApi;\n\n constructor(app: AppContext, routeResolver: RouteResolver) {\n this.#componentsApi = new CompatComponentsApi(app);\n this.#iconsApi = new CompatIconsApi(app);\n this.#routeResolutionApi = new CompatRouteResolutionApi(routeResolver);\n }\n\n get<T>(ref: ApiRef<any>): T | undefined {\n if (ref.id === swappableComponentsApiRef.id) {\n return this.#componentsApi as T;\n } else if (ref.id === iconsApiRef.id) {\n return this.#iconsApi as T;\n } else if (ref.id === routeResolutionApiRef.id) {\n return this.#routeResolutionApi as T;\n }\n return undefined;\n }\n}\n\nfunction NewAppApisProvider(props: { children: ReactNode }) {\n const app = useApp();\n const versionedRouteResolverContext = useVersionedContext<{\n 1: RouteResolver;\n }>('routing-context');\n if (!versionedRouteResolverContext) {\n throw new Error('Routing context is not available');\n }\n const routeResolver = versionedRouteResolverContext.atVersion(1);\n if (!routeResolver) {\n throw new Error('RoutingContext v1 not available');\n }\n\n const appFallbackApis = useMemo(\n () => new ForwardsCompatApis(app, routeResolver),\n [app, routeResolver],\n );\n\n return <ApiProvider apis={appFallbackApis}>{props.children}</ApiProvider>;\n}\n\nexport function ForwardsCompatProvider(props: { children: ReactNode }) {\n return <NewAppApisProvider>{props.children}</NewAppApisProvider>;\n}\n"],"names":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ForwardsCompatProvider.esm.js","sources":["../../src/compatWrapper/ForwardsCompatProvider.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 ApiHolder,\n ApiRef,\n AppContext,\n useApp,\n} from '@backstage/core-plugin-api';\nimport {\n AnyRouteRefParams,\n SwappableComponentRef,\n SwappableComponentsApi,\n ErrorDisplayProps,\n NotFoundErrorPageProps,\n ProgressProps,\n ExternalRouteRef,\n IconComponent,\n IconElement,\n IconsApi,\n RouteFunc,\n RouteRef,\n RouteResolutionApi,\n SubRouteRef,\n swappableComponentsApiRef,\n iconsApiRef,\n routeResolutionApiRef,\n Progress,\n NotFoundErrorPage,\n ErrorDisplay,\n} from '@backstage/frontend-plugin-api';\nimport { ComponentType, createElement, useMemo } from 'react';\nimport { ReactNode } from 'react';\nimport { toLegacyPlugin } from './BackwardsCompatProvider';\n// eslint-disable-next-line @backstage/no-relative-monorepo-imports\nimport { ApiProvider } from '../../../core-app-api/src/apis/system/ApiProvider';\nimport { useVersionedContext } from '@backstage/version-bridge';\n// eslint-disable-next-line @backstage/no-relative-monorepo-imports\nimport { type RouteResolver } from '../../../core-plugin-api/src/routing/useRouteRef';\nimport { convertLegacyRouteRef } from '../convertLegacyRouteRef';\n\nclass CompatComponentsApi implements SwappableComponentsApi {\n readonly #Progress: ComponentType<ProgressProps>;\n readonly #NotFoundErrorPage: ComponentType<NotFoundErrorPageProps>;\n readonly #ErrorBoundaryFallback: ComponentType<ErrorDisplayProps>;\n\n constructor(app: AppContext) {\n const components = app.getComponents();\n const ErrorBoundaryFallback = (props: ErrorDisplayProps) => (\n <components.ErrorBoundaryFallback\n {...props}\n plugin={props.plugin && toLegacyPlugin(props.plugin)}\n />\n );\n this.#Progress = components.Progress;\n this.#NotFoundErrorPage = components.NotFoundErrorPage;\n this.#ErrorBoundaryFallback = ErrorBoundaryFallback;\n }\n\n getComponent<\n TInnerComponentProps extends {},\n TExternalComponentProps extends {} = TInnerComponentProps,\n >(\n ref: SwappableComponentRef<TInnerComponentProps, TExternalComponentProps>,\n ): (props: TInnerComponentProps) => JSX.Element | null {\n switch (ref.id) {\n case Progress.ref.id:\n return this.#Progress as (props: object) => JSX.Element | null;\n case NotFoundErrorPage.ref.id:\n return this.#NotFoundErrorPage as (props: object) => JSX.Element | null;\n case ErrorDisplay.ref.id:\n return this.#ErrorBoundaryFallback as (\n props: object,\n ) => JSX.Element | null;\n default:\n throw new Error(\n `No backwards compatible component is available for ref '${ref.id}'`,\n );\n }\n }\n}\n\nclass CompatIconsApi implements IconsApi {\n readonly #app: AppContext;\n\n constructor(app: AppContext) {\n this.#app = app;\n }\n\n icon(key: string): IconElement | undefined {\n const Icon = this.#app.getSystemIcon(key);\n return Icon ? createElement(Icon) : undefined;\n }\n\n getIcon(key: string): IconComponent | undefined {\n return this.#app.getSystemIcon(key);\n }\n\n listIconKeys(): string[] {\n return Object.keys(this.#app.getSystemIcons());\n }\n}\n\nclass CompatRouteResolutionApi implements RouteResolutionApi {\n readonly #routeResolver: RouteResolver;\n\n constructor(routeResolver: RouteResolver) {\n this.#routeResolver = routeResolver;\n }\n\n resolve<TParams extends AnyRouteRefParams>(\n anyRouteRef:\n | RouteRef<TParams>\n | SubRouteRef<TParams>\n | ExternalRouteRef<TParams>,\n options?: { sourcePath?: string },\n ): RouteFunc<TParams> | undefined {\n const legacyRef = convertLegacyRouteRef(anyRouteRef as RouteRef<TParams>);\n return this.#routeResolver.resolve(legacyRef, options?.sourcePath ?? '/');\n }\n}\n\nclass ForwardsCompatApis implements ApiHolder {\n readonly #componentsApi: SwappableComponentsApi;\n readonly #iconsApi: IconsApi;\n readonly #routeResolutionApi: RouteResolutionApi;\n\n constructor(app: AppContext, routeResolver: RouteResolver) {\n this.#componentsApi = new CompatComponentsApi(app);\n this.#iconsApi = new CompatIconsApi(app);\n this.#routeResolutionApi = new CompatRouteResolutionApi(routeResolver);\n }\n\n get<T>(ref: ApiRef<any>): T | undefined {\n if (ref.id === swappableComponentsApiRef.id) {\n return this.#componentsApi as T;\n } else if (ref.id === iconsApiRef.id) {\n return this.#iconsApi as T;\n } else if (ref.id === routeResolutionApiRef.id) {\n return this.#routeResolutionApi as T;\n }\n return undefined;\n }\n}\n\nfunction NewAppApisProvider(props: { children: ReactNode }) {\n const app = useApp();\n const versionedRouteResolverContext = useVersionedContext<{\n 1: RouteResolver;\n }>('routing-context');\n if (!versionedRouteResolverContext) {\n throw new Error('Routing context is not available');\n }\n const routeResolver = versionedRouteResolverContext.atVersion(1);\n if (!routeResolver) {\n throw new Error('RoutingContext v1 not available');\n }\n\n const appFallbackApis = useMemo(\n () => new ForwardsCompatApis(app, routeResolver),\n [app, routeResolver],\n );\n\n return <ApiProvider apis={appFallbackApis}>{props.children}</ApiProvider>;\n}\n\nexport function ForwardsCompatProvider(props: { children: ReactNode }) {\n return <NewAppApisProvider>{props.children}</NewAppApisProvider>;\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/core-compat-api",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.9-next.0",
|
|
4
4
|
"backstage": {
|
|
5
5
|
"role": "web-library"
|
|
6
6
|
},
|
|
@@ -31,22 +31,22 @@
|
|
|
31
31
|
"test": "backstage-cli package test"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@backstage/core-plugin-api": "1.12.
|
|
35
|
-
"@backstage/frontend-plugin-api": "0.14.
|
|
36
|
-
"@backstage/plugin-app-react": "0.
|
|
37
|
-
"@backstage/plugin-catalog-react": "2.0.
|
|
34
|
+
"@backstage/core-plugin-api": "1.12.4-next.0",
|
|
35
|
+
"@backstage/frontend-plugin-api": "0.14.2-next.0",
|
|
36
|
+
"@backstage/plugin-app-react": "0.2.1-next.0",
|
|
37
|
+
"@backstage/plugin-catalog-react": "2.0.1-next.0",
|
|
38
38
|
"@backstage/types": "1.2.2",
|
|
39
|
-
"@backstage/version-bridge": "1.0.12
|
|
39
|
+
"@backstage/version-bridge": "1.0.12",
|
|
40
40
|
"lodash": "^4.17.21",
|
|
41
41
|
"zod": "^3.25.76"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@backstage/cli": "0.35.
|
|
45
|
-
"@backstage/core-app-api": "1.19.
|
|
46
|
-
"@backstage/frontend-app-api": "0.15.
|
|
47
|
-
"@backstage/frontend-test-utils": "0.5.
|
|
48
|
-
"@backstage/plugin-catalog": "1.33.
|
|
49
|
-
"@backstage/test-utils": "1.7.
|
|
44
|
+
"@backstage/cli": "0.35.5-next.0",
|
|
45
|
+
"@backstage/core-app-api": "1.19.6-next.0",
|
|
46
|
+
"@backstage/frontend-app-api": "0.15.1-next.0",
|
|
47
|
+
"@backstage/frontend-test-utils": "0.5.1-next.0",
|
|
48
|
+
"@backstage/plugin-catalog": "1.33.1-next.0",
|
|
49
|
+
"@backstage/test-utils": "1.7.16-next.0",
|
|
50
50
|
"@backstage/types": "1.2.2",
|
|
51
51
|
"@testing-library/jest-dom": "^6.0.0",
|
|
52
52
|
"@testing-library/react": "^16.0.0",
|