@backstage/plugin-api-docs 0.6.15 → 0.6.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @backstage/plugin-api-docs
2
2
 
3
+ ## 0.6.16
4
+
5
+ ### Patch Changes
6
+
7
+ - 752a53d94e: Improve theme integration for OpenApi definition
8
+ - Updated dependencies
9
+ - @backstage/core-components@0.7.6
10
+ - @backstage/theme@0.2.14
11
+ - @backstage/core-plugin-api@0.2.2
12
+
3
13
  ## 0.6.15
4
14
 
5
15
  ### Patch Changes
package/README.md CHANGED
@@ -160,6 +160,14 @@ by this plugin.
160
160
  Grab a copy of [oauth2-redirect.html](https://github.com/swagger-api/swagger-ui/blob/master/dist/oauth2-redirect.html)
161
161
  and put it in the `app/public/` directory in order to enable Swagger UI to complete this redirection.
162
162
 
163
+ This also may require you to adjust `Content Security Policy` header settings of your Backstage application, so that the script in `oauth2-redirect.html` can be executed. Since the script is static we can add the hash of it directly to our CSP policy, which we do by adding the following to the `csp` section of the app configuration:
164
+
165
+ ```yaml
166
+ script-src:
167
+ - "'self'"
168
+ - "'sha256-GeDavzSZ8O71Jggf/pQkKbt52dfZkrdNMQ3e+Ox+AkI='" # oauth2-redirect.html
169
+ ```
170
+
163
171
  #### Configuring your OAuth2 Client
164
172
 
165
173
  You'll need to make sure your OAuth2 client has been registered in your OAuth2 Authentication Server (AS)
@@ -6,17 +6,8 @@ import 'swagger-ui-react/swagger-ui.css';
6
6
  const useStyles = makeStyles((theme) => ({
7
7
  root: {
8
8
  "& .swagger-ui": {
9
- fontFamily: "inherit",
9
+ fontFamily: theme.typography.fontFamily,
10
10
  color: theme.palette.text.primary,
11
- [`& .info h1,
12
- .info h2,
13
- .info h3,
14
- .info h4,
15
- .info h5,
16
- .info h6`]: {
17
- fontFamily: "inherit",
18
- color: theme.palette.text.primary
19
- },
20
11
  [`& .scheme-container`]: {
21
12
  backgroundColor: theme.palette.background.default
22
13
  },
@@ -24,7 +15,7 @@ const useStyles = makeStyles((theme) => ({
24
15
  .opblock-tag small,
25
16
  table thead tr td,
26
17
  table thead tr th`]: {
27
- fontFamily: "inherit",
18
+ fontFamily: theme.typography.fontFamily,
28
19
  color: theme.palette.text.primary,
29
20
  borderColor: theme.palette.divider
30
21
  },
@@ -32,35 +23,30 @@ const useStyles = makeStyles((theme) => ({
32
23
  section.models.is-open h4`]: {
33
24
  borderColor: theme.palette.divider
34
25
  },
35
- [`& .opblock .opblock-summary-description,
36
- .parameter__type,
37
- table.headers td,
38
- .model-title,
39
- .model .property.primitive,
40
- section h3`]: {
41
- fontFamily: "inherit",
42
- color: theme.palette.text.secondary
26
+ [`& .model-title,
27
+ .model .renderedMarkdown,
28
+ .model .description`]: {
29
+ fontFamily: theme.typography.fontFamily,
30
+ fontWeight: theme.typography.fontWeightRegular
43
31
  },
44
- [`& .opblock .opblock-summary-operation-id,
45
- .opblock .opblock-summary-path,
46
- .opblock .opblock-summary-path__deprecated,
47
- .opblock h4,
48
- .opblock h5,
49
- .opblock a,
50
- .opblock li,
32
+ [`& h1, h2, h3, h4, h5, h6,
33
+ .errors h4, .error h4, .opblock h4, section.models h4,
34
+ .response-control-media-type__accept-message,
35
+ .opblock-summary-description,
36
+ .opblock-summary-operation-id,
37
+ .opblock-summary-path,
38
+ .opblock-summary-path__deprecated,
39
+ .opblock-external-docs-wrapper,
40
+ .opblock-section-header .btn,
41
+ .opblock-section-header>label,
42
+ .scheme-container .schemes>label,a.nostyle,
51
43
  .parameter__name,
52
44
  .response-col_status,
53
45
  .response-col_links,
54
- .opblock-section-header .btn,
55
- .tab li,
56
- .info li,
57
- .info p,
58
- .info table,
59
- section.models h4,
46
+ .error .btn,
60
47
  .info .title,
61
- table.model tr.description,
62
- .property-row`]: {
63
- fontFamily: "inherit",
48
+ .info .base-url`]: {
49
+ fontFamily: theme.typography.fontFamily,
64
50
  color: theme.palette.text.primary
65
51
  },
66
52
  [`& .opblock .opblock-section-header,
@@ -72,22 +58,56 @@ const useStyles = makeStyles((theme) => ({
72
58
  .parameter__in`]: {
73
59
  color: theme.palette.text.disabled
74
60
  },
75
- [`& .opblock-description-wrapper p,
76
- .opblock-description-wrapper li,
77
- .opblock-external-docs-wrapper p,
78
- .opblock-title_normal p,
79
- .response-control-media-type__accept-message,
80
- .opblock .opblock-section-header>label,
81
- .scheme-container .schemes>label,
82
- .info .base-url,
83
- .model`]: {
84
- color: theme.palette.text.hint
61
+ [`& table.model,
62
+ .parameter__type,
63
+ .model.model-title,
64
+ .model-title,
65
+ .model span,
66
+ .model .brace-open,
67
+ .model .brace-close,
68
+ .model .property.primitive,
69
+ .model .renderedMarkdown,
70
+ .model .description,
71
+ .errors small`]: {
72
+ color: theme.palette.text.secondary
85
73
  },
86
74
  [`& .parameter__name.required:after`]: {
87
75
  color: theme.palette.warning.dark
88
76
  },
89
- [`& .prop-type`]: {
77
+ [`& table.model,
78
+ table.model .model,
79
+ .opblock-external-docs-wrapper`]: {
80
+ fontSize: theme.typography.fontSize
81
+ },
82
+ [`& table.headers td`]: {
83
+ color: theme.palette.text.primary,
84
+ fontWeight: theme.typography.fontWeightRegular
85
+ },
86
+ [`& .model-hint`]: {
87
+ color: theme.palette.text.hint,
88
+ backgroundColor: theme.palette.background.paper
89
+ },
90
+ [`& .opblock-summary-method,
91
+ .info a`]: {
92
+ fontFamily: theme.typography.fontFamily
93
+ },
94
+ [`& .info, .opblock, .tab`]: {
95
+ [`& li, p`]: {
96
+ fontFamily: theme.typography.fontFamily,
97
+ color: theme.palette.text.primary
98
+ }
99
+ },
100
+ [`& a`]: {
90
101
  color: theme.palette.primary.main
102
+ },
103
+ [`& .renderedMarkdown code`]: {
104
+ color: theme.palette.secondary.light
105
+ },
106
+ [`& .property-row td:first-child`]: {
107
+ color: theme.palette.text.primary
108
+ },
109
+ [`& span.prop-type`]: {
110
+ color: theme.palette.success.light
91
111
  }
92
112
  }
93
113
  }
@@ -108,4 +128,4 @@ const OpenApiDefinition = ({definition}) => {
108
128
  };
109
129
 
110
130
  export { OpenApiDefinition };
111
- //# sourceMappingURL=OpenApiDefinition-2b13c691.esm.js.map
131
+ //# sourceMappingURL=OpenApiDefinition-64011770.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenApiDefinition-64011770.esm.js","sources":["../../src/components/OpenApiDefinitionWidget/OpenApiDefinition.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport React, { useEffect, useState } from 'react';\nimport SwaggerUI from 'swagger-ui-react';\nimport 'swagger-ui-react/swagger-ui.css';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n '& .swagger-ui': {\n fontFamily: theme.typography.fontFamily,\n color: theme.palette.text.primary,\n\n [`& .scheme-container`]: {\n backgroundColor: theme.palette.background.default,\n },\n [`& .opblock-tag,\n .opblock-tag small,\n table thead tr td,\n table thead tr th`]: {\n fontFamily: theme.typography.fontFamily,\n color: theme.palette.text.primary,\n borderColor: theme.palette.divider,\n },\n [`& section.models,\n section.models.is-open h4`]: {\n borderColor: theme.palette.divider,\n },\n [`& .model-title,\n .model .renderedMarkdown,\n .model .description`]: {\n fontFamily: theme.typography.fontFamily,\n fontWeight: theme.typography.fontWeightRegular,\n },\n [`& h1, h2, h3, h4, h5, h6,\n .errors h4, .error h4, .opblock h4, section.models h4,\n .response-control-media-type__accept-message,\n .opblock-summary-description,\n .opblock-summary-operation-id,\n .opblock-summary-path,\n .opblock-summary-path__deprecated,\n .opblock-external-docs-wrapper,\n .opblock-section-header .btn,\n .opblock-section-header>label,\n .scheme-container .schemes>label,a.nostyle,\n .parameter__name,\n .response-col_status,\n .response-col_links,\n .error .btn,\n .info .title,\n .info .base-url`]: {\n fontFamily: theme.typography.fontFamily,\n color: theme.palette.text.primary,\n },\n [`& .opblock .opblock-section-header, \n .model-box,\n section.models .model-container`]: {\n background: theme.palette.background.default,\n },\n [`& .prop-format,\n .parameter__in`]: {\n color: theme.palette.text.disabled,\n },\n [`& table.model, \n .parameter__type,\n .model.model-title,\n .model-title,\n .model span,\n .model .brace-open,\n .model .brace-close,\n .model .property.primitive,\n .model .renderedMarkdown,\n .model .description,\n .errors small`]: {\n color: theme.palette.text.secondary,\n },\n [`& .parameter__name.required:after`]: {\n color: theme.palette.warning.dark,\n },\n [`& table.model, \n table.model .model,\n .opblock-external-docs-wrapper`]: {\n fontSize: theme.typography.fontSize,\n },\n [`& table.headers td`]: {\n color: theme.palette.text.primary,\n fontWeight: theme.typography.fontWeightRegular,\n },\n [`& .model-hint`]: {\n color: theme.palette.text.hint,\n backgroundColor: theme.palette.background.paper,\n },\n [`& .opblock-summary-method, \n .info a`]: {\n fontFamily: theme.typography.fontFamily,\n },\n [`& .info, .opblock, .tab`]: {\n [`& li, p`]: {\n fontFamily: theme.typography.fontFamily,\n color: theme.palette.text.primary,\n },\n },\n [`& a`]: {\n color: theme.palette.primary.main,\n },\n [`& .renderedMarkdown code`]: {\n color: theme.palette.secondary.light,\n },\n [`& .property-row td:first-child`]: {\n color: theme.palette.text.primary,\n },\n [`& span.prop-type`]: {\n color: theme.palette.success.light,\n },\n },\n },\n}));\n\nexport type OpenApiDefinitionProps = {\n definition: string;\n};\n\nexport const OpenApiDefinition = ({ definition }: OpenApiDefinitionProps) => {\n const classes = useStyles();\n\n // Due to a bug in the swagger-ui-react component, the component needs\n // to be created without content first.\n const [def, setDef] = useState('');\n\n useEffect(() => {\n const timer = setTimeout(() => setDef(definition), 0);\n return () => clearTimeout(timer);\n }, [definition, setDef]);\n\n return (\n <div className={classes.root}>\n <SwaggerUI spec={def} deepLinking />\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;AAqBA,MAAM,YAAY,WAAW;AAAU,EACrC,MAAM;AAAA,IACJ,iBAAiB;AAAA,MACf,YAAY,MAAM,WAAW;AAAA,MAC7B,OAAO,MAAM,QAAQ,KAAK;AAAA,OAEzB,wBAAwB;AAAA,QACvB,iBAAiB,MAAM,QAAQ,WAAW;AAAA;AAAA,OAE3C;AAAA;AAAA;AAAA,+BAGwB;AAAA,QACvB,YAAY,MAAM,WAAW;AAAA,QAC7B,OAAO,MAAM,QAAQ,KAAK;AAAA,QAC1B,aAAa,MAAM,QAAQ;AAAA;AAAA,OAE5B;AAAA,uCACgC;AAAA,QAC/B,aAAa,MAAM,QAAQ;AAAA;AAAA,OAE5B;AAAA;AAAA,iCAE0B;AAAA,QACzB,YAAY,MAAM,WAAW;AAAA,QAC7B,YAAY,MAAM,WAAW;AAAA;AAAA,OAE9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAgBsB;AAAA,QACrB,YAAY,MAAM,WAAW;AAAA,QAC7B,OAAO,MAAM,QAAQ,KAAK;AAAA;AAAA,OAE3B;AAAA;AAAA,6CAEsC;AAAA,QACrC,YAAY,MAAM,QAAQ,WAAW;AAAA;AAAA,OAEtC;AAAA,4BACqB;AAAA,QACpB,OAAO,MAAM,QAAQ,KAAK;AAAA;AAAA,OAE3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAUoB;AAAA,QACnB,OAAO,MAAM,QAAQ,KAAK;AAAA;AAAA,OAE3B,sCAAsC;AAAA,QACrC,OAAO,MAAM,QAAQ,QAAQ;AAAA;AAAA,OAE9B;AAAA;AAAA,4CAEqC;AAAA,QACpC,UAAU,MAAM,WAAW;AAAA;AAAA,OAE5B,uBAAuB;AAAA,QACtB,OAAO,MAAM,QAAQ,KAAK;AAAA,QAC1B,YAAY,MAAM,WAAW;AAAA;AAAA,OAE9B,kBAAkB;AAAA,QACjB,OAAO,MAAM,QAAQ,KAAK;AAAA,QAC1B,iBAAiB,MAAM,QAAQ,WAAW;AAAA;AAAA,OAE3C;AAAA,qBACc;AAAA,QACb,YAAY,MAAM,WAAW;AAAA;AAAA,OAE9B,4BAA4B;AAAA,SAC1B,YAAY;AAAA,UACX,YAAY,MAAM,WAAW;AAAA,UAC7B,OAAO,MAAM,QAAQ,KAAK;AAAA;AAAA;AAAA,OAG7B,QAAQ;AAAA,QACP,OAAO,MAAM,QAAQ,QAAQ;AAAA;AAAA,OAE9B,6BAA6B;AAAA,QAC5B,OAAO,MAAM,QAAQ,UAAU;AAAA;AAAA,OAEhC,mCAAmC;AAAA,QAClC,OAAO,MAAM,QAAQ,KAAK;AAAA;AAAA,OAE3B,qBAAqB;AAAA,QACpB,OAAO,MAAM,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA;MAUxB,oBAAoB,CAAC,CAAE,gBAAyC;AAC3E,QAAM,UAAU;AAIhB,QAAM,CAAC,KAAK,UAAU,SAAS;AAE/B,YAAU,MAAM;AACd,UAAM,QAAQ,WAAW,MAAM,OAAO,aAAa;AACnD,WAAO,MAAM,aAAa;AAAA,KACzB,CAAC,YAAY;AAEhB,6CACG,OAAD;AAAA,IAAK,WAAW,QAAQ;AAAA,yCACrB,WAAD;AAAA,IAAW,MAAM;AAAA,IAAK,aAAW;AAAA;AAAA;;;;"}
@@ -1,4 +1,4 @@
1
- export { A as ApiDefinitionCard, a as ApiTypeTitle, d as defaultDefinitionWidgets } from './index-ac0c1f1e.esm.js';
1
+ export { A as ApiDefinitionCard, a as ApiTypeTitle, d as defaultDefinitionWidgets } from './index-c1d775ea.esm.js';
2
2
  import '@backstage/plugin-catalog-react';
3
3
  import '@material-ui/lab';
4
4
  import 'react';
@@ -6,4 +6,4 @@ import '@backstage/core-plugin-api';
6
6
  import '@backstage/core-components';
7
7
  import '@backstage/catalog-model';
8
8
  import '@material-ui/core';
9
- //# sourceMappingURL=index-176f44ac.esm.js.map
9
+ //# sourceMappingURL=index-29e3fb16.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-29e3fb16.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -1,4 +1,4 @@
1
- export { b as ConsumingComponentsCard, e as ProvidingComponentsCard } from './index-ac0c1f1e.esm.js';
1
+ export { b as ConsumingComponentsCard, e as ProvidingComponentsCard } from './index-c1d775ea.esm.js';
2
2
  import '@backstage/plugin-catalog-react';
3
3
  import '@material-ui/lab';
4
4
  import 'react';
@@ -6,4 +6,4 @@ import '@backstage/core-plugin-api';
6
6
  import '@backstage/core-components';
7
7
  import '@backstage/catalog-model';
8
8
  import '@material-ui/core';
9
- //# sourceMappingURL=index-1ce8aa22.esm.js.map
9
+ //# sourceMappingURL=index-31dd65a0.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-31dd65a0.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -1,4 +1,4 @@
1
- export { C as ConsumedApisCard, H as HasApisCard, P as ProvidedApisCard } from './index-ac0c1f1e.esm.js';
1
+ export { C as ConsumedApisCard, H as HasApisCard, P as ProvidedApisCard } from './index-c1d775ea.esm.js';
2
2
  import '@backstage/plugin-catalog-react';
3
3
  import '@material-ui/lab';
4
4
  import 'react';
@@ -6,4 +6,4 @@ import '@backstage/core-plugin-api';
6
6
  import '@backstage/core-components';
7
7
  import '@backstage/catalog-model';
8
8
  import '@material-ui/core';
9
- //# sourceMappingURL=index-7242d6e8.esm.js.map
9
+ //# sourceMappingURL=index-5bfec09f.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-5bfec09f.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -3,7 +3,7 @@ import { useApi, configApiRef, useRouteRef } from '@backstage/core-plugin-api';
3
3
  import { CatalogTable, FilteredEntityLayout, FilterContainer, EntityListContainer } from '@backstage/plugin-catalog';
4
4
  import { EntityListProvider, EntityKindPicker, EntityTypePicker, UserListPicker, EntityOwnerPicker, EntityLifecyclePicker, EntityTagPicker } from '@backstage/plugin-catalog-react';
5
5
  import React from 'react';
6
- import { c as createComponentRouteRef } from './index-ac0c1f1e.esm.js';
6
+ import { c as createComponentRouteRef } from './index-c1d775ea.esm.js';
7
7
  import '@material-ui/lab';
8
8
  import '@backstage/catalog-model';
9
9
  import '@material-ui/core';
@@ -48,4 +48,4 @@ const ApiExplorerPage = ({
48
48
  };
49
49
 
50
50
  export { ApiExplorerPage };
51
- //# sourceMappingURL=index-1ecbbed9.esm.js.map
51
+ //# sourceMappingURL=index-8c4016a8.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-1ecbbed9.esm.js","sources":["../../src/components/ApiExplorerPage/ApiExplorerPage.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\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 CatalogTable,\n CatalogTableRow,\n FilteredEntityLayout,\n EntityListContainer,\n FilterContainer,\n} from '@backstage/plugin-catalog';\nimport {\n EntityKindPicker,\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';\n\nconst defaultColumns: TableColumn<CatalogTableRow>[] = [\n CatalogTable.columns.createNameColumn({ defaultKind: 'API' }),\n CatalogTable.columns.createSystemColumn(),\n CatalogTable.columns.createOwnerColumn(),\n CatalogTable.columns.createSpecTypeColumn(),\n CatalogTable.columns.createSpecLifecycleColumn(),\n CatalogTable.columns.createMetadataDescriptionColumn(),\n CatalogTable.columns.createTagsColumn(),\n];\n\ntype ApiExplorerPageProps = {\n initiallySelectedFilter?: UserListFilterKind;\n columns?: TableColumn<CatalogTableRow>[];\n actions?: TableProps<CatalogTableRow>['actions'];\n};\n\nexport const ApiExplorerPage = ({\n initiallySelectedFilter = 'all',\n columns,\n actions,\n}: ApiExplorerPageProps) => {\n const configApi = useApi(configApiRef);\n const generatedSubtitle = `${\n configApi.getOptionalString('organization.name') ?? 'Backstage'\n } API Explorer`;\n const createComponentLink = useRouteRef(createComponentRouteRef);\n\n return (\n <PageWithHeader\n themeId=\"apis\"\n title=\"APIs\"\n subtitle={generatedSubtitle}\n pageTitleOverride=\"APIs\"\n >\n <Content>\n <ContentHeader title=\"\">\n <CreateButton\n title=\"Register Existing API\"\n to={createComponentLink?.()}\n />\n <SupportButton>All your APIs</SupportButton>\n </ContentHeader>\n <EntityListProvider>\n <FilteredEntityLayout>\n <FilterContainer>\n <EntityKindPicker initialFilter=\"api\" hidden />\n <EntityTypePicker />\n <UserListPicker initialFilter={initiallySelectedFilter} />\n <EntityOwnerPicker />\n <EntityLifecyclePicker />\n <EntityTagPicker />\n </FilterContainer>\n <EntityListContainer>\n <CatalogTable\n columns={columns || defaultColumns}\n actions={actions}\n />\n </EntityListContainer>\n </FilteredEntityLayout>\n </EntityListProvider>\n </Content>\n </PageWithHeader>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;AA8CA,MAAM,iBAAiD;AAAA,EACrD,aAAa,QAAQ,iBAAiB,CAAE,aAAa;AAAA,EACrD,aAAa,QAAQ;AAAA,EACrB,aAAa,QAAQ;AAAA,EACrB,aAAa,QAAQ;AAAA,EACrB,aAAa,QAAQ;AAAA,EACrB,aAAa,QAAQ;AAAA,EACrB,aAAa,QAAQ;AAAA;MASV,kBAAkB,CAAC;AAAA,EAC9B,0BAA0B;AAAA,EAC1B;AAAA,EACA;AAAA,MAC0B;AAlE5B;AAmEE,QAAM,YAAY,OAAO;AACzB,QAAM,oBAAoB,GACxB,gBAAU,kBAAkB,yBAA5B,YAAoD;AAEtD,QAAM,sBAAsB,YAAY;AAExC,6CACG,gBAAD;AAAA,IACE,SAAQ;AAAA,IACR,OAAM;AAAA,IACN,UAAU;AAAA,IACV,mBAAkB;AAAA,yCAEjB,SAAD,0CACG,eAAD;AAAA,IAAe,OAAM;AAAA,yCAClB,cAAD;AAAA,IACE,OAAM;AAAA,IACN,IAAI;AAAA,0CAEL,eAAD,MAAe,uDAEhB,oBAAD,0CACG,sBAAD,0CACG,iBAAD,0CACG,kBAAD;AAAA,IAAkB,eAAc;AAAA,IAAM,QAAM;AAAA,0CAC3C,kBAAD,2CACC,gBAAD;AAAA,IAAgB,eAAe;AAAA,0CAC9B,mBAAD,2CACC,uBAAD,2CACC,iBAAD,4CAED,qBAAD,0CACG,cAAD;AAAA,IACE,SAAS,WAAW;AAAA,IACpB;AAAA;AAAA;;;;"}
1
+ {"version":3,"file":"index-8c4016a8.esm.js","sources":["../../src/components/ApiExplorerPage/ApiExplorerPage.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\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 CatalogTable,\n CatalogTableRow,\n FilteredEntityLayout,\n EntityListContainer,\n FilterContainer,\n} from '@backstage/plugin-catalog';\nimport {\n EntityKindPicker,\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';\n\nconst defaultColumns: TableColumn<CatalogTableRow>[] = [\n CatalogTable.columns.createNameColumn({ defaultKind: 'API' }),\n CatalogTable.columns.createSystemColumn(),\n CatalogTable.columns.createOwnerColumn(),\n CatalogTable.columns.createSpecTypeColumn(),\n CatalogTable.columns.createSpecLifecycleColumn(),\n CatalogTable.columns.createMetadataDescriptionColumn(),\n CatalogTable.columns.createTagsColumn(),\n];\n\ntype ApiExplorerPageProps = {\n initiallySelectedFilter?: UserListFilterKind;\n columns?: TableColumn<CatalogTableRow>[];\n actions?: TableProps<CatalogTableRow>['actions'];\n};\n\nexport const ApiExplorerPage = ({\n initiallySelectedFilter = 'all',\n columns,\n actions,\n}: ApiExplorerPageProps) => {\n const configApi = useApi(configApiRef);\n const generatedSubtitle = `${\n configApi.getOptionalString('organization.name') ?? 'Backstage'\n } API Explorer`;\n const createComponentLink = useRouteRef(createComponentRouteRef);\n\n return (\n <PageWithHeader\n themeId=\"apis\"\n title=\"APIs\"\n subtitle={generatedSubtitle}\n pageTitleOverride=\"APIs\"\n >\n <Content>\n <ContentHeader title=\"\">\n <CreateButton\n title=\"Register Existing API\"\n to={createComponentLink?.()}\n />\n <SupportButton>All your APIs</SupportButton>\n </ContentHeader>\n <EntityListProvider>\n <FilteredEntityLayout>\n <FilterContainer>\n <EntityKindPicker initialFilter=\"api\" hidden />\n <EntityTypePicker />\n <UserListPicker initialFilter={initiallySelectedFilter} />\n <EntityOwnerPicker />\n <EntityLifecyclePicker />\n <EntityTagPicker />\n </FilterContainer>\n <EntityListContainer>\n <CatalogTable\n columns={columns || defaultColumns}\n actions={actions}\n />\n </EntityListContainer>\n </FilteredEntityLayout>\n </EntityListProvider>\n </Content>\n </PageWithHeader>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;AA8CA,MAAM,iBAAiD;AAAA,EACrD,aAAa,QAAQ,iBAAiB,CAAE,aAAa;AAAA,EACrD,aAAa,QAAQ;AAAA,EACrB,aAAa,QAAQ;AAAA,EACrB,aAAa,QAAQ;AAAA,EACrB,aAAa,QAAQ;AAAA,EACrB,aAAa,QAAQ;AAAA,EACrB,aAAa,QAAQ;AAAA;MASV,kBAAkB,CAAC;AAAA,EAC9B,0BAA0B;AAAA,EAC1B;AAAA,EACA;AAAA,MAC0B;AAlE5B;AAmEE,QAAM,YAAY,OAAO;AACzB,QAAM,oBAAoB,GACxB,gBAAU,kBAAkB,yBAA5B,YAAoD;AAEtD,QAAM,sBAAsB,YAAY;AAExC,6CACG,gBAAD;AAAA,IACE,SAAQ;AAAA,IACR,OAAM;AAAA,IACN,UAAU;AAAA,IACV,mBAAkB;AAAA,yCAEjB,SAAD,0CACG,eAAD;AAAA,IAAe,OAAM;AAAA,yCAClB,cAAD;AAAA,IACE,OAAM;AAAA,IACN,IAAI;AAAA,0CAEL,eAAD,MAAe,uDAEhB,oBAAD,0CACG,sBAAD,0CACG,iBAAD,0CACG,kBAAD;AAAA,IAAkB,eAAc;AAAA,IAAM,QAAM;AAAA,0CAC3C,kBAAD,2CACC,gBAAD;AAAA,IAAgB,eAAe;AAAA,0CAC9B,mBAAD,2CACC,uBAAD,2CACC,iBAAD,4CAED,qBAAD,0CACG,cAAD;AAAA,IACE,SAAS,WAAW;AAAA,IACpB;AAAA;AAAA;;;;"}
@@ -79,7 +79,7 @@ const GraphQlDefinitionWidget = (props) => {
79
79
  }));
80
80
  };
81
81
 
82
- const LazyOpenApiDefinition = React.lazy(() => import('./OpenApiDefinition-2b13c691.esm.js').then((m) => ({
82
+ const LazyOpenApiDefinition = React.lazy(() => import('./OpenApiDefinition-64011770.esm.js').then((m) => ({
83
83
  default: m.OpenApiDefinition
84
84
  })));
85
85
  const OpenApiDefinitionWidget = (props) => {
@@ -390,45 +390,45 @@ const apiDocsPlugin = createPlugin({
390
390
  });
391
391
  const ApiExplorerPage = apiDocsPlugin.provide(createRoutableExtension({
392
392
  name: "ApiExplorerPage",
393
- component: () => import('./index-1ecbbed9.esm.js').then((m) => m.ApiExplorerPage),
393
+ component: () => import('./index-8c4016a8.esm.js').then((m) => m.ApiExplorerPage),
394
394
  mountPoint: rootRoute
395
395
  }));
396
396
  const EntityApiDefinitionCard = apiDocsPlugin.provide(createComponentExtension({
397
397
  name: "EntityApiDefinitionCard",
398
398
  component: {
399
- lazy: () => import('./index-176f44ac.esm.js').then((m) => m.ApiDefinitionCard)
399
+ lazy: () => import('./index-29e3fb16.esm.js').then((m) => m.ApiDefinitionCard)
400
400
  }
401
401
  }));
402
402
  const EntityConsumedApisCard = apiDocsPlugin.provide(createComponentExtension({
403
403
  name: "EntityConsumedApisCard",
404
404
  component: {
405
- lazy: () => import('./index-7242d6e8.esm.js').then((m) => m.ConsumedApisCard)
405
+ lazy: () => import('./index-5bfec09f.esm.js').then((m) => m.ConsumedApisCard)
406
406
  }
407
407
  }));
408
408
  const EntityConsumingComponentsCard = apiDocsPlugin.provide(createComponentExtension({
409
409
  name: "EntityConsumingComponentsCard",
410
410
  component: {
411
- lazy: () => import('./index-1ce8aa22.esm.js').then((m) => m.ConsumingComponentsCard)
411
+ lazy: () => import('./index-31dd65a0.esm.js').then((m) => m.ConsumingComponentsCard)
412
412
  }
413
413
  }));
414
414
  const EntityProvidedApisCard = apiDocsPlugin.provide(createComponentExtension({
415
415
  name: "EntityProvidedApisCard",
416
416
  component: {
417
- lazy: () => import('./index-7242d6e8.esm.js').then((m) => m.ProvidedApisCard)
417
+ lazy: () => import('./index-5bfec09f.esm.js').then((m) => m.ProvidedApisCard)
418
418
  }
419
419
  }));
420
420
  const EntityProvidingComponentsCard = apiDocsPlugin.provide(createComponentExtension({
421
421
  name: "EntityProvidingComponentsCard",
422
422
  component: {
423
- lazy: () => import('./index-1ce8aa22.esm.js').then((m) => m.ProvidingComponentsCard)
423
+ lazy: () => import('./index-31dd65a0.esm.js').then((m) => m.ProvidingComponentsCard)
424
424
  }
425
425
  }));
426
426
  const EntityHasApisCard = apiDocsPlugin.provide(createComponentExtension({
427
427
  name: "EntityHasApisCard",
428
428
  component: {
429
- lazy: () => import('./index-7242d6e8.esm.js').then((m) => m.HasApisCard)
429
+ lazy: () => import('./index-5bfec09f.esm.js').then((m) => m.HasApisCard)
430
430
  }
431
431
  }));
432
432
 
433
433
  export { ApiDefinitionCard as A, ConsumedApisCard as C, EntityApiDefinitionCard as E, HasApisCard as H, OpenApiDefinitionWidget as O, ProvidedApisCard as P, ApiTypeTitle as a, ConsumingComponentsCard as b, createComponentRouteRef as c, defaultDefinitionWidgets as d, ProvidingComponentsCard as e, apiDocsConfigRef as f, apiDocsPlugin as g, ApiExplorerPage as h, EntityConsumedApisCard as i, EntityConsumingComponentsCard as j, EntityHasApisCard as k, EntityProvidedApisCard as l, EntityProvidingComponentsCard as m, AsyncApiDefinitionWidget as n, PlainApiDefinitionWidget as o };
434
- //# sourceMappingURL=index-ac0c1f1e.esm.js.map
434
+ //# sourceMappingURL=index-c1d775ea.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-ac0c1f1e.esm.js","sources":["../../src/config.ts","../../src/components/PlainApiDefinitionWidget/PlainApiDefinitionWidget.tsx","../../src/components/ApiDefinitionCard/ApiDefinitionCard.tsx","../../src/components/AsyncApiDefinitionWidget/AsyncApiDefinitionWidget.tsx","../../src/components/GraphQlDefinitionWidget/GraphQlDefinitionWidget.tsx","../../src/components/OpenApiDefinitionWidget/OpenApiDefinitionWidget.tsx","../../src/components/ApiDefinitionCard/ApiDefinitionWidget.tsx","../../src/components/ApiDefinitionCard/ApiTypeTitle.tsx","../../src/components/ApisCards/presets.tsx","../../src/components/ApisCards/ConsumedApisCard.tsx","../../src/components/ApisCards/HasApisCard.tsx","../../src/components/ApisCards/ProvidedApisCard.tsx","../../src/components/ComponentsCards/ConsumingComponentsCard.tsx","../../src/components/ComponentsCards/ProvidingComponentsCard.tsx","../../src/routes.ts","../../src/plugin.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApiEntity } from '@backstage/catalog-model';\nimport { ApiDefinitionWidget } from './components/ApiDefinitionCard/ApiDefinitionWidget';\nimport { createApiRef } from '@backstage/core-plugin-api';\n\nexport const apiDocsConfigRef = createApiRef<ApiDocsConfig>({\n id: 'plugin.api-docs.config',\n description: 'Used to configure api-docs widgets',\n});\n\nexport interface ApiDocsConfig {\n getApiDefinitionWidget: (\n apiEntity: ApiEntity,\n ) => ApiDefinitionWidget | undefined;\n}\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { CodeSnippet } from '@backstage/core-components';\n\nexport type PlainApiDefinitionWidgetProps = {\n definition: any;\n language: string;\n};\n\nexport const PlainApiDefinitionWidget = (\n props: PlainApiDefinitionWidgetProps,\n) => {\n return (\n <CodeSnippet\n text={props.definition}\n language={props.language}\n showCopyCodeButton\n />\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApiEntity } from '@backstage/catalog-model';\nimport { useEntity } from '@backstage/plugin-catalog-react';\nimport { Alert } from '@material-ui/lab';\nimport React from 'react';\nimport { apiDocsConfigRef } from '../../config';\nimport { PlainApiDefinitionWidget } from '../PlainApiDefinitionWidget';\n\nimport { CardTab, TabbedCard } from '@backstage/core-components';\nimport { useApi } from '@backstage/core-plugin-api';\n\ntype Props = {\n /** @deprecated The entity is now grabbed from context instead */\n apiEntity?: ApiEntity;\n};\n\nexport const ApiDefinitionCard = (_: Props) => {\n const { entity } = useEntity<ApiEntity>();\n const config = useApi(apiDocsConfigRef);\n const { getApiDefinitionWidget } = config;\n\n if (!entity) {\n return <Alert severity=\"error\">Could not fetch the API</Alert>;\n }\n\n const definitionWidget = getApiDefinitionWidget(entity);\n\n if (definitionWidget) {\n return (\n <TabbedCard title={entity.metadata.name}>\n <CardTab label={definitionWidget.title} key=\"widget\">\n {definitionWidget.component(entity.spec.definition)}\n </CardTab>\n <CardTab label=\"Raw\" key=\"raw\">\n <PlainApiDefinitionWidget\n definition={entity.spec.definition}\n language={definitionWidget.rawLanguage || entity.spec.type}\n />\n </CardTab>\n </TabbedCard>\n );\n }\n\n return (\n <TabbedCard\n title={entity.metadata.name}\n children={[\n // Has to be an array, otherwise typescript doesn't like that this has only a single child\n <CardTab label={entity.spec.type} key=\"raw\">\n <PlainApiDefinitionWidget\n definition={entity.spec.definition}\n language={entity.spec.type}\n />\n </CardTab>,\n ]}\n />\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Progress } from '@backstage/core-components';\nimport React, { Suspense } from 'react';\n\n// The asyncapi component and related CSS has a significant size, only load it\n// if the element is actually used.\nconst LazyAsyncApiDefinition = React.lazy(() =>\n import('./AsyncApiDefinition').then(m => ({\n default: m.AsyncApiDefinition,\n })),\n);\n\nexport type AsyncApiDefinitionWidgetProps = {\n definition: string;\n};\n\nexport const AsyncApiDefinitionWidget = (\n props: AsyncApiDefinitionWidgetProps,\n) => {\n return (\n <Suspense fallback={<Progress />}>\n <LazyAsyncApiDefinition {...props} />\n </Suspense>\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Progress } from '@backstage/core-components';\nimport React, { Suspense } from 'react';\n\n// The graphql component, graphql and related CSS has a significant size, only\n// load it if the element is actually used.\nconst LazyGraphQlDefinition = React.lazy(() =>\n import('./GraphQlDefinition').then(m => ({\n default: m.GraphQlDefinition,\n })),\n);\n\nexport type GraphQlDefinitionWidgetProps = {\n definition: string;\n};\n\nexport const GraphQlDefinitionWidget = (\n props: GraphQlDefinitionWidgetProps,\n) => {\n return (\n <Suspense fallback={<Progress />}>\n <LazyGraphQlDefinition {...props} />\n </Suspense>\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Progress } from '@backstage/core-components';\nimport React, { Suspense } from 'react';\n\n// The swagger-ui component and related CSS has a significant size, only load it\n// if the element is actually used.\nconst LazyOpenApiDefinition = React.lazy(() =>\n import('./OpenApiDefinition').then(m => ({\n default: m.OpenApiDefinition,\n })),\n);\n\nexport type OpenApiDefinitionWidgetProps = {\n definition: string;\n};\n\nexport const OpenApiDefinitionWidget = (\n props: OpenApiDefinitionWidgetProps,\n) => {\n return (\n <Suspense fallback={<Progress />}>\n <LazyOpenApiDefinition {...props} />\n </Suspense>\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport React from 'react';\nimport { AsyncApiDefinitionWidget } from '../AsyncApiDefinitionWidget';\nimport { GraphQlDefinitionWidget } from '../GraphQlDefinitionWidget';\nimport { OpenApiDefinitionWidget } from '../OpenApiDefinitionWidget';\n\nexport type ApiDefinitionWidget = {\n type: string;\n title: string;\n component: (definition: string) => React.ReactElement;\n rawLanguage?: string;\n};\n\nexport function defaultDefinitionWidgets(): ApiDefinitionWidget[] {\n return [\n {\n type: 'openapi',\n title: 'OpenAPI',\n rawLanguage: 'yaml',\n component: definition => (\n <OpenApiDefinitionWidget definition={definition} />\n ),\n },\n {\n type: 'asyncapi',\n title: 'AsyncAPI',\n rawLanguage: 'yaml',\n component: definition => (\n <AsyncApiDefinitionWidget definition={definition} />\n ),\n },\n {\n type: 'graphql',\n title: 'GraphQL',\n rawLanguage: 'graphql',\n component: definition => (\n <GraphQlDefinitionWidget definition={definition} />\n ),\n },\n ];\n}\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApiEntity } from '@backstage/catalog-model';\nimport React from 'react';\nimport { apiDocsConfigRef } from '../../config';\nimport { useApi } from '@backstage/core-plugin-api';\n\nexport const ApiTypeTitle = ({ apiEntity }: { apiEntity: ApiEntity }) => {\n const config = useApi(apiDocsConfigRef);\n const definition = config.getApiDefinitionWidget(apiEntity);\n const type = definition ? definition.title : apiEntity.spec.type;\n\n return <span>{type}</span>;\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApiEntity } from '@backstage/catalog-model';\nimport { EntityTable } from '@backstage/plugin-catalog-react';\nimport React from 'react';\nimport { ApiTypeTitle } from '../ApiDefinitionCard';\nimport { TableColumn } from '@backstage/core-components';\n\nexport function createSpecApiTypeColumn(): TableColumn<ApiEntity> {\n return {\n title: 'Type',\n field: 'spec.type',\n render: entity => <ApiTypeTitle apiEntity={entity} />,\n };\n}\n\n// TODO: This could be moved to plugin-catalog-react if we wouldn't have a\n// special createSpecApiTypeColumn. But this is required to use ApiTypeTitle to\n// resolve the display name of an entity. Is the display name really worth it?\n\nexport const apiEntityColumns: TableColumn<ApiEntity>[] = [\n EntityTable.columns.createEntityRefColumn({ defaultKind: 'API' }),\n EntityTable.columns.createSystemColumn(),\n EntityTable.columns.createOwnerColumn(),\n createSpecApiTypeColumn(),\n EntityTable.columns.createSpecLifecycleColumn(),\n EntityTable.columns.createMetadataDescriptionColumn(),\n];\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ApiEntity,\n Entity,\n RELATION_CONSUMES_API,\n} from '@backstage/catalog-model';\nimport { Typography } from '@material-ui/core';\nimport {\n EntityTable,\n useEntity,\n useRelatedEntities,\n} from '@backstage/plugin-catalog-react';\nimport React from 'react';\nimport { apiEntityColumns } from './presets';\nimport {\n CodeSnippet,\n InfoCard,\n Link,\n Progress,\n WarningPanel,\n} from '@backstage/core-components';\n\ntype Props = {\n /** @deprecated The entity is now grabbed from context instead */\n entity?: Entity;\n variant?: 'gridItem';\n};\n\nexport const ConsumedApisCard = ({ variant = 'gridItem' }: Props) => {\n const { entity } = useEntity();\n const { entities, loading, error } = useRelatedEntities(entity, {\n type: RELATION_CONSUMES_API,\n });\n\n if (loading) {\n return (\n <InfoCard variant={variant} title=\"Consumed APIs\">\n <Progress />\n </InfoCard>\n );\n }\n\n if (error || !entities) {\n return (\n <InfoCard variant={variant} title=\"Consumed APIs\">\n <WarningPanel\n severity=\"error\"\n title=\"Could not load APIs\"\n message={<CodeSnippet text={`${error}`} language=\"text\" />}\n />\n </InfoCard>\n );\n }\n\n return (\n <EntityTable\n title=\"Consumed APIs\"\n variant={variant}\n emptyContent={\n <div style={{ textAlign: 'center' }}>\n <Typography variant=\"body1\">\n This {entity.kind.toLocaleLowerCase('en-US')} does not consume any\n APIs.\n </Typography>\n <Typography variant=\"body2\">\n <Link to=\"https://backstage.io/docs/features/software-catalog/descriptor-format#specconsumesapis-optional\">\n Learn how to change this.\n </Link>\n </Typography>\n </div>\n }\n columns={apiEntityColumns}\n entities={entities as ApiEntity[]}\n />\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApiEntity, RELATION_HAS_PART } from '@backstage/catalog-model';\nimport { Typography } from '@material-ui/core';\nimport {\n EntityTable,\n useEntity,\n useRelatedEntities,\n} from '@backstage/plugin-catalog-react';\nimport React from 'react';\nimport { createSpecApiTypeColumn } from './presets';\nimport {\n CodeSnippet,\n InfoCard,\n Link,\n Progress,\n TableColumn,\n WarningPanel,\n} from '@backstage/core-components';\n\ntype Props = {\n variant?: 'gridItem';\n};\n\nconst columns: TableColumn<ApiEntity>[] = [\n EntityTable.columns.createEntityRefColumn({ defaultKind: 'API' }),\n EntityTable.columns.createOwnerColumn(),\n createSpecApiTypeColumn(),\n EntityTable.columns.createSpecLifecycleColumn(),\n EntityTable.columns.createMetadataDescriptionColumn(),\n];\n\nexport const HasApisCard = ({ variant = 'gridItem' }: Props) => {\n const { entity } = useEntity();\n const { entities, loading, error } = useRelatedEntities(entity, {\n type: RELATION_HAS_PART,\n kind: 'API',\n });\n\n if (loading) {\n return (\n <InfoCard variant={variant} title=\"APIs\">\n <Progress />\n </InfoCard>\n );\n }\n\n if (error || !entities) {\n return (\n <InfoCard variant={variant} title=\"APIs\">\n <WarningPanel\n severity=\"error\"\n title=\"Could not load APIs\"\n message={<CodeSnippet text={`${error}`} language=\"text\" />}\n />\n </InfoCard>\n );\n }\n\n return (\n <EntityTable\n title=\"APIs\"\n variant={variant}\n emptyContent={\n <div style={{ textAlign: 'center' }}>\n <Typography variant=\"body1\">\n This {entity.kind.toLocaleLowerCase('en-US')} does not contain any\n APIs.\n </Typography>\n <Typography variant=\"body2\">\n <Link to=\"https://backstage.io/docs/features/software-catalog/descriptor-format#kind-api\">\n Learn how to change this.\n </Link>\n </Typography>\n </div>\n }\n columns={columns}\n entities={entities as ApiEntity[]}\n />\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ApiEntity,\n Entity,\n RELATION_PROVIDES_API,\n} from '@backstage/catalog-model';\nimport { Typography } from '@material-ui/core';\nimport {\n EntityTable,\n useEntity,\n useRelatedEntities,\n} from '@backstage/plugin-catalog-react';\nimport React from 'react';\nimport { apiEntityColumns } from './presets';\nimport {\n CodeSnippet,\n InfoCard,\n Link,\n Progress,\n WarningPanel,\n} from '@backstage/core-components';\n\ntype Props = {\n /** @deprecated The entity is now grabbed from context instead */\n entity?: Entity;\n variant?: 'gridItem';\n};\n\nexport const ProvidedApisCard = ({ variant = 'gridItem' }: Props) => {\n const { entity } = useEntity();\n const { entities, loading, error } = useRelatedEntities(entity, {\n type: RELATION_PROVIDES_API,\n });\n\n if (loading) {\n return (\n <InfoCard variant={variant} title=\"Provided APIs\">\n <Progress />\n </InfoCard>\n );\n }\n\n if (error || !entities) {\n return (\n <InfoCard variant={variant} title=\"Provided APIs\">\n <WarningPanel\n severity=\"error\"\n title=\"Could not load APIs\"\n message={<CodeSnippet text={`${error}`} language=\"text\" />}\n />\n </InfoCard>\n );\n }\n\n return (\n <EntityTable\n title=\"Provided APIs\"\n variant={variant}\n emptyContent={\n <div style={{ textAlign: 'center' }}>\n <Typography variant=\"body1\">\n This {entity.kind.toLocaleLowerCase('en-US')} does not provide any\n APIs.\n </Typography>\n <Typography variant=\"body2\">\n <Link to=\"https://backstage.io/docs/features/software-catalog/descriptor-format#specprovidesapis-optional\">\n Learn how to change this.\n </Link>\n </Typography>\n </div>\n }\n columns={apiEntityColumns}\n entities={entities as ApiEntity[]}\n />\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ComponentEntity,\n Entity,\n RELATION_API_CONSUMED_BY,\n} from '@backstage/catalog-model';\nimport { Typography } from '@material-ui/core';\nimport {\n EntityTable,\n useEntity,\n useRelatedEntities,\n} from '@backstage/plugin-catalog-react';\nimport React from 'react';\nimport {\n CodeSnippet,\n InfoCard,\n Link,\n Progress,\n WarningPanel,\n} from '@backstage/core-components';\n\ntype Props = {\n /** @deprecated The entity is now grabbed from context instead */\n entity?: Entity;\n variant?: 'gridItem';\n};\n\nexport const ConsumingComponentsCard = ({ variant = 'gridItem' }: Props) => {\n const { entity } = useEntity();\n const { entities, loading, error } = useRelatedEntities(entity, {\n type: RELATION_API_CONSUMED_BY,\n });\n\n if (loading) {\n return (\n <InfoCard variant={variant} title=\"Consumers\">\n <Progress />\n </InfoCard>\n );\n }\n\n if (error || !entities) {\n return (\n <InfoCard variant={variant} title=\"Consumers\">\n <WarningPanel\n severity=\"error\"\n title=\"Could not load components\"\n message={<CodeSnippet text={`${error}`} language=\"text\" />}\n />\n </InfoCard>\n );\n }\n\n return (\n <EntityTable\n title=\"Consumers\"\n variant={variant}\n emptyContent={\n <div style={{ textAlign: 'center' }}>\n <Typography variant=\"body1\">\n No component consumes this API.\n </Typography>\n <Typography variant=\"body2\">\n <Link to=\"https://backstage.io/docs/features/software-catalog/descriptor-format#specconsumesapis-optional\">\n Learn how to change this.\n </Link>\n </Typography>\n </div>\n }\n columns={EntityTable.componentEntityColumns}\n entities={entities as ComponentEntity[]}\n />\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ComponentEntity,\n Entity,\n RELATION_API_PROVIDED_BY,\n} from '@backstage/catalog-model';\nimport { Typography } from '@material-ui/core';\nimport {\n EntityTable,\n useEntity,\n useRelatedEntities,\n} from '@backstage/plugin-catalog-react';\nimport React from 'react';\nimport {\n CodeSnippet,\n InfoCard,\n Link,\n Progress,\n WarningPanel,\n} from '@backstage/core-components';\n\ntype Props = {\n /** @deprecated The entity is now grabbed from context instead */\n entity?: Entity;\n variant?: 'gridItem';\n};\n\nexport const ProvidingComponentsCard = ({ variant = 'gridItem' }: Props) => {\n const { entity } = useEntity();\n const { entities, loading, error } = useRelatedEntities(entity, {\n type: RELATION_API_PROVIDED_BY,\n });\n\n if (loading) {\n return (\n <InfoCard variant={variant} title=\"Providers\">\n <Progress />\n </InfoCard>\n );\n }\n\n if (error || !entities) {\n return (\n <InfoCard variant={variant} title=\"Providers\">\n <WarningPanel\n severity=\"error\"\n title=\"Could not load components\"\n message={<CodeSnippet text={`${error}`} language=\"text\" />}\n />\n </InfoCard>\n );\n }\n\n return (\n <EntityTable\n title=\"Providers\"\n variant={variant}\n emptyContent={\n <div style={{ textAlign: 'center' }}>\n <Typography variant=\"body1\">\n No component provides this API.\n </Typography>\n <Typography variant=\"body2\">\n <Link to=\"https://backstage.io/docs/features/software-catalog/descriptor-format#specprovidesapis-optional\">\n Learn how to change this.\n </Link>\n </Typography>\n </div>\n }\n columns={EntityTable.componentEntityColumns}\n entities={entities as ComponentEntity[]}\n />\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n createExternalRouteRef,\n createRouteRef,\n} from '@backstage/core-plugin-api';\n\nexport const rootRoute = createRouteRef({\n id: 'api-docs',\n});\n\nexport const createComponentRouteRef = createExternalRouteRef({\n id: 'create-component',\n optional: true,\n});\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApiEntity } from '@backstage/catalog-model';\nimport { defaultDefinitionWidgets } from './components/ApiDefinitionCard';\nimport { apiDocsConfigRef } from './config';\nimport { createComponentRouteRef, rootRoute } from './routes';\nimport {\n createApiFactory,\n createComponentExtension,\n createPlugin,\n createRoutableExtension,\n} from '@backstage/core-plugin-api';\n\nexport const apiDocsPlugin = createPlugin({\n id: 'api-docs',\n routes: {\n root: rootRoute,\n },\n apis: [\n createApiFactory({\n api: apiDocsConfigRef,\n deps: {},\n factory: () => {\n const definitionWidgets = defaultDefinitionWidgets();\n return {\n getApiDefinitionWidget: (apiEntity: ApiEntity) => {\n return definitionWidgets.find(d => d.type === apiEntity.spec.type);\n },\n };\n },\n }),\n ],\n externalRoutes: {\n createComponent: createComponentRouteRef,\n },\n});\n\nexport const ApiExplorerPage = apiDocsPlugin.provide(\n createRoutableExtension({\n name: 'ApiExplorerPage',\n component: () =>\n import('./components/ApiExplorerPage').then(m => m.ApiExplorerPage),\n mountPoint: rootRoute,\n }),\n);\n\nexport const EntityApiDefinitionCard = apiDocsPlugin.provide(\n createComponentExtension({\n name: 'EntityApiDefinitionCard',\n component: {\n lazy: () =>\n import('./components/ApiDefinitionCard').then(m => m.ApiDefinitionCard),\n },\n }),\n);\n\nexport const EntityConsumedApisCard = apiDocsPlugin.provide(\n createComponentExtension({\n name: 'EntityConsumedApisCard',\n component: {\n lazy: () =>\n import('./components/ApisCards').then(m => m.ConsumedApisCard),\n },\n }),\n);\n\nexport const EntityConsumingComponentsCard = apiDocsPlugin.provide(\n createComponentExtension({\n name: 'EntityConsumingComponentsCard',\n component: {\n lazy: () =>\n import('./components/ComponentsCards').then(\n m => m.ConsumingComponentsCard,\n ),\n },\n }),\n);\n\nexport const EntityProvidedApisCard = apiDocsPlugin.provide(\n createComponentExtension({\n name: 'EntityProvidedApisCard',\n component: {\n lazy: () =>\n import('./components/ApisCards').then(m => m.ProvidedApisCard),\n },\n }),\n);\n\nexport const EntityProvidingComponentsCard = apiDocsPlugin.provide(\n createComponentExtension({\n name: 'EntityProvidingComponentsCard',\n component: {\n lazy: () =>\n import('./components/ComponentsCards').then(\n m => m.ProvidingComponentsCard,\n ),\n },\n }),\n);\n\nexport const EntityHasApisCard = apiDocsPlugin.provide(\n createComponentExtension({\n name: 'EntityHasApisCard',\n component: {\n lazy: () => import('./components/ApisCards').then(m => m.HasApisCard),\n },\n }),\n);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index-c1d775ea.esm.js","sources":["../../src/config.ts","../../src/components/PlainApiDefinitionWidget/PlainApiDefinitionWidget.tsx","../../src/components/ApiDefinitionCard/ApiDefinitionCard.tsx","../../src/components/AsyncApiDefinitionWidget/AsyncApiDefinitionWidget.tsx","../../src/components/GraphQlDefinitionWidget/GraphQlDefinitionWidget.tsx","../../src/components/OpenApiDefinitionWidget/OpenApiDefinitionWidget.tsx","../../src/components/ApiDefinitionCard/ApiDefinitionWidget.tsx","../../src/components/ApiDefinitionCard/ApiTypeTitle.tsx","../../src/components/ApisCards/presets.tsx","../../src/components/ApisCards/ConsumedApisCard.tsx","../../src/components/ApisCards/HasApisCard.tsx","../../src/components/ApisCards/ProvidedApisCard.tsx","../../src/components/ComponentsCards/ConsumingComponentsCard.tsx","../../src/components/ComponentsCards/ProvidingComponentsCard.tsx","../../src/routes.ts","../../src/plugin.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApiEntity } from '@backstage/catalog-model';\nimport { ApiDefinitionWidget } from './components/ApiDefinitionCard/ApiDefinitionWidget';\nimport { createApiRef } from '@backstage/core-plugin-api';\n\nexport const apiDocsConfigRef = createApiRef<ApiDocsConfig>({\n id: 'plugin.api-docs.config',\n description: 'Used to configure api-docs widgets',\n});\n\nexport interface ApiDocsConfig {\n getApiDefinitionWidget: (\n apiEntity: ApiEntity,\n ) => ApiDefinitionWidget | undefined;\n}\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { CodeSnippet } from '@backstage/core-components';\n\nexport type PlainApiDefinitionWidgetProps = {\n definition: any;\n language: string;\n};\n\nexport const PlainApiDefinitionWidget = (\n props: PlainApiDefinitionWidgetProps,\n) => {\n return (\n <CodeSnippet\n text={props.definition}\n language={props.language}\n showCopyCodeButton\n />\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApiEntity } from '@backstage/catalog-model';\nimport { useEntity } from '@backstage/plugin-catalog-react';\nimport { Alert } from '@material-ui/lab';\nimport React from 'react';\nimport { apiDocsConfigRef } from '../../config';\nimport { PlainApiDefinitionWidget } from '../PlainApiDefinitionWidget';\n\nimport { CardTab, TabbedCard } from '@backstage/core-components';\nimport { useApi } from '@backstage/core-plugin-api';\n\ntype Props = {\n /** @deprecated The entity is now grabbed from context instead */\n apiEntity?: ApiEntity;\n};\n\nexport const ApiDefinitionCard = (_: Props) => {\n const { entity } = useEntity<ApiEntity>();\n const config = useApi(apiDocsConfigRef);\n const { getApiDefinitionWidget } = config;\n\n if (!entity) {\n return <Alert severity=\"error\">Could not fetch the API</Alert>;\n }\n\n const definitionWidget = getApiDefinitionWidget(entity);\n\n if (definitionWidget) {\n return (\n <TabbedCard title={entity.metadata.name}>\n <CardTab label={definitionWidget.title} key=\"widget\">\n {definitionWidget.component(entity.spec.definition)}\n </CardTab>\n <CardTab label=\"Raw\" key=\"raw\">\n <PlainApiDefinitionWidget\n definition={entity.spec.definition}\n language={definitionWidget.rawLanguage || entity.spec.type}\n />\n </CardTab>\n </TabbedCard>\n );\n }\n\n return (\n <TabbedCard\n title={entity.metadata.name}\n children={[\n // Has to be an array, otherwise typescript doesn't like that this has only a single child\n <CardTab label={entity.spec.type} key=\"raw\">\n <PlainApiDefinitionWidget\n definition={entity.spec.definition}\n language={entity.spec.type}\n />\n </CardTab>,\n ]}\n />\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Progress } from '@backstage/core-components';\nimport React, { Suspense } from 'react';\n\n// The asyncapi component and related CSS has a significant size, only load it\n// if the element is actually used.\nconst LazyAsyncApiDefinition = React.lazy(() =>\n import('./AsyncApiDefinition').then(m => ({\n default: m.AsyncApiDefinition,\n })),\n);\n\nexport type AsyncApiDefinitionWidgetProps = {\n definition: string;\n};\n\nexport const AsyncApiDefinitionWidget = (\n props: AsyncApiDefinitionWidgetProps,\n) => {\n return (\n <Suspense fallback={<Progress />}>\n <LazyAsyncApiDefinition {...props} />\n </Suspense>\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Progress } from '@backstage/core-components';\nimport React, { Suspense } from 'react';\n\n// The graphql component, graphql and related CSS has a significant size, only\n// load it if the element is actually used.\nconst LazyGraphQlDefinition = React.lazy(() =>\n import('./GraphQlDefinition').then(m => ({\n default: m.GraphQlDefinition,\n })),\n);\n\nexport type GraphQlDefinitionWidgetProps = {\n definition: string;\n};\n\nexport const GraphQlDefinitionWidget = (\n props: GraphQlDefinitionWidgetProps,\n) => {\n return (\n <Suspense fallback={<Progress />}>\n <LazyGraphQlDefinition {...props} />\n </Suspense>\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Progress } from '@backstage/core-components';\nimport React, { Suspense } from 'react';\n\n// The swagger-ui component and related CSS has a significant size, only load it\n// if the element is actually used.\nconst LazyOpenApiDefinition = React.lazy(() =>\n import('./OpenApiDefinition').then(m => ({\n default: m.OpenApiDefinition,\n })),\n);\n\nexport type OpenApiDefinitionWidgetProps = {\n definition: string;\n};\n\nexport const OpenApiDefinitionWidget = (\n props: OpenApiDefinitionWidgetProps,\n) => {\n return (\n <Suspense fallback={<Progress />}>\n <LazyOpenApiDefinition {...props} />\n </Suspense>\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport React from 'react';\nimport { AsyncApiDefinitionWidget } from '../AsyncApiDefinitionWidget';\nimport { GraphQlDefinitionWidget } from '../GraphQlDefinitionWidget';\nimport { OpenApiDefinitionWidget } from '../OpenApiDefinitionWidget';\n\nexport type ApiDefinitionWidget = {\n type: string;\n title: string;\n component: (definition: string) => React.ReactElement;\n rawLanguage?: string;\n};\n\nexport function defaultDefinitionWidgets(): ApiDefinitionWidget[] {\n return [\n {\n type: 'openapi',\n title: 'OpenAPI',\n rawLanguage: 'yaml',\n component: definition => (\n <OpenApiDefinitionWidget definition={definition} />\n ),\n },\n {\n type: 'asyncapi',\n title: 'AsyncAPI',\n rawLanguage: 'yaml',\n component: definition => (\n <AsyncApiDefinitionWidget definition={definition} />\n ),\n },\n {\n type: 'graphql',\n title: 'GraphQL',\n rawLanguage: 'graphql',\n component: definition => (\n <GraphQlDefinitionWidget definition={definition} />\n ),\n },\n ];\n}\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApiEntity } from '@backstage/catalog-model';\nimport React from 'react';\nimport { apiDocsConfigRef } from '../../config';\nimport { useApi } from '@backstage/core-plugin-api';\n\nexport const ApiTypeTitle = ({ apiEntity }: { apiEntity: ApiEntity }) => {\n const config = useApi(apiDocsConfigRef);\n const definition = config.getApiDefinitionWidget(apiEntity);\n const type = definition ? definition.title : apiEntity.spec.type;\n\n return <span>{type}</span>;\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApiEntity } from '@backstage/catalog-model';\nimport { EntityTable } from '@backstage/plugin-catalog-react';\nimport React from 'react';\nimport { ApiTypeTitle } from '../ApiDefinitionCard';\nimport { TableColumn } from '@backstage/core-components';\n\nexport function createSpecApiTypeColumn(): TableColumn<ApiEntity> {\n return {\n title: 'Type',\n field: 'spec.type',\n render: entity => <ApiTypeTitle apiEntity={entity} />,\n };\n}\n\n// TODO: This could be moved to plugin-catalog-react if we wouldn't have a\n// special createSpecApiTypeColumn. But this is required to use ApiTypeTitle to\n// resolve the display name of an entity. Is the display name really worth it?\n\nexport const apiEntityColumns: TableColumn<ApiEntity>[] = [\n EntityTable.columns.createEntityRefColumn({ defaultKind: 'API' }),\n EntityTable.columns.createSystemColumn(),\n EntityTable.columns.createOwnerColumn(),\n createSpecApiTypeColumn(),\n EntityTable.columns.createSpecLifecycleColumn(),\n EntityTable.columns.createMetadataDescriptionColumn(),\n];\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ApiEntity,\n Entity,\n RELATION_CONSUMES_API,\n} from '@backstage/catalog-model';\nimport { Typography } from '@material-ui/core';\nimport {\n EntityTable,\n useEntity,\n useRelatedEntities,\n} from '@backstage/plugin-catalog-react';\nimport React from 'react';\nimport { apiEntityColumns } from './presets';\nimport {\n CodeSnippet,\n InfoCard,\n Link,\n Progress,\n WarningPanel,\n} from '@backstage/core-components';\n\ntype Props = {\n /** @deprecated The entity is now grabbed from context instead */\n entity?: Entity;\n variant?: 'gridItem';\n};\n\nexport const ConsumedApisCard = ({ variant = 'gridItem' }: Props) => {\n const { entity } = useEntity();\n const { entities, loading, error } = useRelatedEntities(entity, {\n type: RELATION_CONSUMES_API,\n });\n\n if (loading) {\n return (\n <InfoCard variant={variant} title=\"Consumed APIs\">\n <Progress />\n </InfoCard>\n );\n }\n\n if (error || !entities) {\n return (\n <InfoCard variant={variant} title=\"Consumed APIs\">\n <WarningPanel\n severity=\"error\"\n title=\"Could not load APIs\"\n message={<CodeSnippet text={`${error}`} language=\"text\" />}\n />\n </InfoCard>\n );\n }\n\n return (\n <EntityTable\n title=\"Consumed APIs\"\n variant={variant}\n emptyContent={\n <div style={{ textAlign: 'center' }}>\n <Typography variant=\"body1\">\n This {entity.kind.toLocaleLowerCase('en-US')} does not consume any\n APIs.\n </Typography>\n <Typography variant=\"body2\">\n <Link to=\"https://backstage.io/docs/features/software-catalog/descriptor-format#specconsumesapis-optional\">\n Learn how to change this.\n </Link>\n </Typography>\n </div>\n }\n columns={apiEntityColumns}\n entities={entities as ApiEntity[]}\n />\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApiEntity, RELATION_HAS_PART } from '@backstage/catalog-model';\nimport { Typography } from '@material-ui/core';\nimport {\n EntityTable,\n useEntity,\n useRelatedEntities,\n} from '@backstage/plugin-catalog-react';\nimport React from 'react';\nimport { createSpecApiTypeColumn } from './presets';\nimport {\n CodeSnippet,\n InfoCard,\n Link,\n Progress,\n TableColumn,\n WarningPanel,\n} from '@backstage/core-components';\n\ntype Props = {\n variant?: 'gridItem';\n};\n\nconst columns: TableColumn<ApiEntity>[] = [\n EntityTable.columns.createEntityRefColumn({ defaultKind: 'API' }),\n EntityTable.columns.createOwnerColumn(),\n createSpecApiTypeColumn(),\n EntityTable.columns.createSpecLifecycleColumn(),\n EntityTable.columns.createMetadataDescriptionColumn(),\n];\n\nexport const HasApisCard = ({ variant = 'gridItem' }: Props) => {\n const { entity } = useEntity();\n const { entities, loading, error } = useRelatedEntities(entity, {\n type: RELATION_HAS_PART,\n kind: 'API',\n });\n\n if (loading) {\n return (\n <InfoCard variant={variant} title=\"APIs\">\n <Progress />\n </InfoCard>\n );\n }\n\n if (error || !entities) {\n return (\n <InfoCard variant={variant} title=\"APIs\">\n <WarningPanel\n severity=\"error\"\n title=\"Could not load APIs\"\n message={<CodeSnippet text={`${error}`} language=\"text\" />}\n />\n </InfoCard>\n );\n }\n\n return (\n <EntityTable\n title=\"APIs\"\n variant={variant}\n emptyContent={\n <div style={{ textAlign: 'center' }}>\n <Typography variant=\"body1\">\n This {entity.kind.toLocaleLowerCase('en-US')} does not contain any\n APIs.\n </Typography>\n <Typography variant=\"body2\">\n <Link to=\"https://backstage.io/docs/features/software-catalog/descriptor-format#kind-api\">\n Learn how to change this.\n </Link>\n </Typography>\n </div>\n }\n columns={columns}\n entities={entities as ApiEntity[]}\n />\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ApiEntity,\n Entity,\n RELATION_PROVIDES_API,\n} from '@backstage/catalog-model';\nimport { Typography } from '@material-ui/core';\nimport {\n EntityTable,\n useEntity,\n useRelatedEntities,\n} from '@backstage/plugin-catalog-react';\nimport React from 'react';\nimport { apiEntityColumns } from './presets';\nimport {\n CodeSnippet,\n InfoCard,\n Link,\n Progress,\n WarningPanel,\n} from '@backstage/core-components';\n\ntype Props = {\n /** @deprecated The entity is now grabbed from context instead */\n entity?: Entity;\n variant?: 'gridItem';\n};\n\nexport const ProvidedApisCard = ({ variant = 'gridItem' }: Props) => {\n const { entity } = useEntity();\n const { entities, loading, error } = useRelatedEntities(entity, {\n type: RELATION_PROVIDES_API,\n });\n\n if (loading) {\n return (\n <InfoCard variant={variant} title=\"Provided APIs\">\n <Progress />\n </InfoCard>\n );\n }\n\n if (error || !entities) {\n return (\n <InfoCard variant={variant} title=\"Provided APIs\">\n <WarningPanel\n severity=\"error\"\n title=\"Could not load APIs\"\n message={<CodeSnippet text={`${error}`} language=\"text\" />}\n />\n </InfoCard>\n );\n }\n\n return (\n <EntityTable\n title=\"Provided APIs\"\n variant={variant}\n emptyContent={\n <div style={{ textAlign: 'center' }}>\n <Typography variant=\"body1\">\n This {entity.kind.toLocaleLowerCase('en-US')} does not provide any\n APIs.\n </Typography>\n <Typography variant=\"body2\">\n <Link to=\"https://backstage.io/docs/features/software-catalog/descriptor-format#specprovidesapis-optional\">\n Learn how to change this.\n </Link>\n </Typography>\n </div>\n }\n columns={apiEntityColumns}\n entities={entities as ApiEntity[]}\n />\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ComponentEntity,\n Entity,\n RELATION_API_CONSUMED_BY,\n} from '@backstage/catalog-model';\nimport { Typography } from '@material-ui/core';\nimport {\n EntityTable,\n useEntity,\n useRelatedEntities,\n} from '@backstage/plugin-catalog-react';\nimport React from 'react';\nimport {\n CodeSnippet,\n InfoCard,\n Link,\n Progress,\n WarningPanel,\n} from '@backstage/core-components';\n\ntype Props = {\n /** @deprecated The entity is now grabbed from context instead */\n entity?: Entity;\n variant?: 'gridItem';\n};\n\nexport const ConsumingComponentsCard = ({ variant = 'gridItem' }: Props) => {\n const { entity } = useEntity();\n const { entities, loading, error } = useRelatedEntities(entity, {\n type: RELATION_API_CONSUMED_BY,\n });\n\n if (loading) {\n return (\n <InfoCard variant={variant} title=\"Consumers\">\n <Progress />\n </InfoCard>\n );\n }\n\n if (error || !entities) {\n return (\n <InfoCard variant={variant} title=\"Consumers\">\n <WarningPanel\n severity=\"error\"\n title=\"Could not load components\"\n message={<CodeSnippet text={`${error}`} language=\"text\" />}\n />\n </InfoCard>\n );\n }\n\n return (\n <EntityTable\n title=\"Consumers\"\n variant={variant}\n emptyContent={\n <div style={{ textAlign: 'center' }}>\n <Typography variant=\"body1\">\n No component consumes this API.\n </Typography>\n <Typography variant=\"body2\">\n <Link to=\"https://backstage.io/docs/features/software-catalog/descriptor-format#specconsumesapis-optional\">\n Learn how to change this.\n </Link>\n </Typography>\n </div>\n }\n columns={EntityTable.componentEntityColumns}\n entities={entities as ComponentEntity[]}\n />\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ComponentEntity,\n Entity,\n RELATION_API_PROVIDED_BY,\n} from '@backstage/catalog-model';\nimport { Typography } from '@material-ui/core';\nimport {\n EntityTable,\n useEntity,\n useRelatedEntities,\n} from '@backstage/plugin-catalog-react';\nimport React from 'react';\nimport {\n CodeSnippet,\n InfoCard,\n Link,\n Progress,\n WarningPanel,\n} from '@backstage/core-components';\n\ntype Props = {\n /** @deprecated The entity is now grabbed from context instead */\n entity?: Entity;\n variant?: 'gridItem';\n};\n\nexport const ProvidingComponentsCard = ({ variant = 'gridItem' }: Props) => {\n const { entity } = useEntity();\n const { entities, loading, error } = useRelatedEntities(entity, {\n type: RELATION_API_PROVIDED_BY,\n });\n\n if (loading) {\n return (\n <InfoCard variant={variant} title=\"Providers\">\n <Progress />\n </InfoCard>\n );\n }\n\n if (error || !entities) {\n return (\n <InfoCard variant={variant} title=\"Providers\">\n <WarningPanel\n severity=\"error\"\n title=\"Could not load components\"\n message={<CodeSnippet text={`${error}`} language=\"text\" />}\n />\n </InfoCard>\n );\n }\n\n return (\n <EntityTable\n title=\"Providers\"\n variant={variant}\n emptyContent={\n <div style={{ textAlign: 'center' }}>\n <Typography variant=\"body1\">\n No component provides this API.\n </Typography>\n <Typography variant=\"body2\">\n <Link to=\"https://backstage.io/docs/features/software-catalog/descriptor-format#specprovidesapis-optional\">\n Learn how to change this.\n </Link>\n </Typography>\n </div>\n }\n columns={EntityTable.componentEntityColumns}\n entities={entities as ComponentEntity[]}\n />\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n createExternalRouteRef,\n createRouteRef,\n} from '@backstage/core-plugin-api';\n\nexport const rootRoute = createRouteRef({\n id: 'api-docs',\n});\n\nexport const createComponentRouteRef = createExternalRouteRef({\n id: 'create-component',\n optional: true,\n});\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApiEntity } from '@backstage/catalog-model';\nimport { defaultDefinitionWidgets } from './components/ApiDefinitionCard';\nimport { apiDocsConfigRef } from './config';\nimport { createComponentRouteRef, rootRoute } from './routes';\nimport {\n createApiFactory,\n createComponentExtension,\n createPlugin,\n createRoutableExtension,\n} from '@backstage/core-plugin-api';\n\nexport const apiDocsPlugin = createPlugin({\n id: 'api-docs',\n routes: {\n root: rootRoute,\n },\n apis: [\n createApiFactory({\n api: apiDocsConfigRef,\n deps: {},\n factory: () => {\n const definitionWidgets = defaultDefinitionWidgets();\n return {\n getApiDefinitionWidget: (apiEntity: ApiEntity) => {\n return definitionWidgets.find(d => d.type === apiEntity.spec.type);\n },\n };\n },\n }),\n ],\n externalRoutes: {\n createComponent: createComponentRouteRef,\n },\n});\n\nexport const ApiExplorerPage = apiDocsPlugin.provide(\n createRoutableExtension({\n name: 'ApiExplorerPage',\n component: () =>\n import('./components/ApiExplorerPage').then(m => m.ApiExplorerPage),\n mountPoint: rootRoute,\n }),\n);\n\nexport const EntityApiDefinitionCard = apiDocsPlugin.provide(\n createComponentExtension({\n name: 'EntityApiDefinitionCard',\n component: {\n lazy: () =>\n import('./components/ApiDefinitionCard').then(m => m.ApiDefinitionCard),\n },\n }),\n);\n\nexport const EntityConsumedApisCard = apiDocsPlugin.provide(\n createComponentExtension({\n name: 'EntityConsumedApisCard',\n component: {\n lazy: () =>\n import('./components/ApisCards').then(m => m.ConsumedApisCard),\n },\n }),\n);\n\nexport const EntityConsumingComponentsCard = apiDocsPlugin.provide(\n createComponentExtension({\n name: 'EntityConsumingComponentsCard',\n component: {\n lazy: () =>\n import('./components/ComponentsCards').then(\n m => m.ConsumingComponentsCard,\n ),\n },\n }),\n);\n\nexport const EntityProvidedApisCard = apiDocsPlugin.provide(\n createComponentExtension({\n name: 'EntityProvidedApisCard',\n component: {\n lazy: () =>\n import('./components/ApisCards').then(m => m.ProvidedApisCard),\n },\n }),\n);\n\nexport const EntityProvidingComponentsCard = apiDocsPlugin.provide(\n createComponentExtension({\n name: 'EntityProvidingComponentsCard',\n component: {\n lazy: () =>\n import('./components/ComponentsCards').then(\n m => m.ProvidingComponentsCard,\n ),\n },\n }),\n);\n\nexport const EntityHasApisCard = apiDocsPlugin.provide(\n createComponentExtension({\n name: 'EntityHasApisCard',\n component: {\n lazy: () => import('./components/ApisCards').then(m => m.HasApisCard),\n },\n }),\n);\n"],"names":[],"mappings":"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"}
package/dist/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- export { A as ApiDefinitionCard, h as ApiExplorerPage, a as ApiTypeTitle, n as AsyncApiDefinitionWidget, C as ConsumedApisCard, b as ConsumingComponentsCard, E as EntityApiDefinitionCard, i as EntityConsumedApisCard, j as EntityConsumingComponentsCard, k as EntityHasApisCard, l as EntityProvidedApisCard, m as EntityProvidingComponentsCard, H as HasApisCard, O as OpenApiDefinitionWidget, o as PlainApiDefinitionWidget, P as ProvidedApisCard, e as ProvidingComponentsCard, f as apiDocsConfigRef, g as apiDocsPlugin, d as defaultDefinitionWidgets, g as plugin } from './esm/index-ac0c1f1e.esm.js';
1
+ export { A as ApiDefinitionCard, h as ApiExplorerPage, a as ApiTypeTitle, n as AsyncApiDefinitionWidget, C as ConsumedApisCard, b as ConsumingComponentsCard, E as EntityApiDefinitionCard, i as EntityConsumedApisCard, j as EntityConsumingComponentsCard, k as EntityHasApisCard, l as EntityProvidedApisCard, m as EntityProvidingComponentsCard, H as HasApisCard, O as OpenApiDefinitionWidget, o as PlainApiDefinitionWidget, P as ProvidedApisCard, e as ProvidingComponentsCard, f as apiDocsConfigRef, g as apiDocsPlugin, d as defaultDefinitionWidgets, g as plugin } from './esm/index-c1d775ea.esm.js';
2
2
  import '@backstage/plugin-catalog-react';
3
3
  import '@material-ui/lab';
4
4
  import 'react';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@backstage/plugin-api-docs",
3
3
  "description": "A Backstage plugin that helps represent API entities in the frontend",
4
- "version": "0.6.15",
4
+ "version": "0.6.16",
5
5
  "main": "dist/index.esm.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "license": "Apache-2.0",
@@ -32,11 +32,11 @@
32
32
  "dependencies": {
33
33
  "@asyncapi/react-component": "^0.23.0",
34
34
  "@backstage/catalog-model": "^0.9.7",
35
- "@backstage/core-components": "^0.7.5",
36
- "@backstage/core-plugin-api": "^0.2.1",
35
+ "@backstage/core-components": "^0.7.6",
36
+ "@backstage/core-plugin-api": "^0.2.2",
37
37
  "@backstage/plugin-catalog": "^0.7.3",
38
38
  "@backstage/plugin-catalog-react": "^0.6.4",
39
- "@backstage/theme": "^0.2.13",
39
+ "@backstage/theme": "^0.2.14",
40
40
  "@material-ui/core": "^4.12.2",
41
41
  "@material-ui/icons": "^4.9.1",
42
42
  "@material-ui/lab": "4.0.0-alpha.57",
@@ -53,8 +53,8 @@
53
53
  "swagger-ui-react": "^4.0.0-rc.3"
54
54
  },
55
55
  "devDependencies": {
56
- "@backstage/cli": "^0.9.1",
57
- "@backstage/core-app-api": "^0.1.23",
56
+ "@backstage/cli": "^0.10.0",
57
+ "@backstage/core-app-api": "^0.1.24",
58
58
  "@backstage/dev-utils": "^0.2.13",
59
59
  "@backstage/test-utils": "^0.1.23",
60
60
  "@testing-library/jest-dom": "^5.10.1",
@@ -69,5 +69,5 @@
69
69
  "files": [
70
70
  "dist"
71
71
  ],
72
- "gitHead": "85c127e436a24140bb3606f17f034f82aa9c7c0d"
72
+ "gitHead": "a05e7081b805006e3f0b2960a08a7753357f532f"
73
73
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"OpenApiDefinition-2b13c691.esm.js","sources":["../../src/components/OpenApiDefinitionWidget/OpenApiDefinition.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport React, { useEffect, useState } from 'react';\nimport SwaggerUI from 'swagger-ui-react';\nimport 'swagger-ui-react/swagger-ui.css';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n '& .swagger-ui': {\n fontFamily: 'inherit',\n color: theme.palette.text.primary,\n\n [`& .info h1,\n .info h2,\n .info h3,\n .info h4,\n .info h5,\n .info h6`]: {\n fontFamily: 'inherit',\n color: theme.palette.text.primary,\n },\n [`& .scheme-container`]: {\n backgroundColor: theme.palette.background.default,\n },\n [`& .opblock-tag,\n .opblock-tag small,\n table thead tr td,\n table thead tr th`]: {\n fontFamily: 'inherit',\n color: theme.palette.text.primary,\n borderColor: theme.palette.divider,\n },\n [`& section.models,\n section.models.is-open h4`]: {\n borderColor: theme.palette.divider,\n },\n [`& .opblock .opblock-summary-description,\n .parameter__type,\n table.headers td,\n .model-title,\n .model .property.primitive,\n section h3`]: {\n fontFamily: 'inherit',\n color: theme.palette.text.secondary,\n },\n [`& .opblock .opblock-summary-operation-id, \n .opblock .opblock-summary-path,\n .opblock .opblock-summary-path__deprecated,\n .opblock h4,\n .opblock h5,\n .opblock a,\n .opblock li,\n .parameter__name,\n .response-col_status,\n .response-col_links,\n .opblock-section-header .btn,\n .tab li,\n .info li,\n .info p,\n .info table,\n section.models h4,\n .info .title,\n table.model tr.description,\n .property-row`]: {\n fontFamily: 'inherit',\n color: theme.palette.text.primary,\n },\n [`& .opblock .opblock-section-header, \n .model-box,\n section.models .model-container`]: {\n background: theme.palette.background.default,\n },\n [`& .prop-format,\n .parameter__in`]: {\n color: theme.palette.text.disabled,\n },\n [`& .opblock-description-wrapper p,\n .opblock-description-wrapper li,\n .opblock-external-docs-wrapper p,\n .opblock-title_normal p,\n .response-control-media-type__accept-message,\n .opblock .opblock-section-header>label,\n .scheme-container .schemes>label,\n .info .base-url,\n .model`]: {\n color: theme.palette.text.hint,\n },\n [`& .parameter__name.required:after`]: {\n color: theme.palette.warning.dark,\n },\n [`& .prop-type`]: {\n color: theme.palette.primary.main,\n },\n },\n },\n}));\n\nexport type OpenApiDefinitionProps = {\n definition: string;\n};\n\nexport const OpenApiDefinition = ({ definition }: OpenApiDefinitionProps) => {\n const classes = useStyles();\n\n // Due to a bug in the swagger-ui-react component, the component needs\n // to be created without content first.\n const [def, setDef] = useState('');\n\n useEffect(() => {\n const timer = setTimeout(() => setDef(definition), 0);\n return () => clearTimeout(timer);\n }, [definition, setDef]);\n\n return (\n <div className={classes.root}>\n <SwaggerUI spec={def} deepLinking />\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;AAqBA,MAAM,YAAY,WAAW;AAAU,EACrC,MAAM;AAAA,IACJ,iBAAiB;AAAA,MACf,YAAY;AAAA,MACZ,OAAO,MAAM,QAAQ,KAAK;AAAA,OAEzB;AAAA;AAAA;AAAA;AAAA;AAAA,sBAKe;AAAA,QACd,YAAY;AAAA,QACZ,OAAO,MAAM,QAAQ,KAAK;AAAA;AAAA,OAE3B,wBAAwB;AAAA,QACvB,iBAAiB,MAAM,QAAQ,WAAW;AAAA;AAAA,OAE3C;AAAA;AAAA;AAAA,+BAGwB;AAAA,QACvB,YAAY;AAAA,QACZ,OAAO,MAAM,QAAQ,KAAK;AAAA,QAC1B,aAAa,MAAM,QAAQ;AAAA;AAAA,OAE5B;AAAA,uCACgC;AAAA,QAC/B,aAAa,MAAM,QAAQ;AAAA;AAAA,OAE5B;AAAA;AAAA;AAAA;AAAA;AAAA,wBAKiB;AAAA,QAChB,YAAY;AAAA,QACZ,OAAO,MAAM,QAAQ,KAAK;AAAA;AAAA,OAE3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAkBoB;AAAA,QACnB,YAAY;AAAA,QACZ,OAAO,MAAM,QAAQ,KAAK;AAAA;AAAA,OAE3B;AAAA;AAAA,6CAEsC;AAAA,QACrC,YAAY,MAAM,QAAQ,WAAW;AAAA;AAAA,OAEtC;AAAA,4BACqB;AAAA,QACpB,OAAO,MAAM,QAAQ,KAAK;AAAA;AAAA,OAE3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAQa;AAAA,QACZ,OAAO,MAAM,QAAQ,KAAK;AAAA;AAAA,OAE3B,sCAAsC;AAAA,QACrC,OAAO,MAAM,QAAQ,QAAQ;AAAA;AAAA,OAE9B,iBAAiB;AAAA,QAChB,OAAO,MAAM,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA;MAUxB,oBAAoB,CAAC,CAAE,gBAAyC;AAC3E,QAAM,UAAU;AAIhB,QAAM,CAAC,KAAK,UAAU,SAAS;AAE/B,YAAU,MAAM;AACd,UAAM,QAAQ,WAAW,MAAM,OAAO,aAAa;AACnD,WAAO,MAAM,aAAa;AAAA,KACzB,CAAC,YAAY;AAEhB,6CACG,OAAD;AAAA,IAAK,WAAW,QAAQ;AAAA,yCACrB,WAAD;AAAA,IAAW,MAAM;AAAA,IAAK,aAAW;AAAA;AAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-176f44ac.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-1ce8aa22.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-7242d6e8.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}