@backstage/plugin-catalog 0.8.0 → 0.10.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 (38) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/dist/esm/{index-5c367aca.esm.js → index-142ea58f.esm.js} +8 -5
  3. package/dist/esm/{index-5c367aca.esm.js.map → index-142ea58f.esm.js.map} +1 -1
  4. package/dist/esm/{index-36e4660a.esm.js → index-19e9c476.esm.js} +8 -5
  5. package/dist/esm/index-19e9c476.esm.js.map +1 -0
  6. package/dist/esm/{index-de01f9dd.esm.js → index-24c3e4e1.esm.js} +138 -50
  7. package/dist/esm/index-24c3e4e1.esm.js.map +1 -0
  8. package/dist/esm/{index-bb5ef8ab.esm.js → index-3763491b.esm.js} +2 -2
  9. package/dist/esm/{index-bb5ef8ab.esm.js.map → index-3763491b.esm.js.map} +1 -1
  10. package/dist/esm/{index-2a9d68c3.esm.js → index-390fab14.esm.js} +2 -2
  11. package/dist/esm/{index-2a9d68c3.esm.js.map → index-390fab14.esm.js.map} +1 -1
  12. package/dist/esm/{index-69fcf315.esm.js → index-41ab53b6.esm.js} +2 -2
  13. package/dist/esm/{index-69fcf315.esm.js.map → index-41ab53b6.esm.js.map} +1 -1
  14. package/dist/esm/index-4e6adb42.esm.js +34 -0
  15. package/dist/esm/index-4e6adb42.esm.js.map +1 -0
  16. package/dist/esm/{index-be138931.esm.js → index-66fdb6ad.esm.js} +2 -2
  17. package/dist/esm/{index-be138931.esm.js.map → index-66fdb6ad.esm.js.map} +1 -1
  18. package/dist/esm/{index-52271589.esm.js → index-896aeac9.esm.js} +1 -1
  19. package/dist/esm/{index-52271589.esm.js.map → index-896aeac9.esm.js.map} +1 -1
  20. package/dist/esm/{index-14286170.esm.js → index-acb3cf04.esm.js} +2 -2
  21. package/dist/esm/{index-14286170.esm.js.map → index-acb3cf04.esm.js.map} +1 -1
  22. package/dist/esm/{index-df3c8250.esm.js → index-b3ad464b.esm.js} +2 -2
  23. package/dist/esm/{index-df3c8250.esm.js.map → index-b3ad464b.esm.js.map} +1 -1
  24. package/dist/esm/{index-172990ed.esm.js → index-c2914273.esm.js} +2 -2
  25. package/dist/esm/index-c2914273.esm.js.map +1 -0
  26. package/dist/esm/{index-583e6f94.esm.js → index-d41abbff.esm.js} +2 -2
  27. package/dist/esm/{index-583e6f94.esm.js.map → index-d41abbff.esm.js.map} +1 -1
  28. package/dist/esm/{presets-8488ee8e.esm.js → presets-13b889b9.esm.js} +1 -1
  29. package/dist/esm/{presets-8488ee8e.esm.js.map → presets-13b889b9.esm.js.map} +1 -1
  30. package/dist/index.d.ts +40 -38
  31. package/dist/index.esm.js +7 -4
  32. package/dist/index.esm.js.map +1 -1
  33. package/package.json +19 -17
  34. package/dist/esm/index-172990ed.esm.js.map +0 -1
  35. package/dist/esm/index-3467aa13.esm.js +0 -12
  36. package/dist/esm/index-3467aa13.esm.js.map +0 -1
  37. package/dist/esm/index-36e4660a.esm.js.map +0 -1
  38. package/dist/esm/index-de01f9dd.esm.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,78 @@
1
1
  # @backstage/plugin-catalog
2
2
 
