@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.
- package/CHANGELOG.md +73 -0
- package/dist/esm/{index-5c367aca.esm.js → index-142ea58f.esm.js} +8 -5
- package/dist/esm/{index-5c367aca.esm.js.map → index-142ea58f.esm.js.map} +1 -1
- package/dist/esm/{index-36e4660a.esm.js → index-19e9c476.esm.js} +8 -5
- package/dist/esm/index-19e9c476.esm.js.map +1 -0
- package/dist/esm/{index-de01f9dd.esm.js → index-24c3e4e1.esm.js} +138 -50
- package/dist/esm/index-24c3e4e1.esm.js.map +1 -0
- package/dist/esm/{index-bb5ef8ab.esm.js → index-3763491b.esm.js} +2 -2
- package/dist/esm/{index-bb5ef8ab.esm.js.map → index-3763491b.esm.js.map} +1 -1
- package/dist/esm/{index-2a9d68c3.esm.js → index-390fab14.esm.js} +2 -2
- package/dist/esm/{index-2a9d68c3.esm.js.map → index-390fab14.esm.js.map} +1 -1
- package/dist/esm/{index-69fcf315.esm.js → index-41ab53b6.esm.js} +2 -2
- package/dist/esm/{index-69fcf315.esm.js.map → index-41ab53b6.esm.js.map} +1 -1
- package/dist/esm/index-4e6adb42.esm.js +34 -0
- package/dist/esm/index-4e6adb42.esm.js.map +1 -0
- package/dist/esm/{index-be138931.esm.js → index-66fdb6ad.esm.js} +2 -2
- package/dist/esm/{index-be138931.esm.js.map → index-66fdb6ad.esm.js.map} +1 -1
- package/dist/esm/{index-52271589.esm.js → index-896aeac9.esm.js} +1 -1
- package/dist/esm/{index-52271589.esm.js.map → index-896aeac9.esm.js.map} +1 -1
- package/dist/esm/{index-14286170.esm.js → index-acb3cf04.esm.js} +2 -2
- package/dist/esm/{index-14286170.esm.js.map → index-acb3cf04.esm.js.map} +1 -1
- package/dist/esm/{index-df3c8250.esm.js → index-b3ad464b.esm.js} +2 -2
- package/dist/esm/{index-df3c8250.esm.js.map → index-b3ad464b.esm.js.map} +1 -1
- package/dist/esm/{index-172990ed.esm.js → index-c2914273.esm.js} +2 -2
- package/dist/esm/index-c2914273.esm.js.map +1 -0
- package/dist/esm/{index-583e6f94.esm.js → index-d41abbff.esm.js} +2 -2
- package/dist/esm/{index-583e6f94.esm.js.map → index-d41abbff.esm.js.map} +1 -1
- package/dist/esm/{presets-8488ee8e.esm.js → presets-13b889b9.esm.js} +1 -1
- package/dist/esm/{presets-8488ee8e.esm.js.map → presets-13b889b9.esm.js.map} +1 -1
- package/dist/index.d.ts +40 -38
- package/dist/index.esm.js +7 -4
- package/dist/index.esm.js.map +1 -1
- package/package.json +19 -17
- package/dist/esm/index-172990ed.esm.js.map +0 -1
- package/dist/esm/index-3467aa13.esm.js +0 -12
- package/dist/esm/index-3467aa13.esm.js.map +0 -1
- package/dist/esm/index-36e4660a.esm.js.map +0 -1
- 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-
|
|
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 '
|
|
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-
|
|
58
|
+
//# sourceMappingURL=index-142ea58f.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
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-
|
|
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 '
|
|
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-
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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 =
|
|
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: !((
|
|
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 = (
|
|
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
|
|
252
|
-
const {
|
|
253
|
-
|
|
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
|
-
|
|
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
|
|
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) ||
|
|
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 } =
|
|
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
|
-
|
|
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
|
-
|
|
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: () =>
|
|
463
|
-
tooltip:
|
|
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:
|
|
559
|
+
name: humanizeEntityRef(entity, {
|
|
477
560
|
defaultKind: "Component"
|
|
478
561
|
}),
|
|
479
|
-
ownedByRelationsTitle: ownedByRelations.map((r) =>
|
|
562
|
+
ownedByRelationsTitle: ownedByRelations.map((r) => humanizeEntityRef(r, { defaultKind: "group" })).join(", "),
|
|
480
563
|
ownedByRelations,
|
|
481
|
-
partOfSystemRelationTitle: partOfSystemRelations.map((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 } =
|
|
647
|
-
const { entity, loading, error } =
|
|
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 (
|
|
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(
|
|
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 } =
|
|
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
|
|
963
|
+
return (entity) => strCmp(entity.kind, kind);
|
|
876
964
|
}
|
|
877
965
|
function isComponentType(type) {
|
|
878
966
|
return (entity) => {
|
|
879
|
-
if (!strCmp(entity
|
|
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
|
|
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:
|
|
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-
|
|
964
|
-
mountPoint:
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
1116
|
+
lazy: () => import('./index-c2914273.esm.js').then((m) => m.RelatedEntitiesCard)
|
|
1029
1117
|
}
|
|
1030
1118
|
}));
|
|
1031
1119
|
|
|
1032
|
-
export { AboutCard as A,
|
|
1033
|
-
//# sourceMappingURL=index-
|
|
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
|