@backstage/plugin-catalog 1.14.0-next.2 → 1.15.0-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.
Files changed (47) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/alpha/package.json +1 -1
  3. package/dist/alpha.d.ts +30 -8
  4. package/dist/alpha.esm.js +269 -9
  5. package/dist/alpha.esm.js.map +1 -1
  6. package/dist/esm/AboutCard-a9ed76bc.esm.js +322 -0
  7. package/dist/esm/AboutCard-a9ed76bc.esm.js.map +1 -0
  8. package/dist/esm/CatalogTable-7c66129f.esm.js +337 -0
  9. package/dist/esm/CatalogTable-7c66129f.esm.js.map +1 -0
  10. package/dist/esm/EntityLayout-b2961487.esm.js +301 -0
  11. package/dist/esm/EntityLayout-b2961487.esm.js.map +1 -0
  12. package/dist/esm/EntityOverviewPage-c6894e3c.esm.js +11 -0
  13. package/dist/esm/EntityOverviewPage-c6894e3c.esm.js.map +1 -0
  14. package/dist/esm/LinksGridList-c9dd074c.esm.js +55 -0
  15. package/dist/esm/LinksGridList-c9dd074c.esm.js.map +1 -0
  16. package/dist/esm/conditions-7e166d27.esm.js +92 -0
  17. package/dist/esm/conditions-7e166d27.esm.js.map +1 -0
  18. package/dist/esm/index-1819df86.esm.js +6 -0
  19. package/dist/esm/index-1819df86.esm.js.map +1 -0
  20. package/dist/esm/index-1fe355f9.esm.js +13 -0
  21. package/dist/esm/index-1fe355f9.esm.js.map +1 -0
  22. package/dist/esm/index-437026aa.esm.js +17 -0
  23. package/dist/esm/index-437026aa.esm.js.map +1 -0
  24. package/dist/esm/{index-a9833792.esm.js → index-85414972.esm.js} +46 -41
  25. package/dist/esm/index-85414972.esm.js.map +1 -0
  26. package/dist/esm/{index-877315c2.esm.js → index-a2f43c63.esm.js} +2 -29
  27. package/dist/esm/{index-877315c2.esm.js.map → index-a2f43c63.esm.js.map} +1 -1
  28. package/dist/esm/index-b005db1b.esm.js +31 -0
  29. package/dist/esm/index-b005db1b.esm.js.map +1 -0
  30. package/dist/esm/routes-45cc523b.esm.js +347 -0
  31. package/dist/esm/routes-45cc523b.esm.js.map +1 -0
  32. package/dist/esm/{index-f0e32dd1.esm.js → useEntityFromUrl-59c4a128.esm.js} +5 -9
  33. package/dist/esm/useEntityFromUrl-59c4a128.esm.js.map +1 -0
  34. package/dist/index.d.ts +133 -5
  35. package/dist/index.esm.js +540 -15
  36. package/dist/index.esm.js.map +1 -1
  37. package/package.json +26 -24
  38. package/dist/esm/DefaultStarredEntitiesApi-cc4feb80.esm.js +0 -79
  39. package/dist/esm/DefaultStarredEntitiesApi-cc4feb80.esm.js.map +0 -1
  40. package/dist/esm/index-2f599706.esm.js +0 -35
  41. package/dist/esm/index-2f599706.esm.js.map +0 -1
  42. package/dist/esm/index-a9833792.esm.js.map +0 -1
  43. package/dist/esm/index-b8cad66a.esm.js +0 -35
  44. package/dist/esm/index-b8cad66a.esm.js.map +0 -1
  45. package/dist/esm/index-ba8d718c.esm.js +0 -1591
  46. package/dist/esm/index-ba8d718c.esm.js.map +0 -1
  47. package/dist/esm/index-f0e32dd1.esm.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,90 @@
1
1
  # @backstage/plugin-catalog
2
2
 
