@pagerduty/backstage-plugin 0.20.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/alpha/pages.esm.js +41 -4
  3. package/dist/alpha/pages.esm.js.map +1 -1
  4. package/dist/alpha/plugin.esm.js +4 -3
  5. package/dist/alpha/plugin.esm.js.map +1 -1
  6. package/dist/alpha.d.ts +105 -26
  7. package/dist/api/client.esm.js +136 -0
  8. package/dist/api/client.esm.js.map +1 -1
  9. package/dist/components/PagerDutyPage/ConfigurationPage.esm.js +119 -0
  10. package/dist/components/PagerDutyPage/ConfigurationPage.esm.js.map +1 -0
  11. package/dist/components/PagerDutyPage/CustomFieldModal.esm.js +152 -0
  12. package/dist/components/PagerDutyPage/CustomFieldModal.esm.js.map +1 -0
  13. package/dist/components/PagerDutyPage/CustomFields/ButtonTabs.esm.js +51 -0
  14. package/dist/components/PagerDutyPage/CustomFields/ButtonTabs.esm.js.map +1 -0
  15. package/dist/components/PagerDutyPage/CustomFields/CustomFieldsEmptyState.esm.js +46 -0
  16. package/dist/components/PagerDutyPage/CustomFields/CustomFieldsEmptyState.esm.js.map +1 -0
  17. package/dist/components/PagerDutyPage/CustomFields/CustomFieldsTabPanel.esm.js +154 -0
  18. package/dist/components/PagerDutyPage/CustomFields/CustomFieldsTabPanel.esm.js.map +1 -0
  19. package/dist/components/PagerDutyPage/CustomFields/DeleteCustomFieldDialog.esm.js +63 -0
  20. package/dist/components/PagerDutyPage/CustomFields/DeleteCustomFieldDialog.esm.js.map +1 -0
  21. package/dist/components/PagerDutyPage/CustomFields/SyncLogsFilters.esm.js +126 -0
  22. package/dist/components/PagerDutyPage/CustomFields/SyncLogsFilters.esm.js.map +1 -0
  23. package/dist/components/PagerDutyPage/CustomFields/SyncLogsTab.esm.js +285 -0
  24. package/dist/components/PagerDutyPage/CustomFields/SyncLogsTab.esm.js.map +1 -0
  25. package/dist/components/PagerDutyPage/CustomFields/customFieldErrors.esm.js +13 -0
  26. package/dist/components/PagerDutyPage/CustomFields/customFieldErrors.esm.js.map +1 -0
  27. package/dist/components/PagerDutyPage/CustomFields.esm.js +192 -0
  28. package/dist/components/PagerDutyPage/CustomFields.esm.js.map +1 -0
  29. package/dist/components/PagerDutyPage/MappingsTable/MappingsTable.esm.js +1 -1
  30. package/dist/components/PagerDutyPage/MappingsTable/MappingsTable.esm.js.map +1 -1
  31. package/dist/components/PagerDutyPage/MappingsTable/MappingsTableContent.esm.js +15 -3
  32. package/dist/components/PagerDutyPage/MappingsTable/MappingsTableContent.esm.js.map +1 -1
  33. package/dist/components/PagerDutyPage/MappingsTable/NameCell.esm.js +35 -0
  34. package/dist/components/PagerDutyPage/MappingsTable/NameCell.esm.js.map +1 -0
  35. package/dist/components/PagerDutyPage/MappingsTable/TableSkeleton.esm.js +26 -29
  36. package/dist/components/PagerDutyPage/MappingsTable/TableSkeleton.esm.js.map +1 -1
  37. package/dist/components/PagerDutyPage/ServiceMappingPage.esm.js +22 -0
  38. package/dist/components/PagerDutyPage/ServiceMappingPage.esm.js.map +1 -0
  39. package/dist/components/PagerDutyPage/index.esm.js +12 -127
  40. package/dist/components/PagerDutyPage/index.esm.js.map +1 -1
  41. package/dist/index.d.ts +50 -3
  42. package/dist/package.json.esm.js +2 -2
  43. package/package.json +17 -17
  44. package/dist/alpha/nav-items.esm.js +0 -21
  45. package/dist/alpha/nav-items.esm.js.map +0 -1