3
+ ## 0.10.0-next.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 51856359bf: **BREAKING**: Removed the `AboutCard` component which has been replaced by `EntityAboutCard`.
8
+ - 5ea9509e6a: **BREAKING**: Removed `CatalogResultListItemProps` and `CatalogResultListItem`, replaced by `CatalogSearchResultListItemProps` and `CatalogSearchResultListItem`.
9
+
10
+ ### Patch Changes
11
+
12
+ - 251688a75e: Updated `CatalogKindHeader` to respond to external changes to query parameters in the URL, such as two sidebar links that apply different catalog filters.
13
+ - 9844d4d2bd: Removed usage of removed hook.
14
+ - 3e54f6c436: Use `@backstage/plugin-search-common` package instead of `@backstage/search-common`.
15
+ - Updated dependencies
16
+ - @backstage/plugin-catalog-react@0.9.0-next.0
17
+ - @backstage/core-components@0.9.1-next.0
18
+ - @backstage/catalog-model@0.13.0-next.0
19
+ - @backstage/plugin-catalog-common@0.2.2-next.0
20
+ - @backstage/plugin-search-common@0.3.1-next.0
21
+ - @backstage/catalog-client@0.9.0-next.0
22
+ - @backstage/integration-react@0.1.25-next.0
23
+
24
+ ## 0.9.1
25
+
26
+ ### Patch Changes
27
+
28
+ - 899f196af5: Use `getEntityByRef` instead of `getEntityByName` in the catalog client
29
+ - f41a293231: - **DEPRECATION**: Deprecated `formatEntityRefTitle` in favor of the new `humanizeEntityRef` method instead. Please migrate to using the new method instead.
30
+ - f590d1681b: Removed usage of deprecated favorite utility methods.
31
+ - 44403296e7: Added the following deprecations to the `catalog-react` package:
32
+
33
+ - **DEPRECATION**: `useEntity` will now warn if the entity has not yet been loaded, and will soon throw errors instead. If you're using the default implementation of `EntityLayout` and `EntitySwitch` then these components will ensure that there is an entity loaded before rendering children. If you're implementing your own `EntityLayout` or `EntitySwitch` or something that operates outside or adjacent to them, then use `useAsyncEntity`.
34
+
35
+ - **DEPRECATION**: the `loading`, `error` and `refresh` properties that are returned from `useEntity` have been deprecated, and are available on `useAsyncEntity` instead.
36
+
37
+ - da79aac2a6: - Replaced usage of the deprecated and now removed `rootRoute` and `catalogRouteRef`s from the `catalog-react` package
38
+ - 36aa63022b: Use `CompoundEntityRef` instead of `EntityName`, and `getCompoundEntityRef` instead of `getEntityName`, from `@backstage/catalog-model`.
39
+ - 8f0e8e039b: Removed usage of deprecated `getEntityMetadataViewUrl` and `getEntityMetadataEditUrl` helpers.
40
+ - Updated dependencies
41
+ - @backstage/catalog-model@0.12.0
42
+ - @backstage/catalog-client@0.8.0
43
+ - @backstage/core-components@0.9.0
44
+ - @backstage/plugin-catalog-react@0.8.0
45
+ - @backstage/plugin-catalog-common@0.2.0
46
+ - @backstage/core-plugin-api@0.8.0
47
+ - @backstage/search-common@0.3.0
48
+ - @backstage/integration-react@0.1.24
49
+
50
+ ## 0.9.0
51
+
52
+ ### Minor Changes
53
+
54
+ - e7b9c3d713: Removed `columnFactories`, which was accidentally exported on the previous release.
55
+ - 2262fe19c9: **BREAKING**: Removed support for passing in an explicit `entity` prop to entity page extensions, which has been deprecated for a long time. This is only a breaking change at the TypeScript level, as this property was already ignored.
56
+ - 3c4376e5e7: **BREAKING**: Removed the old `plugin` export, use `catalogPlugin` instead.
57
+
58
+ ### Patch Changes
59
+
60
+ - 2d339b5f2c: Internalize deprecated `useEntityFromUrl` hook
61
+ - a686702dbe: Renamed `CatalogResultListItem` to `CatalogSearchResultListItem` along with its prop type, leaving the old names in place as a deprecations.
62
+ - 852d5ff758: Added `EntitySwitchProps` type for `EntitySwitch`.
63
+ - a8331830f1: Remove use of deprecated `useEntityKinds` hook.
64
+ - 6e1cbc12a6: Updated according to the new `getEntityFacets` catalog API method
65
+ - b776ce5aab: Replaced use of deprecated `useEntityListProvider` hook with `useEntityList`.
66
+ - 3334ad47d4: Removed usage of `EntityContext`.
67
+ - 919cf2f836: Minor updates to match the new `targetRef` field of relations, and to stop consuming the `target` field
68
+ - Updated dependencies
69
+ - @backstage/core-components@0.8.10
70
+ - @backstage/plugin-catalog-react@0.7.0
71
+ - @backstage/catalog-model@0.11.0
72
+ - @backstage/catalog-client@0.7.2
73
+ - @backstage/core-plugin-api@0.7.0
74
+ - @backstage/integration-react@0.1.23
75
+
3
76
  ## 0.8.0
4
77
 
5
78
  ### Minor Changes
@@ -3,24 +3,27 @@ import { useOutlet } from 'react-router';
3
3
  import { PageWithHeader, Content, ContentHeader, CreateButton, SupportButton } from '@backstage/core-components';
4
4
  import { useApi, configApiRef, useRouteRef } from '@backstage/core-plugin-api';
5
5
  import { EntityListProvider, EntityTypePicker, UserListPicker, EntityOwnerPicker, EntityLifecyclePicker, EntityTagPicker } from '@backstage/plugin-catalog-react';
6
- import { c as createComponentRouteRef, C as CatalogKindHeader, F as FilteredEntityLayout, a as FilterContainer, E as EntityListContainer, b as CatalogTable } from './index-de01f9dd.esm.js';
6
+ import { c as createComponentRouteRef, C as CatalogKindHeader, F as FilteredEntityLayout, a as FilterContainer, E as EntityListContainer, b as CatalogTable } from './index-24c3e4e1.esm.js';
7
+ import 'zen-observable';
7
8
  import '@backstage/catalog-model';
9
+ import 'lodash';
8
10
  import '@backstage/integration-react';
9
11
  import '@material-ui/core';
10
12
  import '@material-ui/icons/Cached';
11
13
  import '@material-ui/icons/Description';
12
14
  import '@material-ui/icons/Edit';
15
+ import 'react-use/lib/useAsync';
13
16
  import '@material-ui/icons/OpenInNew';
14
- import 'lodash';
15
- import '@material-ui/lab';
17
+ import '@material-ui/icons/StarBorder';
16
18
  import '@material-ui/core/styles';
19
+ import '@material-ui/icons/Star';
20
+ import '@material-ui/lab';
17
21
  import '@material-ui/icons/Cancel';
18
22
  import '@material-ui/icons/BugReport';
19
23
  import '@material-ui/icons/MoreVert';
20
24
  import '@backstage/plugin-catalog-common';
21
25
  import '@backstage/errors';
22
26
  import '@backstage/catalog-client';
23
- import 'react-use/lib/useAsync';
24
27
  import '@material-ui/icons/FilterList';
25
28
 