3
+ ## 1.15.0-next.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 1e5b7d993a: Added the `DefaultEntityPresentationApi`, which is an implementation of the
8
+ `EntityPresentationApi` that `@backstage/plugin-catalog-react` exposes through
9
+ its `entityPresentationApiRef`. This implementation is also by default made
10
+ available automatically by the catalog plugin, unless you replace it with a
11
+ custom one. It batch fetches and caches data from the catalog as needed for
12
+ display, and is customizable by adopters to add their own rendering functions.
13
+
14
+ ### Patch Changes
15
+
16
+ - 8a8445663b: Migrate catalog entity cards to new frontend system extension format.
17
+ - e964c17db9: Use default extensions boundary and suspense on the alpha declarative `createCatalogFilterExtension` extension factory.
18
+ - 71c97e7d73: The `spec.lifecycle' field in entities will now always be rendered as a string.
19
+ - 6c2b872153: Add official support for React 18.
20
+ - 0bf6ebda88: Initial entity page implementation for new frontend system at `/alpha`, with an overview page enabled by default and the about card available as an optional card.
21
+ - bb98953cb9: Create declarative extensions for the `Catalog` plugin; this initial plugin preset contains sidebar item, index page and filter extensions, all distributed via `/alpha` subpath.
22
+
23
+ The `EntityPage` will be migrated in a follow-up patch.
24
+
25
+ - Updated dependencies
26
+ - @backstage/core-components@0.13.7-next.0
27
+ - @backstage/frontend-plugin-api@0.3.0-next.0
28
+ - @backstage/plugin-scaffolder-common@1.4.3-next.0
29
+ - @backstage/plugin-catalog-react@1.9.0-next.0
30
+ - @backstage/integration-react@1.1.21-next.0
31
+ - @backstage/core-plugin-api@1.8.0-next.0
32
+ - @backstage/plugin-search-react@1.7.2-next.0
33
+ - @backstage/theme@0.4.4-next.0
34
+ - @backstage/catalog-client@1.4.5
35
+ - @backstage/catalog-model@1.4.3
36
+ - @backstage/errors@1.2.3
37
+ - @backstage/types@1.1.1
38
+ - @backstage/plugin-catalog-common@1.0.17
39
+ - @backstage/plugin-search-common@1.2.7
40
+
41
+ ## 1.14.0
42
+
43
+ ### Minor Changes
44
+
45
+ - 28f1ab2e1a: The catalog plugin no longer implements the experimental reconfiguration API. The create button title can now instead be configured using the new experimental internationalization API, via the `catalogTranslationRef` exported at `/alpha`. For example:
46
+
47
+ ```ts
48
+ import { catalogTranslationRef } from '@backstage/plugin-catalog/alpha';
49
+
50
+ const app = createApp({
51
+ __experimentalTranslations: {
52
+ resources: [
53
+ createTranslationMessages({
54
+ ref: catalogTranslationRef,
55
+ catalog_page_create_button_title: 'Create Software',
56
+ }),
57
+ ],
58
+ },
59
+ });
60
+ ```
61
+
62
+ - f3561a2935: include owner chip in catalog search result item
63
+
64
+ ### Patch Changes
65
+
66
+ - 7c4a8e4d5f: Create an experimental `CatalogSearchResultItemExtension` for declarative integration with Backstage; it can be accessed via the `/alpha` import.
67
+ - 0296f272b4: The `spec.lifecycle' field in entities will now always be rendered as a string.
68
+ - 0b55f773a7: Removed some unused dependencies
69
+ - 9a1fce352e: Updated dependency `@testing-library/jest-dom` to `^6.0.0`.
70
+ - f95af4e540: Updated dependency `@testing-library/dom` to `^9.0.0`.
71
+ - e5a2956dd2: Migrate catalog api to declarative integration system, it is exported from `/alpha` subpath.
72
+ - Updated dependencies
73
+ - @backstage/plugin-catalog-react@1.8.5
74
+ - @backstage/frontend-plugin-api@0.2.0
75
+ - @backstage/core-plugin-api@1.7.0
76
+ - @backstage/core-components@0.13.6
77
+ - @backstage/integration-react@1.1.20
78
+ - @backstage/catalog-model@1.4.3
79
+ - @backstage/errors@1.2.3
80
+ - @backstage/plugin-search-react@1.7.1
81
+ - @backstage/theme@0.4.3
82
+ - @backstage/catalog-client@1.4.5
83
+ - @backstage/types@1.1.1
84
+ - @backstage/plugin-catalog-common@1.0.17
85
+ - @backstage/plugin-scaffolder-common@1.4.2
86
+ - @backstage/plugin-search-common@1.2.7
87
+
3
88
  ## 1.14.0-next.2
4
89
 
5
90
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-catalog",
3
- "version": "1.14.0-next.2",
3
+ "version": "1.15.0-next.0",
4
4
  "main": "../dist/alpha.esm.js",
5
5
  "module": "../dist/alpha.esm.js",
6
6
  "types": "../dist/alpha.d.ts"
package/dist/alpha.d.ts CHANGED
@@ -1,14 +1,36 @@
1
+ /// <reference types="react" />
1
2
  import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
3
+ import { AnyExtensionInputMap, PortableSchema } from '@backstage/frontend-plugin-api';
2
4
 
3
5
  /** @alpha */