@@ -1,132 +1,17 @@
1
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
- import { useState, useEffect } from 'react';
3
- import { makeStyles, CardContent, Typography, createStyles } from '@material-ui/core';
4
- import { Card, Flex, Text, RadioGroup, Radio } from '@backstage/ui';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
2
  import { Page, Header, Content, TabbedLayout } from '@backstage/core-components';
6
- import { ServiceMappingComponent } from './ServiceMappingComponent.esm.js';
7
- import { useApi } from '@backstage/core-plugin-api';
8
- import { pagerDutyApiRef } from '../../api/client.esm.js';
9
- import { NotFoundError } from '@backstage/errors';
3
+ import { ServiceMappingPage } from './ServiceMappingPage.esm.js';
4
+ import { CustomFields } from './CustomFields.esm.js';
5
+ import { ConfigurationPage } from './ConfigurationPage.esm.js';
10
6
 
11
- const SERVICE_DEPENDENCY_SYNC_STRATEGY = "settings::service-dependency-sync-strategy";
12
- const useStyles = makeStyles(
13
- (theme) => createStyles({
14
- cardStyles: {
15
- padding: "15px",
16
- marginTop: "16px"
17
- },
18
- textContainerStyles: {
19
- marginTop: "16px"
20
- },
21
- linkStyles: {
22
- color: "cadetblue"
23
- },
24
- descriptionCard: {
25
- marginBottom: "24px",
26
- borderRadius: "8px"
27
- },
28
- descriptionText: {
29
- fontSize: "16px",
30
- color: theme.palette.text.primary,
31
- lineHeight: 1.5,
32
- marginBottom: "4px"
33
- },
34
- warningText: {
35
- fontSize: "16px",
36
- color: theme.palette.text.primary,
37
- lineHeight: 1.5
38
- }
39
- })
40
- );
41
- const PagerDutyPage = () => {
42
- const { cardStyles, textContainerStyles, linkStyles, descriptionCard, descriptionText, warningText } = useStyles();
43
- const pagerDutyApi = useApi(pagerDutyApiRef);
44
- const [
45
- selectedServiceDependencyStrategy,
46
- setSelectedServiceDependencyStrategy
47
- ] = useState("disabled");
48
- useEffect(() => {
49
- function fetchSetting() {
50
- pagerDutyApi.getSetting(SERVICE_DEPENDENCY_SYNC_STRATEGY).then((result) => {
51
- if (result !== void 0) {
52
- setSelectedServiceDependencyStrategy(result.value);
53
- }
54
- }).catch((error) => {
55
- if (error instanceof NotFoundError) {
56
- setSelectedServiceDependencyStrategy("disabled");
57
- }
58
- });
59
- }
60
- fetchSetting();
61
- }, [pagerDutyApi]);
62
- const handleChange = (value) => {
63
- setSelectedServiceDependencyStrategy(value);
64
- pagerDutyApi.storeSettings([
65
- {
66
- id: SERVICE_DEPENDENCY_SYNC_STRATEGY,
67
- value
68
- }
69
- ]);
70
- };
71
- return /* @__PURE__ */ jsxs(Page, { themeId: "home", children: [
72
- /* @__PURE__ */ jsx(Header, { title: "PagerDuty", subtitle: "Advanced configurations" }),
73
- /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsxs(TabbedLayout, { children: [
74
- /* @__PURE__ */ jsx(TabbedLayout.Route, { path: "/service-mapping", title: "Service Mapping", children: /* @__PURE__ */ jsxs(Fragment, { children: [
75
- /* @__PURE__ */ jsx(Card, { className: descriptionCard, children: /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs(Flex, { direction: "column", children: [
76
- /* @__PURE__ */ jsx(Text, { className: descriptionText, children: "Easily map your existing PagerDuty services to entities in Backstage without the need to add anotations to all your projects." }),
77
- /* @__PURE__ */ jsxs(Text, { className: warningText, children: [
78
- /* @__PURE__ */ jsx("strong", { children: "Warning:" }),
79
- " Only 1:1 mapping is allowed at this time."
80
- ] })
81
- ] }) }) }),
82
- /* @__PURE__ */ jsx(ServiceMappingComponent, {})
83
- ] }) }),
84
- /* @__PURE__ */ jsx(TabbedLayout.Route, { path: "/settings", title: "Configuration", children: /* @__PURE__ */ jsxs(Fragment, { children: [
85
- /* @__PURE__ */ jsx(Typography, { variant: "h4", children: "Plugin configuration" }),
86
- /* @__PURE__ */ jsx(Typography, { children: "Configure your PagerDuty plugin configuration here" }),
87
- /* @__PURE__ */ jsxs(
88
- Card,
89
- {
90
- title: "Service dependency synchronization preferences",
91
- className: cardStyles,
92
- children: [
93
- /* @__PURE__ */ jsx(Typography, { variant: "h6", children: "Service dependency synchronization strategy" }),
94
- /* @__PURE__ */ jsxs(
95
- RadioGroup,
96
- {
97
- label: "Select the main source of truth for your service dependencies",
98
- value: selectedServiceDependencyStrategy,
99
- onChange: (value) => handleChange(value),
100
- children: [
101
- /* @__PURE__ */ jsx(Radio, { value: "backstage" /* backstage */, children: "Backstage" }),
102
- /* @__PURE__ */ jsx(Radio, { value: "pagerduty" /* pagerduty */, children: "PagerDuty" }),
103
- /* @__PURE__ */ jsx(Radio, { value: "both" /* both */, children: "Both" }),
104
- /* @__PURE__ */ jsx(Radio, { value: "disabled" /* disabled */, children: "Disabled" })
105
- ]
106
- }
107
- ),
108
- /* @__PURE__ */ jsx("div", { className: textContainerStyles, children: /* @__PURE__ */ jsxs(Typography, { children: [
109
- /* @__PURE__ */ jsx("b", { children: "Warning: " }),
110
- "Changing this setting will affect how your service dependencies are synchronized and may cause data loss. Check the",
111
- " ",
112
- /* @__PURE__ */ jsx(
113
- "a",
114
- {
115
- className: linkStyles,
116
- href: "https://pagerduty.github.io/backstage-plugin-docs/index.html",
117
- children: "documentation"
118
- }
119
- ),
120
- " ",
121
- "for more information."
122
- ] }) })
123
- ]
124
- }
125
- )
126
- ] }) })
127
- ] }) })
128
- ] });
129
- };
7
+ const PagerDutyPage = () => /* @__PURE__ */ jsxs(Page, { themeId: "home", children: [
8
+ /* @__PURE__ */ jsx(Header, { title: "PagerDuty", subtitle: "Advanced configurations" }),
9
+ /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsxs(TabbedLayout, { children: [
10
+ /* @__PURE__ */ jsx(TabbedLayout.Route, { path: "/service-mapping", title: "Service Mapping", children: /* @__PURE__ */ jsx(ServiceMappingPage, {}) }),
11
+ /* @__PURE__ */ jsx(TabbedLayout.Route, { path: "/custom-fields", title: "Custom Fields", children: /* @__PURE__ */ jsx(CustomFields, {}) }),
12
+ /* @__PURE__ */ jsx(TabbedLayout.Route, { path: "/settings", title: "Configuration", children: /* @__PURE__ */ jsx(ConfigurationPage, {}) })
13
+ ] }) })
14
+ ] });
130
15
 
