@pagerduty/backstage-plugin 0.17.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1488 -0
- package/dist/api/client.esm.js +22 -0
- package/dist/api/client.esm.js.map +1 -1
- package/dist/components/EntityPagerDutyCard/index.esm.js +1 -0
- package/dist/components/EntityPagerDutyCard/index.esm.js.map +1 -1
- package/dist/components/EntityPagerDutySmallCard/index.esm.js +1 -0
- package/dist/components/EntityPagerDutySmallCard/index.esm.js.map +1 -1
- package/dist/components/Errors/ServiceNotFoundError.esm.js +143 -16
- package/dist/components/Errors/ServiceNotFoundError.esm.js.map +1 -1
- package/dist/components/HomePagePagerDutyCard/Content.esm.js.map +1 -1
- package/dist/components/PagerDutyCard/index.esm.js +16 -2
- package/dist/components/PagerDutyCard/index.esm.js.map +1 -1
- package/dist/components/PagerDutySmallCard/index.esm.js +2 -2
- package/dist/components/PagerDutySmallCard/index.esm.js.map +1 -1
- package/dist/index.d.ts +28 -0
- package/dist/package.json.esm.js +2 -2
- package/package.json +19 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../../src/components/PagerDutySmallCard/index.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// eslint-disable-next-line @backstage/no-undeclared-imports\nimport { ReactNode, useCallback, useState } from 'react';\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n CardHeader\n} from '@material-ui/core';\nimport { Card, Flex, Grid, Text } from '@backstage/ui';\nimport useAsync from 'react-use/lib/useAsync';\nimport { pagerDutyApiRef, UnauthorizedError } from '../../api';\nimport { MissingTokenError, ServiceNotFoundError } from '../Errors';\nimport PDGreenImage from '../../assets/PD-Green.svg';\nimport PDWhiteImage from '../../assets/PD-White.svg';\n\nimport { useApi } from '@backstage/core-plugin-api';\nimport { NotFoundError } from '@backstage/errors';\nimport { Progress, InfoCard } from '@backstage/core-components';\nimport { PagerDutyEntity } from '../../types';\nimport { ForbiddenError } from '../Errors/ForbiddenError';\nimport {\n InsightsCard,\n OpenServiceButton,\n ServiceStandardsCard,\n StatusCard,\n TriggerIncidentButton,\n} from '../PagerDutyCardCommon';\nimport { createStyles, makeStyles, useTheme } from '@material-ui/core/styles';\nimport { BackstageTheme } from '@backstage/theme';\nimport { PagerDutyCardServiceResponse } from '../../api/types';\nimport { EscalationPolicy } from '../Escalation';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\n\nconst useStyles = makeStyles<BackstageTheme>(_ =>\n createStyles({\n subheaderTextStyle: {\n fontSize: '10px',\n paddingLeft: '5px',\n paddingTop: '3px',\n },\n\n accordionStyle: {\n background: 'transparent',\n },\n\n gridRootStyle: {\n width: '100%',\n },\n\n cardStyles: {\n paddingLeft: '10px',\n paddingRight: '10px',\n },\n }),\n);\n\nconst BasicCard = ({ children }: { children: ReactNode }) => (\n <InfoCard title=\"PagerDuty\">{children}</InfoCard>\n);\n\n/** @public */\nexport type PagerDutyCardProps = PagerDutyEntity & {\n readOnly?: boolean;\n disableInsights?: boolean;\n disableOnCall?: boolean;\n};\n\n/** @public */\nexport const PagerDutySmallCard = (props: PagerDutyCardProps) => {\n const classes = useStyles();\n\n const theme = useTheme();\n const { readOnly, disableInsights, disableOnCall } = props;\n const api = useApi(pagerDutyApiRef);\n const [refreshStatus, setRefreshStatus] = useState<boolean>(false);\n\n const handleRefresh = useCallback(() => {\n setRefreshStatus(x => !x);\n }, []);\n\n const {\n value: service,\n loading,\n error,\n } = useAsync(async () => {\n const { service: foundService } = await api.getServiceByPagerDutyEntity(\n props,\n );\n\n const serviceStandards = await api.getServiceStandardsByServiceId(\n foundService.id,\n props.account,\n );\n\n const serviceMetrics = await api.getServiceMetricsByServiceId(\n foundService.id,\n props.account,\n );\n\n const result: PagerDutyCardServiceResponse = {\n id: foundService.id,\n name: foundService.name,\n account: props.account,\n url: foundService.html_url,\n policyId: foundService.escalation_policy.id,\n policyLink: foundService.escalation_policy.html_url as string,\n policyName: foundService.escalation_policy.name,\n status: foundService.status,\n standards:\n serviceStandards !== undefined ? serviceStandards.standards : undefined,\n metrics:\n serviceMetrics !== undefined ? serviceMetrics.metrics : undefined,\n };\n\n return result;\n }, [props]);\n\n if (error) {\n let errorNode: ReactNode;\n\n switch (error.constructor) {\n case UnauthorizedError:\n errorNode = <MissingTokenError />;\n break;\n case NotFoundError:\n errorNode = <ServiceNotFoundError />;\n break;\n default:\n errorNode = <ForbiddenError />;\n }\n\n return <BasicCard>{errorNode}</BasicCard>;\n }\n\n if (loading) {\n return (\n <BasicCard>\n <Progress />\n </BasicCard>\n );\n }\n\n return (\n <Card data-testid=\"pagerduty-card\" className={classes.cardStyles}>\n <CardHeader\n title={\n theme.palette.type === 'dark' ? (\n <img src={PDWhiteImage} alt=\"PagerDuty\" height=\"25\" />\n ) : (\n <img src={PDGreenImage} alt=\"PagerDuty\" height=\"25\" />\n )\n }\n action={\n !readOnly && props.integrationKey ? (\n <Flex>\n <TriggerIncidentButton\n compact\n data-testid=\"trigger-incident-button\"\n integrationKey={props.integrationKey}\n entityName={props.name}\n handleRefresh={handleRefresh}\n />\n <OpenServiceButton compact serviceUrl={service!.url} />\n </Flex>\n ) : (\n <OpenServiceButton compact serviceUrl={service!.url} />\n )\n }\n />\n\n <Grid.Root columns=\"2\" gap=\"1\" pl=\"1\" pr=\"1\">\n <Grid.Item>\n <Text weight=\"bold\" color=\"secondary\">STATUS</Text>\n </Grid.Item>\n\n <Grid.Item>\n <Text weight=\"bold\" color=\"secondary\">STANDARDS</Text>\n </Grid.Item>\n </Grid.Root>\n\n <Grid.Root columns=\"2\" gap=\"1\" pl=\"1\" pr=\"1\">\n <Grid.Item>\n <StatusCard\n compact\n serviceId={service!.id}\n refreshStatus={refreshStatus}\n account={service!.account}\n />\n </Grid.Item>\n <Grid.Item>\n <ServiceStandardsCard\n compact\n total={\n service?.standards?.score !== undefined\n ? service?.standards?.score?.total\n : undefined\n }\n completed={\n service?.standards?.score !== undefined\n ? service?.standards?.score?.passing\n : undefined\n }\n standards={\n service?.standards !== undefined\n ? service?.standards?.standards\n : undefined\n }\n />\n </Grid.Item>\n </Grid.Root>\n\n {disableInsights !== true ? (\n <Accordion className={classes.accordionStyle}>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n <Text weight=\"bold\" color=\"secondary\">INSIGHTS</Text>\n <Text weight=\"bold\" color=\"secondary\" className={classes.subheaderTextStyle}>(last 30 days)</Text>\n </AccordionSummary>\n\n <AccordionDetails>\n <Grid.Root\n columns=\"3\"\n gap=\"1\"\n pl=\"1\"\n pr=\"1\"\n className={classes.gridRootStyle}\n >\n <Grid.Item>\n <InsightsCard\n compact\n count={\n service?.metrics !== undefined && service.metrics.length > 0\n ? service?.metrics[0].total_interruptions\n : undefined\n }\n label=\"interruptions\"\n color={theme.palette.textSubtle}\n />\n </Grid.Item>\n <Grid.Item>\n <InsightsCard\n compact\n count={\n service?.metrics !== undefined && service.metrics.length > 0\n ? service?.metrics[0].total_high_urgency_incidents\n : undefined\n }\n label=\"high urgency\"\n color={theme.palette.warning.main}\n />\n </Grid.Item>\n <Grid.Item>\n <InsightsCard\n compact\n count={\n service?.metrics !== undefined &&\n service?.metrics?.length > 0\n ? service?.metrics[0].total_incident_count\n : undefined\n }\n label=\"incidents\"\n color={theme.palette.error.main}\n />\n </Grid.Item>\n </Grid.Root>\n </AccordionDetails>\n </Accordion>\n ) : (\n <></>\n )}\n\n {disableOnCall !== true ? (\n <Accordion className={classes.accordionStyle}>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n <Text weight=\"bold\" color=\"secondary\">ON CALL</Text>\n </AccordionSummary>\n\n <AccordionDetails>\n <EscalationPolicy\n data-testid=\"oncall-card\"\n policyId={service!.policyId}\n policyUrl={service!.policyLink}\n policyName={service!.policyName}\n account={service!.account}\n />\n </AccordionDetails>\n </Accordion>\n ) : (\n <></>\n )}\n </Card>\n );\n};\n"],"names":["InsightsCard"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../src/components/PagerDutySmallCard/index.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// eslint-disable-next-line @backstage/no-undeclared-imports\nimport { ReactNode, useCallback, useState } from 'react';\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n CardHeader\n} from '@material-ui/core';\nimport { Card, Flex, Grid, Text } from '@backstage/ui';\nimport useAsync from 'react-use/lib/useAsync';\nimport { pagerDutyApiRef, UnauthorizedError } from '../../api';\nimport { MissingTokenError, ServiceNotFoundError } from '../Errors';\nimport PDGreenImage from '../../assets/PD-Green.svg';\nimport PDWhiteImage from '../../assets/PD-White.svg';\n\nimport { useApi } from '@backstage/core-plugin-api';\nimport { NotFoundError } from '@backstage/errors';\nimport { Progress, InfoCard } from '@backstage/core-components';\nimport { PagerDutyEntity } from '../../types';\nimport { ForbiddenError } from '../Errors/ForbiddenError';\nimport {\n InsightsCard,\n OpenServiceButton,\n ServiceStandardsCard,\n StatusCard,\n TriggerIncidentButton,\n} from '../PagerDutyCardCommon';\nimport { createStyles, makeStyles, useTheme } from '@material-ui/core/styles';\nimport { BackstageTheme } from '@backstage/theme';\nimport { PagerDutyCardServiceResponse } from '../../api/types';\nimport { EscalationPolicy } from '../Escalation';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { Entity } from '@backstage/catalog-model';\n\nconst useStyles = makeStyles<BackstageTheme>(_ =>\n createStyles({\n subheaderTextStyle: {\n fontSize: '10px',\n paddingLeft: '5px',\n paddingTop: '3px',\n },\n\n accordionStyle: {\n background: 'transparent',\n },\n\n gridRootStyle: {\n width: '100%',\n },\n\n cardStyles: {\n paddingLeft: '10px',\n paddingRight: '10px',\n },\n }),\n);\n\nconst BasicCard = ({ children }: { children: ReactNode }) => (\n <InfoCard title=\"PagerDuty\">{children}</InfoCard>\n);\n\n/** @public */\nexport type PagerDutyCardProps = PagerDutyEntity & {\n entity: Entity;\n readOnly?: boolean;\n disableInsights?: boolean;\n disableOnCall?: boolean;\n};\n\n/** @public */\nexport const PagerDutySmallCard = (props: PagerDutyCardProps) => {\n const classes = useStyles();\n\n const theme = useTheme();\n const { entity, readOnly, disableInsights, disableOnCall } = props;\n const api = useApi(pagerDutyApiRef);\n const [refreshStatus, setRefreshStatus] = useState<boolean>(false);\n\n const handleRefresh = useCallback(() => {\n setRefreshStatus(x => !x);\n }, []);\n\n const {\n value: service,\n loading,\n error,\n } = useAsync(async () => {\n const { service: foundService } = await api.getServiceByPagerDutyEntity(\n props,\n );\n\n const serviceStandards = await api.getServiceStandardsByServiceId(\n foundService.id,\n props.account,\n );\n\n const serviceMetrics = await api.getServiceMetricsByServiceId(\n foundService.id,\n props.account,\n );\n\n const result: PagerDutyCardServiceResponse = {\n id: foundService.id,\n name: foundService.name,\n account: props.account,\n url: foundService.html_url,\n policyId: foundService.escalation_policy.id,\n policyLink: foundService.escalation_policy.html_url as string,\n policyName: foundService.escalation_policy.name,\n status: foundService.status,\n standards:\n serviceStandards !== undefined ? serviceStandards.standards : undefined,\n metrics:\n serviceMetrics !== undefined ? serviceMetrics.metrics : undefined,\n };\n\n return result;\n }, [props]);\n\n if (error) {\n let errorNode: ReactNode;\n\n switch (error.constructor) {\n case UnauthorizedError:\n errorNode = <MissingTokenError />;\n break;\n case NotFoundError:\n errorNode = <ServiceNotFoundError entity={entity} />;\n break;\n default:\n errorNode = <ForbiddenError />;\n }\n\n return <BasicCard>{errorNode}</BasicCard>;\n }\n\n if (loading) {\n return (\n <BasicCard>\n <Progress />\n </BasicCard>\n );\n }\n\n return (\n <Card data-testid=\"pagerduty-card\" className={classes.cardStyles}>\n <CardHeader\n title={\n theme.palette.type === 'dark' ? (\n <img src={PDWhiteImage} alt=\"PagerDuty\" height=\"25\" />\n ) : (\n <img src={PDGreenImage} alt=\"PagerDuty\" height=\"25\" />\n )\n }\n action={\n !readOnly && props.integrationKey ? (\n <Flex>\n <TriggerIncidentButton\n compact\n data-testid=\"trigger-incident-button\"\n integrationKey={props.integrationKey}\n entityName={props.name}\n handleRefresh={handleRefresh}\n />\n <OpenServiceButton compact serviceUrl={service!.url} />\n </Flex>\n ) : (\n <OpenServiceButton compact serviceUrl={service!.url} />\n )\n }\n />\n\n <Grid.Root columns=\"2\" gap=\"1\" pl=\"1\" pr=\"1\">\n <Grid.Item>\n <Text weight=\"bold\" color=\"secondary\">STATUS</Text>\n </Grid.Item>\n\n <Grid.Item>\n <Text weight=\"bold\" color=\"secondary\">STANDARDS</Text>\n </Grid.Item>\n </Grid.Root>\n\n <Grid.Root columns=\"2\" gap=\"1\" pl=\"1\" pr=\"1\">\n <Grid.Item>\n <StatusCard\n compact\n serviceId={service!.id}\n refreshStatus={refreshStatus}\n account={service!.account}\n />\n </Grid.Item>\n <Grid.Item>\n <ServiceStandardsCard\n compact\n total={\n service?.standards?.score !== undefined\n ? service?.standards?.score?.total\n : undefined\n }\n completed={\n service?.standards?.score !== undefined\n ? service?.standards?.score?.passing\n : undefined\n }\n standards={\n service?.standards !== undefined\n ? service?.standards?.standards\n : undefined\n }\n />\n </Grid.Item>\n </Grid.Root>\n\n {disableInsights !== true ? (\n <Accordion className={classes.accordionStyle}>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n <Text weight=\"bold\" color=\"secondary\">INSIGHTS</Text>\n <Text weight=\"bold\" color=\"secondary\" className={classes.subheaderTextStyle}>(last 30 days)</Text>\n </AccordionSummary>\n\n <AccordionDetails>\n <Grid.Root\n columns=\"3\"\n gap=\"1\"\n pl=\"1\"\n pr=\"1\"\n className={classes.gridRootStyle}\n >\n <Grid.Item>\n <InsightsCard\n compact\n count={\n service?.metrics !== undefined && service.metrics.length > 0\n ? service?.metrics[0].total_interruptions\n : undefined\n }\n label=\"interruptions\"\n color={theme.palette.textSubtle}\n />\n </Grid.Item>\n <Grid.Item>\n <InsightsCard\n compact\n count={\n service?.metrics !== undefined && service.metrics.length > 0\n ? service?.metrics[0].total_high_urgency_incidents\n : undefined\n }\n label=\"high urgency\"\n color={theme.palette.warning.main}\n />\n </Grid.Item>\n <Grid.Item>\n <InsightsCard\n compact\n count={\n service?.metrics !== undefined &&\n service?.metrics?.length > 0\n ? service?.metrics[0].total_incident_count\n : undefined\n }\n label=\"incidents\"\n color={theme.palette.error.main}\n />\n </Grid.Item>\n </Grid.Root>\n </AccordionDetails>\n </Accordion>\n ) : (\n <></>\n )}\n\n {disableOnCall !== true ? (\n <Accordion className={classes.accordionStyle}>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n <Text weight=\"bold\" color=\"secondary\">ON CALL</Text>\n </AccordionSummary>\n\n <AccordionDetails>\n <EscalationPolicy\n data-testid=\"oncall-card\"\n policyId={service!.policyId}\n policyUrl={service!.policyLink}\n policyName={service!.policyName}\n account={service!.account}\n />\n </AccordionDetails>\n </Accordion>\n ) : (\n <></>\n )}\n </Card>\n );\n};\n"],"names":["InsightsCard"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -35,6 +35,7 @@ type PagerDutyEntity = {
|
|
|
35
35
|
|
|
36
36
|
/** @public */
|
|
37
37
|
type HomePagePagerDutyCardProps = PagerDutyEntity & {
|
|
38
|
+
entity: Entity;
|
|
38
39
|
readOnly?: boolean;
|
|
39
40
|
};
|
|
40
41
|
|
|
@@ -86,6 +87,24 @@ interface PagerDutyApi {
|
|
|
86
87
|
*
|
|
87
88
|
*/
|
|
88
89
|
storeServiceMapping(serviceId: string, integrationKey: string, entityRef: string, account: string): Promise<Response>;
|
|
90
|
+
/**
|
|
91
|
+
* Fetches the service mapping for a specific entity.
|
|
92
|
+
*
|
|
93
|
+
*/
|
|
94
|
+
getEntityMapping(entityRef: string): Promise<{
|
|
95
|
+
mapping: {
|
|
96
|
+
serviceId: string;
|
|
97
|
+
integrationKey: string;
|
|
98
|
+
entityRef: string;
|
|
99
|
+
account: string;
|
|
100
|
+
};
|
|
101
|
+
}>;
|
|
102
|
+
/**
|
|
103
|
+
* Removes the service mapping for an entity by setting entityRef to empty string.
|
|
104
|
+
* Uses the same approach as the admin page "None" option.
|
|
105
|
+
*
|
|
106
|
+
*/
|
|
107
|
+
removeServiceMapping(entityRef: string): Promise<boolean>;
|
|
89
108
|
/**
|
|
90
109
|
* Fetches the service for the provided pager duty Entity.
|
|
91
110
|
*
|
|
@@ -156,6 +175,15 @@ declare class PagerDutyClient implements PagerDutyApi {
|
|
|
156
175
|
storeSettings(settings: PagerDutySetting[]): Promise<Response>;
|
|
157
176
|
getEntityMappings(): Promise<PagerDutyEntityMappingsResponse>;
|
|
158
177
|
storeServiceMapping(serviceId: string, integrationKey: string, backstageEntityRef: string, account: string): Promise<Response>;
|
|
178
|
+
getEntityMapping(entityRef: string): Promise<{
|
|
179
|
+
mapping: {
|
|
180
|
+
serviceId: string;
|
|
181
|
+
integrationKey: string;
|
|
182
|
+
entityRef: string;
|
|
183
|
+
account: string;
|
|
184
|
+
};
|
|
185
|
+
}>;
|
|
186
|
+
removeServiceMapping(entityRef: string): Promise<boolean>;
|
|
159
187
|
getServiceByEntity(entity: Entity): Promise<PagerDutyServiceResponse>;
|
|
160
188
|
getServiceById(serviceId: string, account?: string): Promise<PagerDutyServiceResponse>;
|
|
161
189
|
getIncidentsByServiceId(serviceId: string, account?: string): Promise<PagerDutyIncidentsResponse>;
|
package/dist/package.json.esm.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var name = "@pagerduty/backstage-plugin";
|
|
2
2
|
var description = "A Backstage plugin that integrates towards PagerDuty";
|
|
3
|
-
var version = "0.
|
|
3
|
+
var version = "0.18.0";
|
|
4
4
|
var main = "dist/index.esm.js";
|
|
5
5
|
var types = "dist/index.d.ts";
|
|
6
6
|
var license = "Apache-2.0";
|
|
@@ -34,7 +34,7 @@ var scripts = {
|
|
|
34
34
|
lint: "backstage-cli package lint",
|
|
35
35
|
test: "backstage-cli package test",
|
|
36
36
|
prepare: "husky install",
|
|
37
|
-
prepack: "
|
|
37
|
+
prepack: "backstage-cli package prepack",
|
|
38
38
|
postpack: "backstage-cli package postpack",
|
|
39
39
|
clean: "backstage-cli package clean"
|
|
40
40
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pagerduty/backstage-plugin",
|
|
3
3
|
"description": "A Backstage plugin that integrates towards PagerDuty",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.18.0",
|
|
5
5
|
"main": "./dist/index.esm.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"license": "Apache-2.0",
|
|
@@ -38,22 +38,22 @@
|
|
|
38
38
|
"lint": "backstage-cli package lint",
|
|
39
39
|
"test": "backstage-cli package test",
|
|
40
40
|
"prepare": "husky install",
|
|
41
|
-
"prepack": "
|
|
41
|
+
"prepack": "backstage-cli package prepack",
|
|
42
42
|
"postpack": "backstage-cli package postpack",
|
|
43
43
|
"clean": "backstage-cli package clean"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@backstage/catalog-model": "
|
|
47
|
-
"@backstage/core-compat-api": "
|
|
48
|
-
"@backstage/core-components": "
|
|
49
|
-
"@backstage/core-plugin-api": "
|
|
50
|
-
"@backstage/errors": "
|
|
51
|
-
"@backstage/frontend-plugin-api": "
|
|
52
|
-
"@backstage/plugin-catalog": "
|
|
53
|
-
"@backstage/plugin-catalog-react": "
|
|
54
|
-
"@backstage/plugin-home-react": "
|
|
55
|
-
"@backstage/theme": "
|
|
56
|
-
"@backstage/ui": "
|
|
46
|
+
"@backstage/catalog-model": "^1.7.6",
|
|
47
|
+
"@backstage/core-compat-api": "^0.5.5",
|
|
48
|
+
"@backstage/core-components": "^0.18.4",
|
|
49
|
+
"@backstage/core-plugin-api": "^1.12.1",
|
|
50
|
+
"@backstage/errors": "^1.2.7",
|
|
51
|
+
"@backstage/frontend-plugin-api": "^0.13.2",
|
|
52
|
+
"@backstage/plugin-catalog": "^1.32.1",
|
|
53
|
+
"@backstage/plugin-catalog-react": "^1.21.4",
|
|
54
|
+
"@backstage/plugin-home-react": "^0.1.33",
|
|
55
|
+
"@backstage/theme": "^0.7.1",
|
|
56
|
+
"@backstage/ui": "^0.10.0",
|
|
57
57
|
"@emotion/react": "^11.11.4",
|
|
58
58
|
"@emotion/styled": "^11.11.5",
|
|
59
59
|
"@material-ui/core": "^4.12.2",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"@mui/icons-material": "^5.15.19",
|
|
63
63
|
"@mui/material": "^5.15.19",
|
|
64
64
|
"@mui/x-date-pickers": "^7.6.1",
|
|
65
|
-
"@pagerduty/backstage-plugin-common": "~0.2.
|
|
65
|
+
"@pagerduty/backstage-plugin-common": "~0.2.6",
|
|
66
66
|
"@tanstack/react-query": "^5.40.1",
|
|
67
67
|
"luxon": "^3.4.1",
|
|
68
68
|
"material-react-table": "^2.13.0",
|
|
@@ -75,10 +75,10 @@
|
|
|
75
75
|
"react-router-dom": "^6.3.0"
|
|
76
76
|
},
|
|
77
77
|
"devDependencies": {
|
|
78
|
-
"@backstage/cli": "
|
|
79
|
-
"@backstage/core-app-api": "
|
|
80
|
-
"@backstage/frontend-defaults": "
|
|
81
|
-
"@backstage/test-utils": "
|
|
78
|
+
"@backstage/cli": "^0.35.1",
|
|
79
|
+
"@backstage/core-app-api": "^1.19.3",
|
|
80
|
+
"@backstage/frontend-defaults": "^0.3.4",
|
|
81
|
+
"@backstage/test-utils": "^1.7.14",
|
|
82
82
|
"@testing-library/jest-dom": "^6.6.3",
|
|
83
83
|
"@types/copyfiles": "^2",
|
|
84
84
|
"copyfiles": "^2.4.1",
|
|
@@ -115,4 +115,4 @@
|
|
|
115
115
|
},
|
|
116
116
|
"configSchema": "config.d.ts",
|
|
117
117
|
"module": "./dist/index.esm.js"
|
|
118
|
-
}
|
|
118
|
+
}
|