4
- declare const CatalogApi: _backstage_frontend_plugin_api.Extension<{}>;
5
- /** @alpha */
6
- declare const StarredEntitiesApi: _backstage_frontend_plugin_api.Extension<{}>;
7
- /** @alpha */
8
- declare const CatalogSearchResultListItemExtension: _backstage_frontend_plugin_api.Extension<{
9
- noTrack?: boolean | undefined;
6
+ declare const _default: _backstage_frontend_plugin_api.BackstagePlugin<{
7
+ catalogIndex: _backstage_frontend_plugin_api.RouteRef<undefined>;
8
+ catalogEntity: _backstage_frontend_plugin_api.RouteRef<{
9
+ name: string;
10
+ kind: string;
11
+ namespace: string;
12
+ }>;
13
+ }, {
14
+ viewTechDoc: _backstage_frontend_plugin_api.ExternalRouteRef<{
15
+ name: string;
16
+ kind: string;
17
+ namespace: string;
18
+ }, true>;
19
+ createComponent: _backstage_frontend_plugin_api.ExternalRouteRef<undefined, true>;
20
+ createFromTemplate: _backstage_frontend_plugin_api.ExternalRouteRef<{
21
+ namespace: string;
22
+ templateName: string;
23
+ }, true>;
10
24
  }>;
25
+
11
26
  /** @alpha */
12
- declare const _default: _backstage_frontend_plugin_api.BackstagePlugin;
27
+ declare function createCatalogFilterExtension<TInputs extends AnyExtensionInputMap, TConfig = never>(options: {
28
+ id: string;
29
+ inputs?: TInputs;
30
+ configSchema?: PortableSchema<TConfig>;
31
+ loader: (options: {
32
+ config: TConfig;
33
+ }) => Promise<JSX.Element>;
34
+ }): _backstage_frontend_plugin_api.Extension<TConfig>;
13
35
 
14
- export { CatalogApi, CatalogSearchResultListItemExtension, StarredEntitiesApi, _default as default };
36
+ export { createCatalogFilterExtension, _default as default };
package/dist/alpha.esm.js CHANGED
@@ -1,12 +1,31 @@
1
+ import { convertLegacyRouteRef } from '@backstage/core-plugin-api/alpha';
2
+ import { createApiExtension, createPageExtension, createExtensionInput, coreExtensionData, createExtension, ExtensionBoundary, createSchemaFromZod, createNavItemExtension, createPlugin } from '@backstage/frontend-plugin-api';
3
+ import { catalogApiRef, starredEntitiesApiRef, entityRouteRef, AsyncEntityProvider } from '@backstage/plugin-catalog-react';
4
+ import { D as DefaultStarredEntitiesApi, r as rootRouteRef, v as viewTechDocRouteRef, c as createComponentRouteRef, b as createFromTemplateRouteRef } from './esm/routes-45cc523b.esm.js';
1
5
  import { createApiFactory, discoveryApiRef, fetchApiRef, storageApiRef } from '@backstage/core-plugin-api';
2
6
  import { CatalogClient } from '@backstage/catalog-client';
3
- import { createApiExtension, createPlugin } from '@backstage/frontend-plugin-api';
4
- import { catalogApiRef, starredEntitiesApiRef } from '@backstage/plugin-catalog-react';
7
+ import React, { lazy } from 'react';
8
+ import { entityContentTitleExtensionDataRef, createEntityCardExtension, createEntityContentExtension, entityFilterExtensionDataRef } from '@backstage/plugin-catalog-react/alpha';
9
+ import { u as useEntityFromUrl } from './esm/useEntityFromUrl-59c4a128.esm.js';
10
+ import HomeIcon from '@material-ui/icons/Home';
5
11
  import { createSearchResultListItemExtension } from '@backstage/plugin-search-react/alpha';
6
- import { D as DefaultStarredEntitiesApi } from './esm/DefaultStarredEntitiesApi-cc4feb80.esm.js';
7
- import 'zen-observable';
8
12
  import '@backstage/catalog-model';
13
+ import '@backstage/types';
14
+ import 'dataloader';
15
+ import 'expiry-map';
16
+ import 'zen-observable';
17
+ import '@material-ui/icons/Apartment';
18
+ import '@material-ui/icons/Business';
19
+ import '@material-ui/icons/Extension';
20
+ import '@material-ui/icons/Help';
21
+ import '@material-ui/icons/LibraryAdd';
22
+ import '@material-ui/icons/LocationOn';
23
+ import '@material-ui/icons/Memory';
24
+ import '@material-ui/icons/People';
25
+ import '@material-ui/icons/Person';
9
26
  import 'lodash';
27
+ import 'react-router-dom';
28
+ import 'react-use/lib/useAsyncRetry';
10
29
 
11
30
  const CatalogApi = createApiExtension({
12
31
  factory: createApiFactory({
@@ -25,6 +44,232 @@ const StarredEntitiesApi = createApiExtension({
25
44
  factory: ({ storageApi }) => new DefaultStarredEntitiesApi({ storageApi })
26
45
  })
27
46
  });
47
+ var apis = [CatalogApi, StarredEntitiesApi];
48
+
49
+ const CatalogIndexPage = createPageExtension({
50
+ id: "plugin.catalog.page.index",
51
+ defaultPath: "/catalog",
52
+ routeRef: convertLegacyRouteRef(rootRouteRef),
53
+ inputs: {
54
+ filters: createExtensionInput({
55
+ element: coreExtensionData.reactElement
56
+ })
57
+ },
58
+ loader: async ({ inputs }) => {
59
+ const { BaseCatalogPage } = await import('./esm/index-85414972.esm.js');
60
+ const filters = inputs.filters.map((filter) => filter.element);
61
+ return /* @__PURE__ */ React.createElement(BaseCatalogPage, { filters: /* @__PURE__ */ React.createElement(React.Fragment, null, filters) });
62
+ }
63
+ });
64
+ const CatalogEntityPage = createPageExtension({
65
+ id: "plugin.catalog.page.entity",
66
+ defaultPath: "/catalog/:namespace/:kind/:name",
67
+ routeRef: convertLegacyRouteRef(entityRouteRef),
68
+ inputs: {
69
+ contents: createExtensionInput({
70
+ element: coreExtensionData.reactElement,
71
+ path: coreExtensionData.routePath,
72
+ routeRef: coreExtensionData.routeRef.optional(),
73
+ title: entityContentTitleExtensionDataRef
74
+ })
75
+ },
76
+ loader: async ({ inputs }) => {
77
+ const { EntityLayout } = await import('./esm/index-437026aa.esm.js');
78
+ const Component = () => {
79
+ return /* @__PURE__ */ React.createElement(AsyncEntityProvider, { ...useEntityFromUrl() }, /* @__PURE__ */ React.createElement(EntityLayout, null, inputs.contents.map((content) => /* @__PURE__ */ React.createElement(
80
+ EntityLayout.Route,
81
+ {
82
+ key: content.path,
83
+ path: content.path,
84
+ title: content.title
85
+ },
86
+ content.element
87
+ ))));
88
+ };
89
+ return /* @__PURE__ */ React.createElement(Component, null);
90
+ }
91
+ });
92
+ var pages = [CatalogIndexPage, CatalogEntityPage];
93
+
94
+ function createCatalogFilterExtension(options) {
95
+ var _a;
96
+ const id = `catalog.filter.${options.id}`;
97
+ return createExtension({
98
+ id,
99
+ attachTo: { id: "plugin.catalog.page.index", input: "filters" },
100
+ inputs: (_a = options.inputs) != null ? _a : {},
101
+ configSchema: options.configSchema,
102
+ output: {
103
+ element: coreExtensionData.reactElement
104
+ },
105
+ factory({ bind, config, source }) {
106
+ const ExtensionComponent = lazy(
107
+ () => options.loader({ config }).then((element) => ({ default: () => element }))
108
+ );
109
+ bind({
110
+ element: /* @__PURE__ */ React.createElement(ExtensionBoundary, { id, source }, /* @__PURE__ */ React.createElement(ExtensionComponent, null))
111
+ });
112
+ }
113
+ });
114
+ }
115
+
116
+ const CatalogEntityTagFilter = createCatalogFilterExtension({
117
+ id: "entity.tag",
118
+ loader: async () => {
119
+ const { EntityTagPicker } = await import('@backstage/plugin-catalog-react');
120
+ return /* @__PURE__ */ React.createElement(EntityTagPicker, null);
121
+ }
122
+ });
123
+ const CatalogEntityKindFilter = createCatalogFilterExtension({
124
+ id: "entity.kind",
125
+ configSchema: createSchemaFromZod(
126
+ (z) => z.object({
127
+ initialFilter: z.string().default("component")
128
+ })
129
+ ),
130
+ loader: async ({ config }) => {
131
+ const { EntityKindPicker } = await import('@backstage/plugin-catalog-react');
132
+ return /* @__PURE__ */ React.createElement(EntityKindPicker, { initialFilter: config.initialFilter });
133
+ }
134
+ });
135
+ const CatalogEntityTypeFilter = createCatalogFilterExtension({
136
+ id: "entity.type",
137
+ loader: async () => {
138
+ const { EntityTypePicker } = await import('@backstage/plugin-catalog-react');
139
+ return /* @__PURE__ */ React.createElement(EntityTypePicker, null);
140
+ }
141
+ });
142
+ const CatalogEntityOwnerFilter = createCatalogFilterExtension({
143
+ id: "entity.mode",
144
+ configSchema: createSchemaFromZod(
145
+ (z) => z.object({
146
+ mode: z.enum(["owners-only", "all"]).optional()
147
+ })
148
+ ),
149
+ loader: async ({ config }) => {
150
+ const { EntityOwnerPicker } = await import('@backstage/plugin-catalog-react');
151
+ return /* @__PURE__ */ React.createElement(EntityOwnerPicker, { mode: config.mode });
152
+ }
153
+ });
154
+ const CatalogEntityNamespaceFilter = createCatalogFilterExtension({
155
+ id: "entity.namespace",
156
+ loader: async () => {
157
+ const { EntityNamespacePicker } = await import('@backstage/plugin-catalog-react');
158
+ return /* @__PURE__ */ React.createElement(EntityNamespacePicker, null);
159
+ }
160
+ });
161
+ const CatalogEntityLifecycleFilter = createCatalogFilterExtension({
162
+ id: "entity.lifecycle",
163
+ loader: async () => {
164
+ const { EntityLifecyclePicker } = await import('@backstage/plugin-catalog-react');
165
+ return /* @__PURE__ */ React.createElement(EntityLifecyclePicker, null);
166
+ }
167
+ });
168
+ const CatalogEntityProcessingStatusFilter = createCatalogFilterExtension({
169
+ id: "entity.processing.status",
170
+ loader: async () => {
171
+ const { EntityProcessingStatusPicker } = await import('@backstage/plugin-catalog-react');
172
+ return /* @__PURE__ */ React.createElement(EntityProcessingStatusPicker, null);
173
+ }
174
+ });
175
+ const CatalogUserListFilter = createCatalogFilterExtension({
176
+ id: "user.list",
177
+ configSchema: createSchemaFromZod(
178
+ (z) => z.object({
179
+ initialFilter: z.enum(["owned", "starred", "all"]).default("owned")
180
+ })
181
+ ),
182
+ loader: async ({ config }) => {
183
+ const { UserListPicker } = await import('@backstage/plugin-catalog-react');
184
+ return /* @__PURE__ */ React.createElement(UserListPicker, { initialFilter: config.initialFilter });
185
+ }
186
+ });
187
+ var filters = [
188
+ CatalogEntityTagFilter,
189
+ CatalogEntityKindFilter,
190
+ CatalogEntityTypeFilter,
191
+ CatalogEntityOwnerFilter,
192
+ CatalogEntityNamespaceFilter,
193
+ CatalogEntityLifecycleFilter,
194
+ CatalogEntityProcessingStatusFilter,
195
+ CatalogUserListFilter
196
+ ];
197
+
198
+ const CatalogIndexNavItem = createNavItemExtension({
199
+ id: "catalog.nav.index",
200
+ routeRef: convertLegacyRouteRef(rootRouteRef),
201
+ title: "Catalog",
202
+ icon: HomeIcon
203
+ });
204
+ var navItems = [CatalogIndexNavItem];
205
+
206
+ const EntityAboutCard = createEntityCardExtension({
207
+ id: "about",
208
+ loader: async () => import('./esm/index-b005db1b.esm.js').then((m) => /* @__PURE__ */ React.createElement(m.AboutCard, { variant: "gridItem" }))
209
+ });
210
+ const EntityLinksCard = createEntityCardExtension({
211
+ id: "links",
212
+ filter: ({ entity }) => Boolean(entity.metadata.links),
213
+ loader: async () => import('./esm/index-a2f43c63.esm.js').then((m) => {
214
+ return /* @__PURE__ */ React.createElement(m.EntityLinksCard, { variant: "gridItem" });
215
+ })
216
+ });
217
+ const EntityLabelsCard = createEntityCardExtension({
218
+ id: "labels",
219
+ filter: ({ entity }) => Boolean(entity.metadata.labels),
220
+ loader: async () => import('./esm/index-1819df86.esm.js').then((m) => /* @__PURE__ */ React.createElement(m.EntityLabelsCard, { variant: "gridItem" }))
221
+ });
222
+ const EntityDependsOnComponentsCard = createEntityCardExtension({
223
+ id: "dependsOn.components",
224
+ loader: async () => import('./esm/index-5d579387.esm.js').then((m) => /* @__PURE__ */ React.createElement(m.DependsOnComponentsCard, { variant: "gridItem" }))
225
+ });
226
+ const EntityDependsOnResourcesCard = createEntityCardExtension({
227
+ id: "dependsOn.resources",
228
+ loader: async () => import('./esm/index-2ae6a112.esm.js').then((m) => /* @__PURE__ */ React.createElement(m.DependsOnResourcesCard, { variant: "gridItem" }))
229
+ });
230
+ const EntityHasComponentsCard = createEntityCardExtension({
231
+ id: "has.components",
232
+ loader: async () => import('./esm/index-151a7b53.esm.js').then((m) => /* @__PURE__ */ React.createElement(m.HasComponentsCard, { variant: "gridItem" }))
233
+ });
234
+ const EntityHasResourcesCard = createEntityCardExtension({
235
+ id: "has.resources",
236
+ loader: async () => import('./esm/index-457f1bef.esm.js').then((m) => /* @__PURE__ */ React.createElement(m.HasResourcesCard, { variant: "gridItem" }))
237
+ });
238
+ const EntityHasSubcomponentsCard = createEntityCardExtension({
239
+ id: "has.subcomponents",
240
+ loader: async () => import('./esm/index-df2397a2.esm.js').then((m) => /* @__PURE__ */ React.createElement(m.HasSubcomponentsCard, { variant: "gridItem" }))
241
+ });
242
+ const EntityHasSystemsCard = createEntityCardExtension({
243
+ id: "has.systems",
244
+ loader: async () => import('./esm/index-b87e664e.esm.js').then((m) => /* @__PURE__ */ React.createElement(m.HasSystemsCard, { variant: "gridItem" }))
245
+ });
246
+ var entityCards = [
247
+ EntityAboutCard,
248
+ EntityLinksCard,
249
+ EntityLabelsCard,
250
+ EntityDependsOnComponentsCard,
251
+ EntityDependsOnResourcesCard,
252
+ EntityHasComponentsCard,
253
+ EntityHasResourcesCard,
254
+ EntityHasSubcomponentsCard,
255
+ EntityHasSystemsCard
256
+ ];
257
+
258
+ const OverviewEntityContent = createEntityContentExtension({
259
+ id: "overview",
260
+ defaultPath: "/",
261
+ defaultTitle: "Overview",
262
+ disabled: false,
263
+ inputs: {
264
+ cards: createExtensionInput({
265
+ element: coreExtensionData.reactElement,
266
+ filter: entityFilterExtensionDataRef
267
+ })
268
+ },
269
+ loader: async ({ inputs }) => import('./esm/EntityOverviewPage-c6894e3c.esm.js').then((m) => /* @__PURE__ */ React.createElement(m.EntityOverviewPage, { cards: inputs.cards }))
270
+ });
271
+ var entityContents = [OverviewEntityContent];
272
+
28
273
  const CatalogSearchResultListItemExtension = createSearchResultListItemExtension({
29
274
  id: "catalog",
30
275
  predicate: (result) => result.type === "software-catalog",
@@ -32,14 +277,29 @@ const CatalogSearchResultListItemExtension = createSearchResultListItemExtension
32
277
  (m) => m.CatalogSearchResultListItem
33
278
  )
34
279
  });
35
- var alpha = createPlugin({
280
+ var searchResultItems = [CatalogSearchResultListItemExtension];
281
+
282
+ var plugin = createPlugin({
36
283
  id: "catalog",
284
+ routes: {
285
+ catalogIndex: convertLegacyRouteRef(rootRouteRef),
286
+ catalogEntity: convertLegacyRouteRef(entityRouteRef)
287
+ },
288
+ externalRoutes: {
289
+ viewTechDoc: convertLegacyRouteRef(viewTechDocRouteRef),
290
+ createComponent: convertLegacyRouteRef(createComponentRouteRef),
291
+ createFromTemplate: convertLegacyRouteRef(createFromTemplateRouteRef)
292
+ },
37
293
  extensions: [
38
- CatalogApi,
39
- StarredEntitiesApi,
40
- CatalogSearchResultListItemExtension
294
+ ...apis,
295
+ ...pages,
296
+ ...filters,
297
+ ...navItems,
298
+ ...entityCards,
299
+ ...entityContents,
300
+ ...searchResultItems
41
301
  ]
42
302
  });
43
303
 
44
- export { CatalogApi, CatalogSearchResultListItemExtension, StarredEntitiesApi, alpha as default };
304
+ export { createCatalogFilterExtension, plugin as default };
45
305
  //# sourceMappingURL=alpha.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"alpha.esm.js","sources":["../src/alpha.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 createApiFactory,\n discoveryApiRef,\n fetchApiRef,\n storageApiRef,\n} from '@backstage/core-plugin-api';\nimport { CatalogClient } from '@backstage/catalog-client';\nimport {\n createApiExtension,\n createPlugin,\n} from '@backstage/frontend-plugin-api';\nimport {\n catalogApiRef,\n starredEntitiesApiRef,\n} from '@backstage/plugin-catalog-react';\nimport { createSearchResultListItemExtension } from '@backstage/plugin-search-react/alpha';\nimport { DefaultStarredEntitiesApi } from './apis';\n\n/** @alpha */\nexport const CatalogApi = createApiExtension({\n factory: createApiFactory({\n api: catalogApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ discoveryApi, fetchApi }) =>\n new CatalogClient({ discoveryApi, fetchApi }),\n }),\n});\n\n/** @alpha */\nexport const StarredEntitiesApi = createApiExtension({\n factory: createApiFactory({\n api: starredEntitiesApiRef,\n deps: { storageApi: storageApiRef },\n factory: ({ storageApi }) => new DefaultStarredEntitiesApi({ storageApi }),\n }),\n});\n\n/** @alpha */\nexport const CatalogSearchResultListItemExtension =\n createSearchResultListItemExtension({\n id: 'catalog',\n predicate: result => result.type === 'software-catalog',\n component: () =>\n import('./components/CatalogSearchResultListItem').then(\n m => m.CatalogSearchResultListItem,\n ),\n });\n\n/** @alpha */\nexport default createPlugin({\n id: 'catalog',\n extensions: [\n CatalogApi,\n StarredEntitiesApi,\n CatalogSearchResultListItemExtension,\n ],\n});\n"],"names":[],"mappings":";;;;;;;;;;AAmCO,MAAM,aAAa,kBAAmB,CAAA;AAAA,EAC3C,SAAS,gBAAiB,CAAA;AAAA,IACxB,GAAK,EAAA,aAAA;AAAA,IACL,IAAM,EAAA;AAAA,MACJ,YAAc,EAAA,eAAA;AAAA,MACd,QAAU,EAAA,WAAA;AAAA,KACZ;AAAA,IACA,OAAA,EAAS,CAAC,EAAE,YAAc,EAAA,QAAA,EACxB,KAAA,IAAI,aAAc,CAAA,EAAE,YAAc,EAAA,QAAA,EAAU,CAAA;AAAA,GAC/C,CAAA;AACH,CAAC,EAAA;AAGM,MAAM,qBAAqB,kBAAmB,CAAA;AAAA,EACnD,SAAS,gBAAiB,CAAA;AAAA,IACxB,GAAK,EAAA,qBAAA;AAAA,IACL,IAAA,EAAM,EAAE,UAAA,EAAY,aAAc,EAAA;AAAA,IAClC,OAAA,EAAS,CAAC,EAAE,UAAA,OAAiB,IAAI,yBAAA,CAA0B,EAAE,UAAA,EAAY,CAAA;AAAA,GAC1E,CAAA;AACH,CAAC,EAAA;AAGM,MAAM,uCACX,mCAAoC,CAAA;AAAA,EAClC,EAAI,EAAA,SAAA;AAAA,EACJ,SAAA,EAAW,CAAU,MAAA,KAAA,MAAA,CAAO,IAAS,KAAA,kBAAA;AAAA,EACrC,SAAW,EAAA,MACT,OAAO,6BAA0C,CAAE,CAAA,IAAA;AAAA,IACjD,OAAK,CAAE,CAAA,2BAAA;AAAA,GACT;AACJ,CAAC,EAAA;AAGH,YAAe,YAAa,CAAA;AAAA,EAC1B,EAAI,EAAA,SAAA;AAAA,EACJ,UAAY,EAAA;AAAA,IACV,UAAA;AAAA,IACA,kBAAA;AAAA,IACA,oCAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}
1
+ {"version":3,"file":"alpha.esm.js","sources":["../src/alpha/apis.tsx","../src/alpha/pages.tsx","../src/alpha/createCatalogFilterExtension.tsx","../src/alpha/filters.tsx","../src/alpha/navItems.tsx","../src/alpha/entityCards.tsx","../src/alpha/entityContents.tsx","../src/alpha/searchResultItems.tsx","../src/alpha/plugin.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 createApiFactory,\n discoveryApiRef,\n fetchApiRef,\n storageApiRef,\n} from '@backstage/core-plugin-api';\nimport { CatalogClient } from '@backstage/catalog-client';\nimport { createApiExtension } from '@backstage/frontend-plugin-api';\nimport {\n catalogApiRef,\n starredEntitiesApiRef,\n} from '@backstage/plugin-catalog-react';\nimport { DefaultStarredEntitiesApi } from '../apis';\n\nexport const CatalogApi = createApiExtension({\n factory: createApiFactory({\n api: catalogApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ discoveryApi, fetchApi }) =>\n new CatalogClient({ discoveryApi, fetchApi }),\n }),\n});\n\nexport const StarredEntitiesApi = createApiExtension({\n factory: createApiFactory({\n api: starredEntitiesApiRef,\n deps: { storageApi: storageApiRef },\n factory: ({ storageApi }) => new DefaultStarredEntitiesApi({ storageApi }),\n }),\n});\n\nexport default [CatalogApi, StarredEntitiesApi];\n","/*\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 React from 'react';\nimport { convertLegacyRouteRef } from '@backstage/core-plugin-api/alpha';\nimport {\n createPageExtension,\n coreExtensionData,\n createExtensionInput,\n} from '@backstage/frontend-plugin-api';\nimport {\n AsyncEntityProvider,\n entityRouteRef,\n} from '@backstage/plugin-catalog-react';\nimport { entityContentTitleExtensionDataRef } from '@backstage/plugin-catalog-react/alpha';\nimport { rootRouteRef } from '../routes';\nimport { useEntityFromUrl } from '../components/CatalogEntityPage/useEntityFromUrl';\n\nexport const CatalogIndexPage = createPageExtension({\n id: 'plugin.catalog.page.index',\n defaultPath: '/catalog',\n routeRef: convertLegacyRouteRef(rootRouteRef),\n inputs: {\n filters: createExtensionInput({\n element: coreExtensionData.reactElement,\n }),\n },\n loader: async ({ inputs }) => {\n const { BaseCatalogPage } = await import('../components/CatalogPage');\n const filters = inputs.filters.map(filter => filter.element);\n return <BaseCatalogPage filters={<>{filters}</>} />;\n },\n});\n\nexport const CatalogEntityPage = createPageExtension({\n id: 'plugin.catalog.page.entity',\n defaultPath: '/catalog/:namespace/:kind/:name',\n routeRef: convertLegacyRouteRef(entityRouteRef),\n inputs: {\n contents: createExtensionInput({\n element: coreExtensionData.reactElement,\n path: coreExtensionData.routePath,\n routeRef: coreExtensionData.routeRef.optional(),\n title: entityContentTitleExtensionDataRef,\n }),\n },\n loader: async ({ inputs }) => {\n const { EntityLayout } = await import('../components/EntityLayout');\n const Component = () => {\n return (\n <AsyncEntityProvider {...useEntityFromUrl()}>\n <EntityLayout>\n {inputs.contents.map(content => (\n <EntityLayout.Route\n key={content.path}\n path={content.path}\n title={content.title}\n >\n {content.element}\n </EntityLayout.Route>\n ))}\n </EntityLayout>\n </AsyncEntityProvider>\n );\n };\n return <Component />;\n },\n});\n\nexport default [CatalogIndexPage, CatalogEntityPage];\n","/*\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 React, { lazy } from 'react';\nimport {\n AnyExtensionInputMap,\n ExtensionBoundary,\n PortableSchema,\n coreExtensionData,\n createExtension,\n} from '@backstage/frontend-plugin-api';\n\n/** @alpha */\nexport function createCatalogFilterExtension<\n TInputs extends AnyExtensionInputMap,\n TConfig = never,\n>(options: {\n id: string;\n inputs?: TInputs;\n configSchema?: PortableSchema<TConfig>;\n loader: (options: { config: TConfig }) => Promise<JSX.Element>;\n}) {\n const id = `catalog.filter.${options.id}`;\n\n return createExtension({\n id,\n attachTo: { id: 'plugin.catalog.page.index', input: 'filters' },\n inputs: options.inputs ?? {},\n configSchema: options.configSchema,\n output: {\n element: coreExtensionData.reactElement,\n },\n factory({ bind, config, source }) {\n const ExtensionComponent = lazy(() =>\n options\n .loader({ config })\n .then(element => ({ default: () => element })),\n );\n\n bind({\n element: (\n <ExtensionBoundary id={id} source={source}>\n <ExtensionComponent />\n </ExtensionBoundary>\n ),\n });\n },\n });\n}\n","/*\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 React from 'react';\nimport { createCatalogFilterExtension } from './createCatalogFilterExtension';\nimport { createSchemaFromZod } from '@backstage/frontend-plugin-api';\n\nconst CatalogEntityTagFilter = createCatalogFilterExtension({\n id: 'entity.tag',\n loader: async () => {\n const { EntityTagPicker } = await import('@backstage/plugin-catalog-react');\n return <EntityTagPicker />;\n },\n});\n\nconst CatalogEntityKindFilter = createCatalogFilterExtension({\n id: 'entity.kind',\n configSchema: createSchemaFromZod(z =>\n z.object({\n initialFilter: z.string().default('component'),\n }),\n ),\n loader: async ({ config }) => {\n const { EntityKindPicker } = await import(\n '@backstage/plugin-catalog-react'\n );\n return <EntityKindPicker initialFilter={config.initialFilter} />;\n },\n});\n\nconst CatalogEntityTypeFilter = createCatalogFilterExtension({\n id: 'entity.type',\n loader: async () => {\n const { EntityTypePicker } = await import(\n '@backstage/plugin-catalog-react'\n );\n return <EntityTypePicker />;\n },\n});\n\nconst CatalogEntityOwnerFilter = createCatalogFilterExtension({\n id: 'entity.mode',\n configSchema: createSchemaFromZod(z =>\n z.object({\n mode: z.enum(['owners-only', 'all']).optional(),\n }),\n ),\n loader: async ({ config }) => {\n const { EntityOwnerPicker } = await import(\n '@backstage/plugin-catalog-react'\n );\n return <EntityOwnerPicker mode={config.mode} />;\n },\n});\n\nconst CatalogEntityNamespaceFilter = createCatalogFilterExtension({\n id: 'entity.namespace',\n loader: async () => {\n const { EntityNamespacePicker } = await import(\n '@backstage/plugin-catalog-react'\n );\n return <EntityNamespacePicker />;\n },\n});\n\nconst CatalogEntityLifecycleFilter = createCatalogFilterExtension({\n id: 'entity.lifecycle',\n loader: async () => {\n const { EntityLifecyclePicker } = await import(\n '@backstage/plugin-catalog-react'\n );\n return <EntityLifecyclePicker />;\n },\n});\n\nconst CatalogEntityProcessingStatusFilter = createCatalogFilterExtension({\n id: 'entity.processing.status',\n loader: async () => {\n const { EntityProcessingStatusPicker } = await import(\n '@backstage/plugin-catalog-react'\n );\n return <EntityProcessingStatusPicker />;\n },\n});\n\nconst CatalogUserListFilter = createCatalogFilterExtension({\n id: 'user.list',\n configSchema: createSchemaFromZod(z =>\n z.object({\n initialFilter: z.enum(['owned', 'starred', 'all']).default('owned'),\n }),\n ),\n loader: async ({ config }) => {\n const { UserListPicker } = await import('@backstage/plugin-catalog-react');\n return <UserListPicker initialFilter={config.initialFilter} />;\n },\n});\n\nexport default [\n CatalogEntityTagFilter,\n CatalogEntityKindFilter,\n CatalogEntityTypeFilter,\n CatalogEntityOwnerFilter,\n CatalogEntityNamespaceFilter,\n CatalogEntityLifecycleFilter,\n CatalogEntityProcessingStatusFilter,\n CatalogUserListFilter,\n];\n","/*\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 HomeIcon from '@material-ui/icons/Home';\nimport { convertLegacyRouteRef } from '@backstage/core-plugin-api/alpha';\nimport { createNavItemExtension } from '@backstage/frontend-plugin-api';\nimport { rootRouteRef } from '../routes';\n\nexport const CatalogIndexNavItem = createNavItemExtension({\n id: 'catalog.nav.index',\n routeRef: convertLegacyRouteRef(rootRouteRef),\n title: 'Catalog',\n icon: HomeIcon,\n});\n\nexport default [CatalogIndexNavItem];\n","/*\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 React from 'react';\nimport { createEntityCardExtension } from '@backstage/plugin-catalog-react/alpha';\n\nexport const EntityAboutCard = createEntityCardExtension({\n id: 'about',\n loader: async () =>\n import('../components/AboutCard').then(m => (\n <m.AboutCard variant=\"gridItem\" />\n )),\n});\n\nexport const EntityLinksCard = createEntityCardExtension({\n id: 'links',\n filter: ({ entity }) => Boolean(entity.metadata.links),\n loader: async () =>\n import('../components/EntityLinksCard').then(m => {\n return <m.EntityLinksCard variant=\"gridItem\" />;\n }),\n});\n\nexport const EntityLabelsCard = createEntityCardExtension({\n id: 'labels',\n filter: ({ entity }) => Boolean(entity.metadata.labels),\n loader: async () =>\n import('../components/EntityLabelsCard').then(m => (\n <m.EntityLabelsCard variant=\"gridItem\" />\n )),\n});\n\nexport const EntityDependsOnComponentsCard = createEntityCardExtension({\n id: 'dependsOn.components',\n loader: async () =>\n import('../components/DependsOnComponentsCard').then(m => (\n <m.DependsOnComponentsCard variant=\"gridItem\" />\n )),\n});\n\nexport const EntityDependsOnResourcesCard = createEntityCardExtension({\n id: 'dependsOn.resources',\n loader: async () =>\n import('../components/DependsOnResourcesCard').then(m => (\n <m.DependsOnResourcesCard variant=\"gridItem\" />\n )),\n});\n\nexport const EntityHasComponentsCard = createEntityCardExtension({\n id: 'has.components',\n loader: async () =>\n import('../components/HasComponentsCard').then(m => (\n <m.HasComponentsCard variant=\"gridItem\" />\n )),\n});\n\nexport const EntityHasResourcesCard = createEntityCardExtension({\n id: 'has.resources',\n loader: async () =>\n import('../components/HasResourcesCard').then(m => (\n <m.HasResourcesCard variant=\"gridItem\" />\n )),\n});\n\nexport const EntityHasSubcomponentsCard = createEntityCardExtension({\n id: 'has.subcomponents',\n loader: async () =>\n import('../components/HasSubcomponentsCard').then(m => (\n <m.HasSubcomponentsCard variant=\"gridItem\" />\n )),\n});\n\nexport const EntityHasSystemsCard = createEntityCardExtension({\n id: 'has.systems',\n loader: async () =>\n import('../components/HasSystemsCard').then(m => (\n <m.HasSystemsCard variant=\"gridItem\" />\n )),\n});\n\nexport default [\n EntityAboutCard,\n EntityLinksCard,\n EntityLabelsCard,\n EntityDependsOnComponentsCard,\n EntityDependsOnResourcesCard,\n EntityHasComponentsCard,\n EntityHasResourcesCard,\n EntityHasSubcomponentsCard,\n EntityHasSystemsCard,\n];\n","/*\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 React from 'react';\nimport {\n coreExtensionData,\n createExtensionInput,\n} from '@backstage/frontend-plugin-api';\nimport {\n createEntityContentExtension,\n entityFilterExtensionDataRef,\n} from '@backstage/plugin-catalog-react/alpha';\n\nexport const OverviewEntityContent = createEntityContentExtension({\n id: 'overview',\n defaultPath: '/',\n defaultTitle: 'Overview',\n disabled: false,\n inputs: {\n cards: createExtensionInput({\n element: coreExtensionData.reactElement,\n filter: entityFilterExtensionDataRef,\n }),\n },\n loader: async ({ inputs }) =>\n import('./EntityOverviewPage').then(m => (\n <m.EntityOverviewPage cards={inputs.cards} />\n )),\n});\n\nexport default [OverviewEntityContent];\n","/*\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 { createSearchResultListItemExtension } from '@backstage/plugin-search-react/alpha';\n\nexport const CatalogSearchResultListItemExtension =\n createSearchResultListItemExtension({\n id: 'catalog',\n predicate: result => result.type === 'software-catalog',\n component: () =>\n import('../components/CatalogSearchResultListItem').then(\n m => m.CatalogSearchResultListItem,\n ),\n });\n\nexport default [CatalogSearchResultListItemExtension];\n","/*\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 { convertLegacyRouteRef } from '@backstage/core-plugin-api/alpha';\nimport { createPlugin } from '@backstage/frontend-plugin-api';\n\nimport { entityRouteRef } from '@backstage/plugin-catalog-react';\n\nimport {\n createComponentRouteRef,\n createFromTemplateRouteRef,\n rootRouteRef,\n viewTechDocRouteRef,\n} from '../routes';\n\nimport apis from './apis';\nimport pages from './pages';\nimport filters from './filters';\nimport navItems from './navItems';\nimport entityCards from './entityCards';\nimport entityContents from './entityContents';\nimport searchResultItems from './searchResultItems';\n\n/** @alpha */\nexport default createPlugin({\n id: 'catalog',\n routes: {\n catalogIndex: convertLegacyRouteRef(rootRouteRef),\n catalogEntity: convertLegacyRouteRef(entityRouteRef),\n },\n externalRoutes: {\n viewTechDoc: convertLegacyRouteRef(viewTechDocRouteRef),\n createComponent: convertLegacyRouteRef(createComponentRouteRef),\n createFromTemplate: convertLegacyRouteRef(createFromTemplateRouteRef),\n },\n extensions: [\n ...apis,\n ...pages,\n ...filters,\n ...navItems,\n ...entityCards,\n ...entityContents,\n ...searchResultItems,\n ],\n});\n"],"names":[],"mappings":"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"}