131
16
  export { PagerDutyPage };
132
17
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../src/components/PagerDutyPage/index.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport {\n CardContent,\n createStyles,\n makeStyles,\n Typography,\n} from '@material-ui/core';\nimport { Card, RadioGroup, Radio, Flex, Text } from '@backstage/ui';\nimport {\n Header,\n Page,\n Content,\n TabbedLayout,\n} from '@backstage/core-components';\nimport { ServiceMappingComponent } from './ServiceMappingComponent';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { pagerDutyApiRef } from '../../api';\nimport { NotFoundError } from '@backstage/errors';\nimport { BackstageTheme } from '@backstage/theme';\n\nenum StoreSettings {\n backstage = 'backstage',\n pagerduty = 'pagerduty',\n both = 'both',\n disabled = 'disabled',\n}\n\nconst SERVICE_DEPENDENCY_SYNC_STRATEGY =\n 'settings::service-dependency-sync-strategy';\n\nconst useStyles = makeStyles<BackstageTheme>(theme =>\n createStyles({\n cardStyles: {\n padding: '15px',\n marginTop: '16px',\n },\n textContainerStyles: {\n marginTop: '16px',\n },\n linkStyles: {\n color: 'cadetblue',\n },\n descriptionCard: {\n marginBottom: '24px',\n borderRadius: '8px',\n },\n descriptionText: {\n fontSize: '16px',\n color: theme.palette.text.primary,\n lineHeight: 1.5,\n marginBottom: '4px',\n },\n warningText: {\n fontSize: '16px',\n color: theme.palette.text.primary,\n lineHeight: 1.5,\n },\n }),\n);\n\n/** @public */\nexport const PagerDutyPage = () => {\n const { cardStyles, textContainerStyles, linkStyles, descriptionCard, descriptionText, warningText } = useStyles();\n const pagerDutyApi = useApi(pagerDutyApiRef);\n const [\n selectedServiceDependencyStrategy,\n setSelectedServiceDependencyStrategy,\n ] = useState('disabled');\n\n useEffect(() => {\n function fetchSetting() {\n pagerDutyApi\n .getSetting(SERVICE_DEPENDENCY_SYNC_STRATEGY)\n .then(result => {\n if (result !== undefined) {\n setSelectedServiceDependencyStrategy(result.value);\n }\n })\n .catch(error => {\n if (error instanceof NotFoundError) {\n // If the setting is not found, set the default value to \"disabled\"\n setSelectedServiceDependencyStrategy('disabled');\n }\n });\n }\n\n fetchSetting();\n }, [pagerDutyApi]);\n\n const handleChange = (value: StoreSettings) => {\n setSelectedServiceDependencyStrategy(value);\n pagerDutyApi.storeSettings([\n {\n id: SERVICE_DEPENDENCY_SYNC_STRATEGY,\n value,\n },\n ]);\n };\n\n return (\n <Page themeId=\"home\">\n <Header title=\"PagerDuty\" subtitle=\"Advanced configurations\" />\n <Content>\n <TabbedLayout>\n <TabbedLayout.Route path=\"/service-mapping\" title=\"Service Mapping\">\n <>\n <Card className={descriptionCard}>\n <CardContent>\n <Flex direction=\"column\">\n <Text className={descriptionText}>\n Easily map your existing PagerDuty services to entities in\n Backstage without the need to add anotations to all your\n projects.\n </Text>\n <Text className={warningText}>\n <strong>Warning:</strong> Only 1:1 mapping is allowed at this time.\n </Text>\n </Flex>\n </CardContent>\n </Card>\n\n <ServiceMappingComponent />\n </>\n </TabbedLayout.Route>\n <TabbedLayout.Route path=\"/settings\" title=\"Configuration\">\n <>\n <Typography variant=\"h4\">Plugin configuration</Typography>\n <Typography>\n Configure your PagerDuty plugin configuration here\n </Typography>\n\n <Card\n title=\"Service dependency synchronization preferences\"\n className={cardStyles}\n >\n <Typography variant=\"h6\">\n Service dependency synchronization strategy\n </Typography>\n <RadioGroup\n label=\"Select the main source of truth for your service dependencies\"\n value={selectedServiceDependencyStrategy}\n onChange={value => handleChange(value as StoreSettings)}\n >\n <Radio value={StoreSettings.backstage}>Backstage</Radio>\n <Radio value={StoreSettings.pagerduty}>PagerDuty</Radio>\n <Radio value={StoreSettings.both}>Both</Radio>\n <Radio value={StoreSettings.disabled}>Disabled</Radio>\n </RadioGroup>\n\n <div className={textContainerStyles}>\n <Typography>\n <b>Warning: </b>Changing this setting will affect how your\n service dependencies are synchronized and may cause data\n loss. Check the{' '}\n <a\n className={linkStyles}\n href=\"https://pagerduty.github.io/backstage-plugin-docs/index.html\"\n >\n documentation\n </a>{' '}\n for more information.\n </Typography>\n </div>\n </Card>\n </>\n </TabbedLayout.Route>\n </TabbedLayout>\n </Content>\n </Page>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../src/components/PagerDutyPage/index.tsx"],"sourcesContent":["import { Header, Page, Content, TabbedLayout } from '@backstage/core-components';\nimport { ServiceMappingPage } from './ServiceMappingPage';\nimport { CustomFields } from './CustomFields';\nimport { ConfigurationPage } from './ConfigurationPage';\n\n/** @public */\nexport const PagerDutyPage = () => (\n <Page themeId=\"home\">\n <Header title=\"PagerDuty\" subtitle=\"Advanced configurations\" />\n <Content>\n <TabbedLayout>\n <TabbedLayout.Route path=\"/service-mapping\" title=\"Service Mapping\">\n <ServiceMappingPage />\n </TabbedLayout.Route>\n <TabbedLayout.Route path=\"/custom-fields\" title=\"Custom Fields\">\n <CustomFields />\n </TabbedLayout.Route>\n <TabbedLayout.Route path=\"/settings\" title=\"Configuration\">\n <ConfigurationPage />\n </TabbedLayout.Route>\n </TabbedLayout>\n </Content>\n </Page>\n);\n"],"names":[],"mappings":";;;;;;AAMO,MAAM,aAAA,GAAgB,sBAC3B,IAAA,CAAC,IAAA,EAAA,EAAK,SAAQ,MAAA,EACZ,QAAA,EAAA;AAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,KAAA,EAAM,WAAA,EAAY,QAAA,EAAS,yBAAA,EAA0B,CAAA;AAAA,kBAC7D,GAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,YAAA,CAAa,OAAb,EAAmB,IAAA,EAAK,oBAAmB,KAAA,EAAM,iBAAA,EAChD,QAAA,kBAAA,GAAA,CAAC,kBAAA,EAAA,EAAmB,CAAA,EACtB,CAAA;AAAA,oBACA,GAAA,CAAC,YAAA,CAAa,KAAA,EAAb,EAAmB,IAAA,EAAK,kBAAiB,KAAA,EAAM,eAAA,EAC9C,QAAA,kBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,CAAA,EAChB,CAAA;AAAA,oBACA,GAAA,CAAC,YAAA,CAAa,KAAA,EAAb,EAAmB,IAAA,EAAK,aAAY,KAAA,EAAM,eAAA,EACzC,QAAA,kBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,CAAA,EACrB;AAAA,GAAA,EACF,CAAA,EACF;AAAA,CAAA,EACF;;;;"}
package/dist/index.d.ts CHANGED
@@ -4,8 +4,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
5
5
  import { DiscoveryApi, FetchApi, ConfigApi } from '@backstage/core-plugin-api';
6
6
  import { ReactNode } from 'react';
7
- import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
8
- import { PagerDutySetting, PagerDutyEnhancedEntityMappingsResponse, PagerDutyServiceResponse, PagerDutyIncidentsResponse, PagerDutyChangeEventsResponse, PagerDutyService, PagerDutyTeam, PagerDutyServiceStandardsResponse, PagerDutyServiceMetricsResponse, PagerDutyUser, AutoMatchStartResponse, AutoMatchStatusResponse } from '@pagerduty/backstage-plugin-common';
7
+ import { PagerDutySetting, PagerDutyEnhancedEntityMappingsResponse, PagerDutyServiceResponse, PagerDutyIncidentsResponse, PagerDutyChangeEventsResponse, PagerDutyService, PagerDutyTeam, PagerDutyServiceStandardsResponse, PagerDutyServiceMetricsResponse, PagerDutyUser, AutoMatchStartResponse, AutoMatchStatusResponse, BackstageCustomFieldCreateRequest, BackstageCustomField, BackstageCustomFieldsResponse, BackstageCustomFieldUpdateRequest, CustomFieldSyncLogFilters, CustomFieldSyncLogsResponse } from '@pagerduty/backstage-plugin-common';
9
8
  export { AutoMatchBackstageComponent, AutoMatchEntityMapping, AutoMatchEntityMappingsResponse, AutoMatchPagerDutyService, AutoMatchScoreBreakdown, AutoMatchStatistics } from '@pagerduty/backstage-plugin-common';
10
9
 
11
10
  /** @public */
@@ -213,6 +212,35 @@ interface PagerDutyApi {
213
212
  id: string;
214
213
  isDefault: boolean;
215
214
  }>>;
215
+ /**
216
+ * Creates a custom field in PagerDuty and stores the mapping.
217
+ */
218
+ createCustomField(request: BackstageCustomFieldCreateRequest, account?: string): Promise<Result<BackstageCustomField>>;
219
+ /**
220
+ * Fetches all custom fields.
221
+ */
222
+ getCustomFields(account?: string): Promise<BackstageCustomFieldsResponse>;
223
+ /**
224
+ * Updates an existing custom field mapping.
225
+ */
226
+ updateCustomField(id: number, request: BackstageCustomFieldUpdateRequest, account?: string): Promise<Result<BackstageCustomField>>;
227
+ /**
228
+ * Enables or disables a custom field. Disabled fields are not synced to
229
+ * PagerDuty and do not count against the PagerDuty custom field hard limit.
230
+ */
231
+ setCustomFieldEnabled(id: number, enabled: boolean, account?: string): Promise<Result<BackstageCustomField>>;
232
+ /**
233
+ * Deletes a custom field from both Backstage and PagerDuty, reclaiming the slot.
234
+ */
235
+ deleteCustomField(id: number, account?: string): Promise<Result<void>>;
236
+ /**
237
+ * Fetches sync logs (paginated, filtered) along with the distinct
238
+ * filter values for the given account.
239
+ */
240
+ getSyncLogs(account?: string, options?: {
241
+ limit?: number;
242
+ offset?: number;
243
+ } & CustomFieldSyncLogFilters): Promise<CustomFieldSyncLogsResponse>;
216
244
  }
217
245
  /** @public */
218
246
  type PagerDutyClientApiDependencies = {
@@ -223,12 +251,22 @@ type PagerDutyClientApiDependencies = {
223
251
  type PagerDutyClientApiConfig = PagerDutyClientApiDependencies & {
224
252
  eventsBaseUrl?: string;
225
253
  };
254
+ /** @public */
255
+ type Result<T> = {
256
+ status: 'ok';
257
+ data: T;
258
+ error: null;
259
+ } | {
260
+ status: 'error';
261
+ data: null;
262
+ error: string;
263
+ };
226
264
 
227
265
  /** @public */
228
266
  declare class UnauthorizedError extends Error {
229
267
  }
230
268
  /** @public */
231
- declare const pagerDutyApiRef: _backstage_frontend_plugin_api.ApiRef<PagerDutyApi>;
269
+ declare const pagerDutyApiRef: _backstage_core_plugin_api.ApiRef<PagerDutyApi>;
232
270
  /** @public */
233
271
  declare class PagerDutyClient implements PagerDutyApi {
234
272
  private readonly config;
@@ -289,6 +327,15 @@ declare class PagerDutyClient implements PagerDutyApi {
289
327
  id: string;
290
328
  isDefault: boolean;
291
329
  }>>;
330
+ createCustomField(request: BackstageCustomFieldCreateRequest, account?: string): Promise<Result<BackstageCustomField>>;
331
+ getCustomFields(account?: string): Promise<BackstageCustomFieldsResponse>;
332
+ getSyncLogs(account?: string, options?: {
333
+ limit?: number;
334
+ offset?: number;
335
+ } & CustomFieldSyncLogFilters): Promise<CustomFieldSyncLogsResponse>;
336
+ updateCustomField(id: number, request: BackstageCustomFieldUpdateRequest, account?: string): Promise<Result<BackstageCustomField>>;
337
+ setCustomFieldEnabled(id: number, enabled: boolean, account?: string): Promise<Result<BackstageCustomField>>;
338
+ deleteCustomField(id: number, account?: string): Promise<Result<void>>;
292
339
  private findByUrl;
293
340
  private request;
294
341
  }
@@ -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.20.0";
3
+ var version = "0.21.0";
4
4
  var main = "dist/index.esm.js";
5
5
  var types = "dist/index.d.ts";
6
6
  var license = "Apache-2.0";
@@ -49,7 +49,7 @@ var dependencies = {
49
49
  "@backstage/plugin-catalog-react": "backstage:^",
50
50
  "@backstage/plugin-home-react": "backstage:^",
51
51
  "@backstage/theme": "backstage:^",
52
- "@backstage/ui": "^0.14.3",
52
+ "@backstage/ui": "backstage:^",
53
53
  "@emotion/react": "^11.11.4",
54
54
  "@emotion/styled": "^11.11.5",
55
55
  "@material-ui/core": "^4.12.2",
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.20.0",
4
+ "version": "0.21.0",
5
5
  "main": "./dist/index.esm.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "license": "Apache-2.0",
@@ -43,17 +43,17 @@
43
43
  "clean": "backstage-cli package clean"
44
44
  },
45
45
  "dependencies": {
46
- "@backstage/catalog-model": "^1.7.6",
47
- "@backstage/core-compat-api": "^0.5.7",
48
- "@backstage/core-components": "^0.18.6",
49
- "@backstage/core-plugin-api": "^1.12.2",
50
- "@backstage/errors": "^1.2.7",
51
- "@backstage/frontend-plugin-api": "^0.13.4",
52
- "@backstage/plugin-catalog": "^1.32.2",
53
- "@backstage/plugin-catalog-react": "^1.21.6",
54
- "@backstage/plugin-home-react": "^0.1.34",
55
- "@backstage/theme": "^0.7.1",
56
- "@backstage/ui": "^0.14.3",
46
+ "@backstage/catalog-model": "^1.9.0",
47
+ "@backstage/core-compat-api": "^0.5.11",
48
+ "@backstage/core-components": "^0.18.10",
49
+ "@backstage/core-plugin-api": "^1.12.6",
50
+ "@backstage/errors": "^1.3.1",
51
+ "@backstage/frontend-plugin-api": "^0.17.1",
52
+ "@backstage/plugin-catalog": "^2.0.5",
53
+ "@backstage/plugin-catalog-react": "^3.0.0",
54
+ "@backstage/plugin-home-react": "^0.1.38",
55
+ "@backstage/theme": "^0.7.3",
56
+ "@backstage/ui": "^0.15.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.4.0",
65
+ "@pagerduty/backstage-plugin-common": "~0.5.0",
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": "^0.35.3",
79
- "@backstage/core-app-api": "^1.19.4",
80
- "@backstage/frontend-defaults": "^0.3.6",
81
- "@backstage/test-utils": "^1.7.14",
78
+ "@backstage/cli": "^0.36.2",
79
+ "@backstage/core-app-api": "^1.20.1",
80
+ "@backstage/frontend-defaults": "^0.5.2",
81
+ "@backstage/test-utils": "^1.7.18",
82
82
  "@testing-library/jest-dom": "^6.6.3",
83
83
  "@types/copyfiles": "^2",
84
84
  "copyfiles": "^2.4.1",
@@ -1,21 +0,0 @@
1
- import { NavItemBlueprint } from '@backstage/frontend-plugin-api';
2
- import { rootRouteRef } from '../routes.esm.js';
3
- import 'react/jsx-runtime';
4
- import '@backstage/plugin-catalog-react';
5
- import '../components/PagerDutyCard/index.esm.js';
6
- import '../components/PagerDutySmallCard/index.esm.js';
7
- import { PagerDutyIcon } from '../components/Icons/index.esm.js';
8
- import '../components/TriggerButton/index.esm.js';
9
- import { convertLegacyRouteRef } from '@backstage/core-compat-api';
10
-
11
- const pagerDutyNavBarItem = NavItemBlueprint.make({
12
- name: "PagerDutyNavBarItem",
13
- params: {
14
- title: "PagerDuty",
15
- icon: PagerDutyIcon,
16
- routeRef: convertLegacyRouteRef(rootRouteRef)
17
- }
18
- });
19
-
20
- export { pagerDutyNavBarItem };
21
- //# sourceMappingURL=nav-items.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nav-items.esm.js","sources":["../../src/alpha/nav-items.tsx"],"sourcesContent":["import { NavItemBlueprint } from \"@backstage/frontend-plugin-api\";\nimport { rootRouteRef } from \"../routes\";\nimport { PagerDutyIcon } from \"../components\";\nimport { convertLegacyRouteRef } from \"@backstage/core-compat-api\";\n\n/** @alpha */\nexport const pagerDutyNavBarItem = NavItemBlueprint.make({\n name: 'PagerDutyNavBarItem',\n params: {\n title: 'PagerDuty',\n icon: PagerDutyIcon,\n routeRef: convertLegacyRouteRef(rootRouteRef),\n }\n});\n"],"names":[],"mappings":";;;;;;;;;;AAMO,MAAM,mBAAA,GAAsB,iBAAiB,IAAA,CAAK;AAAA,EACvD,IAAA,EAAM,qBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,WAAA;AAAA,IACP,IAAA,EAAM,aAAA;AAAA,IACN,QAAA,EAAU,sBAAsB,YAAY;AAAA;AAEhD,CAAC;;;;"}