26
29
  function DefaultCatalogPage(props) {
@@ -52,4 +55,4 @@ function CatalogPage(props) {
52
55
  }
53
56
 
54
57
  export { CatalogPage, DefaultCatalogPage };
55
- //# sourceMappingURL=index-5c367aca.esm.js.map
58
+ //# sourceMappingURL=index-142ea58f.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-5c367aca.esm.js","sources":["../../src/components/CatalogPage/DefaultCatalogPage.tsx","../../src/components/CatalogPage/CatalogPage.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 Content,\n ContentHeader,\n CreateButton,\n PageWithHeader,\n SupportButton,\n TableColumn,\n TableProps,\n} from '@backstage/core-components';\nimport { configApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api';\nimport {\n EntityLifecyclePicker,\n EntityListProvider,\n EntityOwnerPicker,\n EntityTagPicker,\n EntityTypePicker,\n UserListFilterKind,\n UserListPicker,\n} from '@backstage/plugin-catalog-react';\nimport React from 'react';\nimport { createComponentRouteRef } from '../../routes';\nimport { CatalogTable, CatalogTableRow } from '../CatalogTable';\nimport {\n FilteredEntityLayout,\n EntityListContainer,\n FilterContainer,\n} from '../FilteredEntityLayout';\nimport { CatalogKindHeader } from '../CatalogKindHeader';\n\n/**\n * Props for root catalog pages.\n *\n * @public\n */\nexport interface DefaultCatalogPageProps {\n initiallySelectedFilter?: UserListFilterKind;\n columns?: TableColumn<CatalogTableRow>[];\n actions?: TableProps<CatalogTableRow>['actions'];\n}\n\nexport function DefaultCatalogPage(props: DefaultCatalogPageProps) {\n const { columns, actions, initiallySelectedFilter = 'owned' } = props;\n const orgName =\n useApi(configApiRef).getOptionalString('organization.name') ?? 'Backstage';\n const createComponentLink = useRouteRef(createComponentRouteRef);\n\n return (\n <PageWithHeader title={`${orgName} Catalog`} themeId=\"home\">\n <EntityListProvider>\n <Content>\n <ContentHeader titleComponent={<CatalogKindHeader />}>\n <CreateButton\n title=\"Create Component\"\n to={createComponentLink && createComponentLink()}\n />\n <SupportButton>All your software catalog entities</SupportButton>\n </ContentHeader>\n <FilteredEntityLayout>\n <FilterContainer>\n <EntityTypePicker />\n <UserListPicker initialFilter={initiallySelectedFilter} />\n <EntityOwnerPicker />\n <EntityLifecyclePicker />\n <EntityTagPicker />\n </FilterContainer>\n <EntityListContainer>\n <CatalogTable columns={columns} actions={actions} />\n </EntityListContainer>\n </FilteredEntityLayout>\n </Content>\n </EntityListProvider>\n </PageWithHeader>\n );\n}\n","/*\n * Copyright 2021 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 { useOutlet } from 'react-router';\nimport {\n DefaultCatalogPage,\n DefaultCatalogPageProps,\n} from './DefaultCatalogPage';\n\nexport function CatalogPage(props: DefaultCatalogPageProps) {\n const outlet = useOutlet();\n\n return outlet || <DefaultCatalogPage {...props} />;\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;4BAwDmC,OAAgC;AAxDnE;AAyDE,QAAM,EAAE,SAAS,SAAS,0BAA0B,YAAY;AAChE,QAAM,UACJ,aAAO,cAAc,kBAAkB,yBAAvC,YAA+D;AACjE,QAAM,sBAAsB,YAAY;AAExC,6CACG,gBAAD;AAAA,IAAgB,OAAO,GAAG;AAAA,IAAmB,SAAQ;AAAA,yCAClD,oBAAD,0CACG,SAAD,0CACG,eAAD;AAAA,IAAe,oDAAiB,mBAAD;AAAA,yCAC5B,cAAD;AAAA,IACE,OAAM;AAAA,IACN,IAAI,uBAAuB;AAAA,0CAE5B,eAAD,MAAe,4EAEhB,sBAAD,0CACG,iBAAD,0CACG,kBAAD,2CACC,gBAAD;AAAA,IAAgB,eAAe;AAAA,0CAC9B,mBAAD,2CACC,uBAAD,2CACC,iBAAD,4CAED,qBAAD,0CACG,cAAD;AAAA,IAAc;AAAA,IAAkB;AAAA;AAAA;;qBC3DlB,OAAgC;AAC1D,QAAM,SAAS;AAEf,SAAO,8CAAW,oBAAD;AAAA,OAAwB;AAAA;AAAA;;;;"}
1
+ {"version":3,"file":"index-142ea58f.esm.js","sources":["../../src/components/CatalogPage/DefaultCatalogPage.tsx","../../src/components/CatalogPage/CatalogPage.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 Content,\n ContentHeader,\n CreateButton,\n PageWithHeader,\n SupportButton,\n TableColumn,\n TableProps,\n} from '@backstage/core-components';\nimport { configApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api';\nimport {\n EntityLifecyclePicker,\n EntityListProvider,\n EntityOwnerPicker,\n EntityTagPicker,\n EntityTypePicker,\n UserListFilterKind,\n UserListPicker,\n} from '@backstage/plugin-catalog-react';\nimport React from 'react';\nimport { createComponentRouteRef } from '../../routes';\nimport { CatalogTable, CatalogTableRow } from '../CatalogTable';\nimport {\n FilteredEntityLayout,\n EntityListContainer,\n FilterContainer,\n} from '../FilteredEntityLayout';\nimport { CatalogKindHeader } from '../CatalogKindHeader';\n\n/**\n * Props for root catalog pages.\n *\n * @public\n */\nexport interface DefaultCatalogPageProps {\n initiallySelectedFilter?: UserListFilterKind;\n columns?: TableColumn<CatalogTableRow>[];\n actions?: TableProps<CatalogTableRow>['actions'];\n}\n\nexport function DefaultCatalogPage(props: DefaultCatalogPageProps) {\n const { columns, actions, initiallySelectedFilter = 'owned' } = props;\n const orgName =\n useApi(configApiRef).getOptionalString('organization.name') ?? 'Backstage';\n const createComponentLink = useRouteRef(createComponentRouteRef);\n\n return (\n <PageWithHeader title={`${orgName} Catalog`} themeId=\"home\">\n <EntityListProvider>\n <Content>\n <ContentHeader titleComponent={<CatalogKindHeader />}>\n <CreateButton\n title=\"Create Component\"\n to={createComponentLink && createComponentLink()}\n />\n <SupportButton>All your software catalog entities</SupportButton>\n </ContentHeader>\n <FilteredEntityLayout>\n <FilterContainer>\n <EntityTypePicker />\n <UserListPicker initialFilter={initiallySelectedFilter} />\n <EntityOwnerPicker />\n <EntityLifecyclePicker />\n <EntityTagPicker />\n </FilterContainer>\n <EntityListContainer>\n <CatalogTable columns={columns} actions={actions} />\n </EntityListContainer>\n </FilteredEntityLayout>\n </Content>\n </EntityListProvider>\n </PageWithHeader>\n );\n}\n","/*\n * Copyright 2021 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 { useOutlet } from 'react-router';\nimport {\n DefaultCatalogPage,\n DefaultCatalogPageProps,\n} from './DefaultCatalogPage';\n\nexport function CatalogPage(props: DefaultCatalogPageProps) {\n const outlet = useOutlet();\n\n return outlet || <DefaultCatalogPage {...props} />;\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAwDmC,OAAgC;AAxDnE;AAyDE,QAAM,EAAE,SAAS,SAAS,0BAA0B,YAAY;AAChE,QAAM,UACJ,aAAO,cAAc,kBAAkB,yBAAvC,YAA+D;AACjE,QAAM,sBAAsB,YAAY;AAExC,6CACG,gBAAD;AAAA,IAAgB,OAAO,GAAG;AAAA,IAAmB,SAAQ;AAAA,yCAClD,oBAAD,0CACG,SAAD,0CACG,eAAD;AAAA,IAAe,oDAAiB,mBAAD;AAAA,yCAC5B,cAAD;AAAA,IACE,OAAM;AAAA,IACN,IAAI,uBAAuB;AAAA,0CAE5B,eAAD,MAAe,4EAEhB,sBAAD,0CACG,iBAAD,0CACG,kBAAD,2CACC,gBAAD;AAAA,IAAgB,eAAe;AAAA,0CAC9B,mBAAD,2CACC,uBAAD,2CACC,iBAAD,4CAED,qBAAD,0CACG,cAAD;AAAA,IAAc;AAAA,IAAkB;AAAA;AAAA;;qBC3DlB,OAAgC;AAC1D,QAAM,SAAS;AAEf,SAAO,8CAAW,oBAAD;AAAA,OAAwB;AAAA;AAAA;;;;"}
@@ -1,5 +1,7 @@
1
- export { A as AboutCard, d as AboutContent, e as AboutField } from './index-de01f9dd.esm.js';
1
+ export { A as AboutCard, d as AboutContent, e as AboutField } from './index-24c3e4e1.esm.js';
2
+ import 'zen-observable';
2
3
  import '@backstage/catalog-model';
4
+ import 'lodash';
3
5
  import '@backstage/core-components';
4
6
  import '@backstage/core-plugin-api';
5
7
  import '@backstage/integration-react';
@@ -9,17 +11,18 @@ import '@material-ui/icons/Cached';
9
11
  import '@material-ui/icons/Description';
10
12
  import '@material-ui/icons/Edit';
11
13
  import 'react';
14
+ import 'react-use/lib/useAsync';
12
15
  import '@material-ui/icons/OpenInNew';
13
- import 'lodash';
16
+ import '@material-ui/icons/StarBorder';
17
+ import '@material-ui/core/styles';
18
+ import '@material-ui/icons/Star';
14
19
  import '@material-ui/lab';
15
20
  import 'react-router';
16
- import '@material-ui/core/styles';
17
21
  import '@material-ui/icons/Cancel';
18
22
  import '@material-ui/icons/BugReport';
19
23
  import '@material-ui/icons/MoreVert';
20
24
  import '@backstage/plugin-catalog-common';
21
25
  import '@backstage/errors';
22
26
  import '@backstage/catalog-client';
23
- import 'react-use/lib/useAsync';
24
27
  import '@material-ui/icons/FilterList';
25
- //# sourceMappingURL=index-36e4660a.esm.js.map
28
+ //# sourceMappingURL=index-19e9c476.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-19e9c476.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,27 +1,86 @@
1
- import { RELATION_PART_OF, RELATION_OWNED_BY, DEFAULT_NAMESPACE, ANNOTATION_LOCATION, stringifyEntityRef } from '@backstage/catalog-model';
1
+ import ObservableImpl from 'zen-observable';
2
+ import { stringifyEntityRef, RELATION_PART_OF, RELATION_OWNED_BY, ANNOTATION_EDIT_URL, DEFAULT_NAMESPACE, ANNOTATION_LOCATION, ANNOTATION_VIEW_URL } from '@backstage/catalog-model';
3
+ import { isArray, isString, capitalize as capitalize$1 } from 'lodash';
2
4
  import { Link, HeaderIconLinkRow, OverflowTooltip, WarningPanel, CodeSnippet, Table, Page, Header, Progress, RoutedTabs, Content, HeaderLabel, ResponseErrorPanel } from '@backstage/core-components';
3
- import { createExternalRouteRef, useElementFilter, useApi, alertApiRef, useRouteRef, attachComponentData, useApiHolder, createPlugin, createApiFactory, discoveryApiRef, fetchApiRef, storageApiRef, createRoutableExtension, createComponentExtension } from '@backstage/core-plugin-api';
5
+ import { createExternalRouteRef, createRouteRef, useElementFilter, useApi, alertApiRef, useRouteRef, attachComponentData, useRouteRefParams, useApiHolder, createPlugin, createApiFactory, discoveryApiRef, fetchApiRef, storageApiRef, createRoutableExtension, createComponentExtension } from '@backstage/core-plugin-api';
4
6
  import { scmIntegrationsApiRef, ScmIntegrationIcon } from '@backstage/integration-react';
5
- import { getEntityRelations, EntityRefLinks, useEntity, catalogApiRef, getEntitySourceLocation, getEntityMetadataEditUrl, useEntityKinds, useEntityListProvider, EntityKindFilter, formatEntityRefTitle, EntityRefLink, useStarredEntities, getEntityMetadataViewUrl, favoriteEntityIcon, favoriteEntityTooltip, useEntityPermission, useEntityCompoundName, EntityContext, UnregisterEntityDialog, InspectEntityDialog, FavoriteEntity, catalogRouteRef, starredEntitiesApiRef, DefaultStarredEntitiesApi, entityRouteRef } from '@backstage/plugin-catalog-react';
7
+ import { getEntityRelations, EntityRefLinks, useEntity, catalogApiRef, getEntitySourceLocation, useEntityList, EntityKindFilter, humanizeEntityRef, EntityRefLink, useStarredEntities, useEntityPermission, entityRouteRef, useAsyncEntity, UnregisterEntityDialog, InspectEntityDialog, FavoriteEntity, starredEntitiesApiRef } from '@backstage/plugin-catalog-react';
6
8
  import { makeStyles, Typography, Grid, Chip, Card, CardHeader, IconButton, Divider, CardContent, createStyles, capitalize, Select, InputBase, MenuItem, ListItem, ListItemText, Box, ListItemIcon, Popover, MenuList, Dialog, DialogTitle, DialogActions, Button, useMediaQuery, useTheme, Drawer } from '@material-ui/core';
7
9
  import CachedIcon from '@material-ui/icons/Cached';
8
10
  import DocsIcon from '@material-ui/icons/Description';
9
11
  import EditIcon from '@material-ui/icons/Edit';
10
- import React, { useCallback, useState, useEffect, useMemo, useContext } from 'react';
12
+ import React, { useCallback, useMemo, useState, useEffect } from 'react';
13
+ import useAsync from 'react-use/lib/useAsync';
11
14
  import OpenInNew from '@material-ui/icons/OpenInNew';
12
- import { capitalize as capitalize$1 } from 'lodash';
15
+ import StarBorder from '@material-ui/icons/StarBorder';
16
+ import { withStyles, makeStyles as makeStyles$1 } from '@material-ui/core/styles';
17
+ import Star from '@material-ui/icons/Star';
13
18
  import { Alert } from '@material-ui/lab';
14
19
  import { useLocation, useNavigate } from 'react-router';
15
- import { makeStyles as makeStyles$1 } from '@material-ui/core/styles';
16
20
  import CancelIcon from '@material-ui/icons/Cancel';
17
21
  import BugReportIcon from '@material-ui/icons/BugReport';
18
22
  import MoreVert from '@material-ui/icons/MoreVert';
19
23
  import { catalogEntityDeletePermission } from '@backstage/plugin-catalog-common';
20
24
  import { assertError } from '@backstage/errors';
21
25
  import { ENTITY_STATUS_CATALOG_PROCESSING_TYPE, CatalogClient } from '@backstage/catalog-client';
22
- import useAsync from 'react-use/lib/useAsync';
23
26
  import FilterListIcon from '@material-ui/icons/FilterList';
24
27
 
28
+ async function performMigrationToTheNewBucket({
29
+ storageApi
30
+ }) {
31
+ var _a;
32
+ const source = storageApi.forBucket("settings");
33
+ const target = storageApi.forBucket("starredEntities");
34
+ const oldStarredEntities = source.snapshot("starredEntities").value;
35
+ if (!isArray(oldStarredEntities)) {
36
+ return;
37
+ }
38
+ const targetEntities = new Set((_a = target.snapshot("entityRefs").value) != null ? _a : []);
39
+ oldStarredEntities.filter(isString).map((old) => old.split(":")).filter((split) => split.length === 4 && split[0] === "entity").map(([_, kind, namespace, name]) => stringifyEntityRef({ kind, namespace, name })).forEach((e) => targetEntities.add(e));
40
+ await target.set("entityRefs", Array.from(targetEntities));
41
+ await source.remove("starredEntities");
42
+ }
43
+
44
+ class DefaultStarredEntitiesApi {
45
+ constructor(opts) {
46
+ this.subscribers = /* @__PURE__ */ new Set();
47
+ this.observable = new ObservableImpl((subscriber) => {
48
+ subscriber.next(new Set(this.starredEntities));
49
+ this.subscribers.add(subscriber);
50
+ return () => {
51
+ this.subscribers.delete(subscriber);
52
+ };
53
+ });
54
+ var _a;
55
+ performMigrationToTheNewBucket(opts).then();
56
+ this.settingsStore = opts.storageApi.forBucket("starredEntities");
57
+ this.starredEntities = new Set((_a = this.settingsStore.snapshot("entityRefs").value) != null ? _a : []);
58
+ this.settingsStore.observe$("entityRefs").subscribe({
59
+ next: (next) => {
60
+ var _a2;
61
+ this.starredEntities = new Set((_a2 = next.value) != null ? _a2 : []);
62
+ this.notifyChanges();
63
+ }
64
+ });
65
+ }
66
+ async toggleStarred(entityRef) {
67
+ if (this.starredEntities.has(entityRef)) {
68
+ this.starredEntities.delete(entityRef);
69
+ } else {
70
+ this.starredEntities.add(entityRef);
71
+ }
72
+ await this.settingsStore.set("entityRefs", Array.from(this.starredEntities));
73
+ }
74
+ starredEntitie$() {
75
+ return this.observable;
76
+ }
77
+ notifyChanges() {
78
+ for (const subscription of this.subscribers) {
79
+ subscription.next(new Set(this.starredEntities));
80
+ }
81
+ }
82
+ }
83
+
25
84
  const createComponentRouteRef = createExternalRouteRef({
26
85
  id: "create-component",
27
86
  optional: true
@@ -31,6 +90,9 @@ const viewTechDocRouteRef = createExternalRouteRef({
31
90
  optional: true,
32
91
  params: ["namespace", "kind", "name"]
33
92
  });
93
+ const rootRouteRef = createRouteRef({
94
+ id: "catalog"
95
+ });
34
96
 
35
97
  const useStyles$5 = makeStyles((theme) => ({
36
98
  value: {
@@ -168,7 +230,7 @@ const useStyles$3 = makeStyles({
168
230
  }
169
231
  });
170
232
  function AboutCard(props) {
171
- var _a, _b;
233
+ var _a, _b, _c;
172
234
  const { variant } = props;
173
235
  const classes = useStyles$3();
174
236
  const { entity } = useEntity();
@@ -177,7 +239,7 @@ function AboutCard(props) {
177
239
  const alertApi = useApi(alertApiRef);
178
240
  const viewTechdocLink = useRouteRef(viewTechDocRouteRef);
179
241
  const entitySourceLocation = getEntitySourceLocation(entity, scmIntegrationsApi);
180
- const entityMetadataEditUrl = getEntityMetadataEditUrl(entity);
242
+ const entityMetadataEditUrl = (_a = entity.metadata.annotations) == null ? void 0 : _a[ANNOTATION_EDIT_URL];
181
243
  const viewInSource = {
182
244
  label: "View Source",
183
245
  disabled: !entitySourceLocation,
@@ -188,7 +250,7 @@ function AboutCard(props) {
188
250
  };
189
251
  const viewInTechDocs = {
190
252
  label: "View TechDocs",
191
- disabled: !((_a = entity.metadata.annotations) == null ? void 0 : _a["backstage.io/techdocs-ref"]) || !viewTechdocLink,
253
+ disabled: !((_b = entity.metadata.annotations) == null ? void 0 : _b["backstage.io/techdocs-ref"]) || !viewTechdocLink,
192
254
  icon: /* @__PURE__ */ React.createElement(DocsIcon, null),
193
255
  href: viewTechdocLink && viewTechdocLink({
194
256
  namespace: entity.metadata.namespace || DEFAULT_NAMESPACE,
@@ -208,7 +270,7 @@ function AboutCard(props) {
208
270
  } else if (variant === "fullHeight") {
209
271
  cardContentClass = classes.fullHeightCardContent;
210
272
  }
211
- const entityLocation = (_b = entity.metadata.annotations) == null ? void 0 : _b[ANNOTATION_LOCATION];
273
+ const entityLocation = (_c = entity.metadata.annotations) == null ? void 0 : _c[ANNOTATION_LOCATION];
212
274
  const allowRefresh = (entityLocation == null ? void 0 : entityLocation.startsWith("url:")) || (entityLocation == null ? void 0 : entityLocation.startsWith("file:"));
213
275
  const refreshEntity = useCallback(async () => {
214
276
  await catalogApi.refreshEntity(stringifyEntityRef(entity));
@@ -245,18 +307,32 @@ const useStyles$2 = makeStyles((theme) => createStyles({
245
307
  }
246
308
  }));
247
309
  function CatalogKindHeader(props) {
248
- var _a;
249
310
  const { initialFilter = "component" } = props;
250
311
  const classes = useStyles$2();
251
- const { kinds: allKinds = [] } = useEntityKinds();
252
- const { updateFilters, queryParameters } = useEntityListProvider();
253
- const [selectedKind, setSelectedKind] = useState(((_a = [queryParameters.kind].flat()[0]) != null ? _a : initialFilter).toLocaleLowerCase("en-US"));
312
+ const catalogApi = useApi(catalogApiRef);
313
+ const { value: allKinds } = useAsync(async () => {
314
+ return await catalogApi.getEntityFacets({ facets: ["kind"] }).then((response) => {
315
+ var _a;
316
+ return ((_a = response.facets.kind) == null ? void 0 : _a.map((f) => f.value).sort()) || [];
317
+ });
318
+ });
319
+ const {
320
+ updateFilters,
321
+ queryParameters: { kind: kindParameter }
322
+ } = useEntityList();
323
+ const queryParamKind = useMemo(() => [kindParameter].flat()[0], [kindParameter]);
324
+ const [selectedKind, setSelectedKind] = useState(queryParamKind != null ? queryParamKind : initialFilter);
254
325
  useEffect(() => {
255
326
  updateFilters({
256
327
  kind: selectedKind ? new EntityKindFilter(selectedKind) : void 0
257
328
  });
258
329
  }, [selectedKind, updateFilters]);
259
- const options = [capitalize(selectedKind)].concat(allKinds).sort().reduce((acc, kind) => {
330
+ useEffect(() => {
331
+ if (queryParamKind) {
332
+ setSelectedKind(queryParamKind);
333
+ }
334
+ }, [queryParamKind]);
335
+ const options = [capitalize(selectedKind)].concat(allKinds != null ? allKinds : []).sort().reduce((acc, kind) => {
260
336
  acc[kind.toLocaleLowerCase("en-US")] = kind;
261
337
  return acc;
262
338
  }, {});
@@ -283,7 +359,7 @@ const useStyles$1 = makeStyles({
283
359
  marginBottom: "1rem"
284
360
  }
285
361
  });
286
- function CatalogResultListItem(props) {
362
+ function CatalogSearchResultListItem(props) {
287
363
  const result = props.result;
288
364
  const classes = useStyles$1();
289
365
  return /* @__PURE__ */ React.createElement(Link, {
@@ -311,7 +387,7 @@ const columnFactories = Object.freeze({
311
387
  createNameColumn(options) {
312
388
  function formatContent(entity) {
313
389
  var _a;
314
- return ((_a = entity.metadata) == null ? void 0 : _a.title) || formatEntityRefTitle(entity, {
390
+ return ((_a = entity.metadata) == null ? void 0 : _a.title) || humanizeEntityRef(entity, {
315
391
  defaultKind: options == null ? void 0 : options.defaultKind
316
392
  });
317
393
  }
@@ -394,11 +470,16 @@ const columnFactories = Object.freeze({
394
470
  }
395
471
  });
396
472
 
473
+ const YellowStar = withStyles({
474
+ root: {
475
+ color: "#f3ba37"
476
+ }
477
+ })(Star);
397
478
  const CatalogTable = (props) => {
398
479
  var _a, _b, _c;
399
480
  const { columns, actions } = props;
400
481
  const { isStarredEntity, toggleStarredEntity } = useStarredEntities();
401
- const { loading, error, entities, filters } = useEntityListProvider();
482
+ const { loading, error, entities, filters } = useEntityList();
402
483
  const defaultColumns = useMemo(() => {
403
484
  var _a2;
404
485
  return [
@@ -424,7 +505,8 @@ const CatalogTable = (props) => {
424
505
  }
425
506
  const defaultActions = [
426
507
  ({ entity }) => {
427
- const url = getEntityMetadataViewUrl(entity);
508
+ var _a2;
509
+ const url = (_a2 = entity.metadata.annotations) == null ? void 0 : _a2[ANNOTATION_VIEW_URL];
428
510
  return {
429
511
  icon: () => /* @__PURE__ */ React.createElement(OpenInNew, {
430
512
  "aria-label": "View",
@@ -440,7 +522,8 @@ const CatalogTable = (props) => {
440
522
  };
441
523
  },
442
524
  ({ entity }) => {
443
- const url = getEntityMetadataEditUrl(entity);
525
+ var _a2;
526
+ const url = (_a2 = entity.metadata.annotations) == null ? void 0 : _a2[ANNOTATION_EDIT_URL];
444
527
  return {
445
528
  icon: () => /* @__PURE__ */ React.createElement(EditIcon, {
446
529
  "aria-label": "Edit",
@@ -459,8 +542,8 @@ const CatalogTable = (props) => {
459
542
  const isStarred = isStarredEntity(entity);
460
543
  return {
461
544
  cellStyle: { paddingLeft: "1em" },
462
- icon: () => favoriteEntityIcon(isStarred),
463
- tooltip: favoriteEntityTooltip(isStarred),
545
+ icon: () => isStarred ? /* @__PURE__ */ React.createElement(YellowStar, null) : /* @__PURE__ */ React.createElement(StarBorder, null),
546
+ tooltip: isStarred ? "Remove from favorites" : "Add to favorites",
464
547
  onClick: () => toggleStarredEntity(entity)
465
548
  };
466
549
  }
@@ -473,12 +556,12 @@ const CatalogTable = (props) => {
473
556
  return {
474
557
  entity,
475
558
  resolved: {
476
- name: formatEntityRefTitle(entity, {
559
+ name: humanizeEntityRef(entity, {
477
560
  defaultKind: "Component"
478
561
  }),
479
- ownedByRelationsTitle: ownedByRelations.map((r) => formatEntityRefTitle(r, { defaultKind: "group" })).join(", "),
562
+ ownedByRelationsTitle: ownedByRelations.map((r) => humanizeEntityRef(r, { defaultKind: "group" })).join(", "),
480
563
  ownedByRelations,
481
- partOfSystemRelationTitle: partOfSystemRelations.map((r) => formatEntityRefTitle(r, {
564
+ partOfSystemRelationTitle: partOfSystemRelations.map((r) => humanizeEntityRef(r, {
482
565
  defaultKind: "system"
483
566
  })).join(", "),
484
567
  partOfSystemRelations
@@ -643,14 +726,16 @@ const EntityLayout = (props) => {
643
726
  UNSTABLE_contextMenuOptions,
644
727
  children
645
728
  } = props;
646
- const { kind, namespace, name } = useEntityCompoundName();
647
- const { entity, loading, error } = useContext(EntityContext);
729
+ const { kind, namespace, name } = useRouteRefParams(entityRouteRef);
730
+ const { entity, loading, error } = useAsyncEntity();
648
731
  const location = useLocation();
649
732
  const routes = useElementFilter(children, (elements) => elements.selectByComponentData({
650
733
  key: dataKey,
651
734
  withStrictError: "Child of EntityLayout must be an EntityLayout.Route"
652
735
  }).getElements().flatMap(({ props: elementProps }) => {
653
- if (elementProps.if && entity && !elementProps.if(entity)) {
736
+ if (!entity) {
737
+ return [];
738
+ } else if (elementProps.if && !elementProps.if(entity)) {
654
739
  return [];
655
740
  }
656
741
  return [
@@ -752,7 +837,7 @@ function isOrphan(entity) {
752
837
  }
753
838
  function EntityOrphanWarning() {
754
839
  const navigate = useNavigate();
755
- const catalogLink = useRouteRef(catalogRouteRef);
840
+ const catalogLink = useRouteRef(rootRouteRef);
756
841
  const [confirmationDialogOpen, setConfirmationDialogOpen] = useState(false);
757
842
  const { entity } = useEntity();
758
843
  const cleanUpAfterRemoval = async () => {
@@ -824,13 +909,16 @@ const EntitySwitchCaseComponent = (_props) => null;
824
909
  attachComponentData(EntitySwitchCaseComponent, ENTITY_SWITCH_KEY, true);
825
910
  const EntitySwitch = (props) => {
826
911
  var _a, _b;
827
- const { entity } = useEntity();
912
+ const { entity } = useAsyncEntity();
828
913
  const apis = useApiHolder();
829
914
  const results = useElementFilter(props.children, (collection) => collection.selectByComponentData({
830
915
  key: ENTITY_SWITCH_KEY,
831
916
  withStrictError: "Child of EntitySwitch is not an EntitySwitch.Case"
832
917
  }).getElements().flatMap((element) => {
833
918
  var _a2;
919
+ if (!entity) {
920
+ return [];
921
+ }
834
922
  const { if: condition, children: elementsChildren } = element.props;
835
923
  return [
836
924
  {
@@ -872,11 +960,11 @@ function strCmp(a, b) {
872
960
  return Boolean(a && (a == null ? void 0 : a.toLocaleLowerCase("en-US")) === (b == null ? void 0 : b.toLocaleLowerCase("en-US")));
873
961
  }
874
962
  function isKind(kind) {
875
- return (entity) => strCmp(entity == null ? void 0 : entity.kind, kind);
963
+ return (entity) => strCmp(entity.kind, kind);
876
964
  }
877
965
  function isComponentType(type) {
878
966
  return (entity) => {
879
- if (!strCmp(entity == null ? void 0 : entity.kind, "component")) {
967
+ if (!strCmp(entity.kind, "component")) {
880
968
  return false;
881
969
  }
882
970
  const componentEntity = entity;
@@ -886,7 +974,7 @@ function isComponentType(type) {
886
974
  function isNamespace(namespace) {
887
975
  return (entity) => {
888
976
  var _a;
889
- return strCmp((_a = entity == null ? void 0 : entity.metadata) == null ? void 0 : _a.namespace, namespace);
977
+ return strCmp((_a = entity.metadata) == null ? void 0 : _a.namespace, namespace);
890
978
  };
891
979
  }
892
980
 
@@ -950,7 +1038,7 @@ const catalogPlugin = createPlugin({
950
1038
  })
951
1039
  ],
952
1040
  routes: {
953
- catalogIndex: catalogRouteRef,
1041
+ catalogIndex: rootRouteRef,
954
1042
  catalogEntity: entityRouteRef
955
1043
  },
956
1044
  externalRoutes: {
@@ -960,74 +1048,74 @@ const catalogPlugin = createPlugin({
960
1048
  });
961
1049
  const CatalogIndexPage = catalogPlugin.provide(createRoutableExtension({
962
1050
  name: "CatalogIndexPage",
963
- component: () => import('./index-5c367aca.esm.js').then((m) => m.CatalogPage),
964
- mountPoint: catalogRouteRef
1051
+ component: () => import('./index-142ea58f.esm.js').then((m) => m.CatalogPage),
1052
+ mountPoint: rootRouteRef
965
1053
  }));
966
1054
  const CatalogEntityPage = catalogPlugin.provide(createRoutableExtension({
967
1055
  name: "CatalogEntityPage",
968
- component: () => import('./index-3467aa13.esm.js').then((m) => m.CatalogEntityPage),
1056
+ component: () => import('./index-4e6adb42.esm.js').then((m) => m.CatalogEntityPage),
969
1057
  mountPoint: entityRouteRef
970
1058
  }));
971
1059
  const EntityAboutCard = catalogPlugin.provide(createComponentExtension({
972
1060
  name: "EntityAboutCard",
973
1061
  component: {
974
- lazy: () => import('./index-36e4660a.esm.js').then((m) => m.AboutCard)
1062
+ lazy: () => import('./index-19e9c476.esm.js').then((m) => m.AboutCard)
975
1063
  }
976
1064
  }));
977
1065
  const EntityLinksCard = catalogPlugin.provide(createComponentExtension({
978
1066
  name: "EntityLinksCard",
979
1067
  component: {
980
- lazy: () => import('./index-52271589.esm.js').then((m) => m.EntityLinksCard)
1068
+ lazy: () => import('./index-896aeac9.esm.js').then((m) => m.EntityLinksCard)
981
1069
  }
982
1070
  }));
983
1071
  const EntityHasSystemsCard = catalogPlugin.provide(createComponentExtension({
984
1072
  name: "EntityHasSystemsCard",
985
1073
  component: {
986
- lazy: () => import('./index-bb5ef8ab.esm.js').then((m) => m.HasSystemsCard)
1074
+ lazy: () => import('./index-3763491b.esm.js').then((m) => m.HasSystemsCard)
987
1075
  }
988
1076
  }));
989
1077
  const EntityHasComponentsCard = catalogPlugin.provide(createComponentExtension({
990
1078
  name: "EntityHasComponentsCard",
991
1079
  component: {
992
- lazy: () => import('./index-14286170.esm.js').then((m) => m.HasComponentsCard)
1080
+ lazy: () => import('./index-acb3cf04.esm.js').then((m) => m.HasComponentsCard)
993
1081
  }
994
1082
  }));
995
1083
  const EntityHasSubcomponentsCard = catalogPlugin.provide(createComponentExtension({
996
1084
  name: "EntityHasSubcomponentsCard",
997
1085
  component: {
998
- lazy: () => import('./index-69fcf315.esm.js').then((m) => m.HasSubcomponentsCard)
1086
+ lazy: () => import('./index-41ab53b6.esm.js').then((m) => m.HasSubcomponentsCard)
999
1087
  }
1000
1088
  }));
1001
1089
  const EntityHasResourcesCard = catalogPlugin.provide(createComponentExtension({
1002
1090
  name: "EntityHasResourcesCard",
1003
1091
  component: {
1004
- lazy: () => import('./index-df3c8250.esm.js').then((m) => m.HasResourcesCard)
1092
+ lazy: () => import('./index-b3ad464b.esm.js').then((m) => m.HasResourcesCard)
1005
1093
  }
1006
1094
  }));
1007
1095
  const EntityDependsOnComponentsCard = catalogPlugin.provide(createComponentExtension({
1008
1096
  name: "EntityDependsOnComponentsCard",
1009
1097
  component: {
1010
- lazy: () => import('./index-be138931.esm.js').then((m) => m.DependsOnComponentsCard)
1098
+ lazy: () => import('./index-66fdb6ad.esm.js').then((m) => m.DependsOnComponentsCard)
1011
1099
  }
1012
1100
  }));
1013
1101
  const EntityDependencyOfComponentsCard = catalogPlugin.provide(createComponentExtension({
1014
1102
  name: "EntityDependencyOfComponentsCard",
1015
1103
  component: {
1016
- lazy: () => import('./index-2a9d68c3.esm.js').then((m) => m.DependencyOfComponentsCard)
1104
+ lazy: () => import('./index-390fab14.esm.js').then((m) => m.DependencyOfComponentsCard)
1017
1105
  }
1018
1106
  }));
1019
1107
  const EntityDependsOnResourcesCard = catalogPlugin.provide(createComponentExtension({
1020
1108
  name: "EntityDependsOnResourcesCard",
1021
1109
  component: {
1022
- lazy: () => import('./index-583e6f94.esm.js').then((m) => m.DependsOnResourcesCard)
1110
+ lazy: () => import('./index-d41abbff.esm.js').then((m) => m.DependsOnResourcesCard)
1023
1111
  }
1024
1112
  }));
1025
1113
  const RelatedEntitiesCard = catalogPlugin.provide(createComponentExtension({
1026
1114
  name: "RelatedEntitiesCard",
1027
1115
  component: {
1028
- lazy: () => import('./index-172990ed.esm.js').then((m) => m.RelatedEntitiesCard)
1116
+ lazy: () => import('./index-c2914273.esm.js').then((m) => m.RelatedEntitiesCard)
1029
1117
  }
1030
1118
  }));
1031
1119
 
1032
- export { AboutCard as A, isNamespace as B, CatalogKindHeader as C, isComponentType as D, EntityListContainer as E, FilteredEntityLayout as F, RelatedEntitiesCard as R, FilterContainer as a, CatalogTable as b, createComponentRouteRef as c, AboutContent as d, AboutField as e, CatalogEntityPage as f, CatalogIndexPage as g, catalogPlugin as h, EntityAboutCard as i, EntityDependencyOfComponentsCard as j, EntityDependsOnComponentsCard as k, EntityDependsOnResourcesCard as l, EntityHasComponentsCard as m, EntityHasResourcesCard as n, EntityHasSubcomponentsCard as o, EntityHasSystemsCard as p, EntityLinksCard as q, CatalogResultListItem as r, columnFactories as s, EntityLayout as t, EntityOrphanWarning as u, isOrphan as v, EntityProcessingErrorsPanel as w, hasCatalogProcessingErrors as x, EntitySwitch as y, isKind as z };
1033
- //# sourceMappingURL=index-de01f9dd.esm.js.map
1120
+ export { AboutCard as A, isComponentType as B, CatalogKindHeader as C, DefaultStarredEntitiesApi as D, EntityListContainer as E, FilteredEntityLayout as F, RelatedEntitiesCard as R, FilterContainer as a, CatalogTable as b, createComponentRouteRef as c, AboutContent as d, AboutField as e, CatalogEntityPage as f, CatalogIndexPage as g, catalogPlugin as h, EntityAboutCard as i, EntityDependencyOfComponentsCard as j, EntityDependsOnComponentsCard as k, EntityDependsOnResourcesCard as l, EntityHasComponentsCard as m, EntityHasResourcesCard as n, EntityHasSubcomponentsCard as o, EntityHasSystemsCard as p, EntityLinksCard as q, CatalogSearchResultListItem as r, EntityLayout as s, EntityOrphanWarning as t, isOrphan as u, EntityProcessingErrorsPanel as v, hasCatalogProcessingErrors as w, EntitySwitch as x, isKind as y, isNamespace as z };
1121
+ //# sourceMappingURL=index-24c3e4e1.esm.js.map