@backstage-community/plugin-newrelic 0.20.0 → 0.22.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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # @backstage-community/plugin-newrelic
2
2
 
3
+ ## 0.22.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 31f95e1: Backstage version bump to v1.51.1
8
+
9
+ ## 0.21.0
10
+
11
+ ### Minor Changes
12
+
13
+ - c43ea3a: Backstage version bump to v1.50.2
14
+
3
15
  ## 0.20.0
4
16
 
5
17
  ### Minor Changes
@@ -1,8 +1,8 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { ApiBlueprint, discoveryApiRef, fetchApiRef, PageBlueprint, createFrontendPlugin } from '@backstage/frontend-plugin-api';
3
- import { convertLegacyRouteRef, compatWrapper } from '@backstage/core-compat-api';
2
+ import { ApiBlueprint, fetchApiRef, discoveryApiRef, PageBlueprint, createFrontendPlugin } from '@backstage/frontend-plugin-api';
3
+ import { compatWrapper, convertLegacyRouteRef } from '@backstage/core-compat-api';
4
4
  import ExtensionIcon from '@material-ui/icons/ExtensionOutlined';
5
- import { newRelicApiRef, NewRelicClient } from '../api/index.esm.js';
5
+ import { NewRelicClient, newRelicApiRef } from '../api/index.esm.js';
6
6
  import { rootRouteRef } from '../plugin.esm.js';
7
7
 
8
8
  const newRelicApi = ApiBlueprint.make({
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.esm.js","sources":["../../src/alpha/plugin.tsx"],"sourcesContent":["/*\n * Copyright 2025 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 ApiBlueprint,\n PageBlueprint,\n createFrontendPlugin,\n discoveryApiRef,\n fetchApiRef,\n} from '@backstage/frontend-plugin-api';\nimport {\n compatWrapper,\n convertLegacyRouteRef,\n} from '@backstage/core-compat-api';\nimport ExtensionIcon from '@material-ui/icons/ExtensionOutlined';\n\nimport { newRelicApiRef, NewRelicClient } from '../api';\nimport { rootRouteRef } from '../plugin';\n\n/** @alpha */\nexport const newRelicApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: newRelicApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ discoveryApi, fetchApi }) =>\n new NewRelicClient({ discoveryApi, fetchApi }),\n }),\n});\n\n/** @alpha */\nexport const newRelicPage = PageBlueprint.make({\n params: {\n path: '/new-relic',\n routeRef: convertLegacyRouteRef(rootRouteRef),\n title: 'New Relic',\n icon: <ExtensionIcon />,\n loader: () =>\n import('../components/NewRelicComponent').then(m =>\n compatWrapper(<m.NewRelicComponent />),\n ),\n },\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'newrelic',\n extensions: [newRelicApi, newRelicPage],\n});\n"],"names":[],"mappings":";;;;;;;AAiCa,MAAA,WAAA,GAAc,aAAa,IAAK,CAAA;AAAA,EAC3C,MAAA,EAAQ,kBACN,YAAa,CAAA;AAAA,IACX,GAAK,EAAA,cAAA;AAAA,IACL,IAAM,EAAA;AAAA,MACJ,YAAc,EAAA,eAAA;AAAA,MACd,QAAU,EAAA;AAAA,KACZ;AAAA,IACA,OAAA,EAAS,CAAC,EAAE,YAAc,EAAA,QAAA,EACxB,KAAA,IAAI,cAAe,CAAA,EAAE,YAAc,EAAA,QAAA,EAAU;AAAA,GAChD;AACL,CAAC;AAGY,MAAA,YAAA,GAAe,cAAc,IAAK,CAAA;AAAA,EAC7C,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,YAAA;AAAA,IACN,QAAA,EAAU,sBAAsB,YAAY,CAAA;AAAA,IAC5C,KAAO,EAAA,WAAA;AAAA,IACP,IAAA,sBAAO,aAAc,EAAA,EAAA,CAAA;AAAA,IACrB,MAAQ,EAAA,MACN,OAAO,8CAAiC,CAAE,CAAA,IAAA;AAAA,MAAK,OAC7C,aAAc,iBAAA,GAAA,CAAC,CAAE,CAAA,iBAAA,EAAF,EAAoB,CAAE;AAAA;AACvC;AAEN,CAAC;AAGD,aAAe,oBAAqB,CAAA;AAAA,EAClC,QAAU,EAAA,UAAA;AAAA,EACV,UAAA,EAAY,CAAC,WAAA,EAAa,YAAY;AACxC,CAAC,CAAA;;;;"}
1
+ {"version":3,"file":"plugin.esm.js","sources":["../../src/alpha/plugin.tsx"],"sourcesContent":["/*\n * Copyright 2025 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 ApiBlueprint,\n PageBlueprint,\n createFrontendPlugin,\n discoveryApiRef,\n fetchApiRef,\n} from '@backstage/frontend-plugin-api';\nimport {\n compatWrapper,\n convertLegacyRouteRef,\n} from '@backstage/core-compat-api';\nimport ExtensionIcon from '@material-ui/icons/ExtensionOutlined';\n\nimport { newRelicApiRef, NewRelicClient } from '../api';\nimport { rootRouteRef } from '../plugin';\n\n/** @alpha */\nexport const newRelicApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: newRelicApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ discoveryApi, fetchApi }) =>\n new NewRelicClient({ discoveryApi, fetchApi }),\n }),\n});\n\n/** @alpha */\nexport const newRelicPage = PageBlueprint.make({\n params: {\n path: '/new-relic',\n routeRef: convertLegacyRouteRef(rootRouteRef),\n title: 'New Relic',\n icon: <ExtensionIcon />,\n loader: () =>\n import('../components/NewRelicComponent').then(m =>\n compatWrapper(<m.NewRelicComponent />),\n ),\n },\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'newrelic',\n extensions: [newRelicApi, newRelicPage],\n});\n"],"names":[],"mappings":";;;;;;;AAiCO,MAAM,WAAA,GAAc,aAAa,IAAA,CAAK;AAAA,EAC3C,MAAA,EAAQ,kBACN,YAAA,CAAa;AAAA,IACX,GAAA,EAAK,cAAA;AAAA,IACL,IAAA,EAAM;AAAA,MACJ,YAAA,EAAc,eAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,QAAA,EAAS,KACjC,IAAI,cAAA,CAAe,EAAE,YAAA,EAAc,QAAA,EAAU;AAAA,GAChD;AACL,CAAC;AAGM,MAAM,YAAA,GAAe,cAAc,IAAA,CAAK;AAAA,EAC7C,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,YAAA;AAAA,IACN,QAAA,EAAU,sBAAsB,YAAY,CAAA;AAAA,IAC5C,KAAA,EAAO,WAAA;AAAA,IACP,IAAA,sBAAO,aAAA,EAAA,EAAc,CAAA;AAAA,IACrB,MAAA,EAAQ,MACN,OAAO,8CAAiC,CAAA,CAAE,IAAA;AAAA,MAAK,OAC7C,aAAA,iBAAc,GAAA,CAAC,CAAA,CAAE,iBAAA,EAAF,EAAoB,CAAE;AAAA;AACvC;AAEN,CAAC;AAGD,aAAe,oBAAA,CAAqB;AAAA,EAClC,QAAA,EAAU,UAAA;AAAA,EACV,UAAA,EAAY,CAAC,WAAA,EAAa,YAAY;AACxC,CAAC,CAAA;;;;"}
package/dist/alpha.d.ts CHANGED
@@ -20,8 +20,8 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
20
20
  title: string | undefined;
21
21
  };
22
22
  configInput: {
23
- title?: string | undefined;
24
23
  path?: string | undefined;
24
+ title?: string | undefined;
25
25
  };
26
26
  output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
27
27
  optional: true;
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../src/api/index.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 {\n createApiRef,\n DiscoveryApi,\n FetchApi,\n} from '@backstage/core-plugin-api';\n\nimport parseLinkHeader from 'parse-link-header';\n\nexport type NewRelicApplication = {\n id: number;\n application_summary: NewRelicApplicationSummary;\n name: string;\n language: string;\n health_status: string;\n reporting: boolean;\n settings: NewRelicApplicationSettings;\n links?: NewRelicApplicationLinks;\n};\n\nexport type NewRelicApplicationSummary = {\n apdex_score: number;\n error_rate: number;\n host_count: number;\n instance_count: number;\n response_time: number;\n throughput: number;\n};\n\nexport type NewRelicApplicationSettings = {\n app_apdex_threshold: number;\n end_user_apdex_threshold: number;\n enable_real_user_monitoring: boolean;\n use_server_side_config: boolean;\n};\n\nexport type NewRelicApplicationLinks = {\n application_instances: Array<any>;\n servers: Array<any>;\n application_hosts: Array<any>;\n};\n\nexport type NewRelicApplications = {\n applications: NewRelicApplication[];\n};\n\nexport const newRelicApiRef = createApiRef<NewRelicApi>({\n id: 'plugin.newrelic.service',\n});\n\nconst DEFAULT_PROXY_PATH_BASE = '/newrelic';\n\ntype Options = {\n discoveryApi: DiscoveryApi;\n fetchApi: FetchApi;\n /**\n * Path to use for requests via the proxy, defaults to /newrelic\n */\n proxyPathBase?: string;\n};\n\nexport interface NewRelicApi {\n getApplications(): Promise<NewRelicApplications>;\n}\n\ninterface NewRelicPageReadResult {\n nextPageUrl: string | undefined;\n applicationsFromReadPage: NewRelicApplication[];\n}\n\nexport class NewRelicClient implements NewRelicApi {\n private readonly discoveryApi: DiscoveryApi;\n private readonly fetchApi: FetchApi;\n private readonly proxyPathBase: string;\n private baseUrl: string;\n\n constructor(options: Options) {\n this.discoveryApi = options.discoveryApi;\n this.fetchApi = options.fetchApi;\n this.proxyPathBase = options.proxyPathBase ?? DEFAULT_PROXY_PATH_BASE;\n this.baseUrl = '';\n }\n\n async getApplications(): Promise<NewRelicApplications> {\n if (!this.baseUrl) {\n const proxyUrl = await this.discoveryApi.getBaseUrl('proxy');\n this.baseUrl = `${proxyUrl}${this.proxyPathBase}/apm/api/applications.json`;\n }\n\n const applications: NewRelicApplication[] = [];\n let targetUrl = this.baseUrl;\n\n do {\n const { nextPageUrl, applicationsFromReadPage } =\n await this.fetchNewRelic(targetUrl);\n\n targetUrl = nextPageUrl ?? '';\n applications.push(...applicationsFromReadPage);\n } while (!!targetUrl);\n\n return { applications };\n }\n\n private async fetchNewRelic(\n targetUrl: string,\n ): Promise<NewRelicPageReadResult> {\n const response = await this.fetchApi.fetch(targetUrl);\n\n if (!response.ok) {\n let specificErrorTitle = undefined;\n try {\n specificErrorTitle = (await response.json())?.error?.title;\n } catch (e) {\n /* empty */\n }\n\n throw new Error(\n `Error communicating with New Relic: ${\n specificErrorTitle || response.statusText\n }`,\n );\n }\n\n const readResponse = (await response.json()) as NewRelicApplications;\n const linkHeader = response.headers.get('link');\n const parseResult = parseLinkHeader(linkHeader);\n const nextPageNumber = parseResult?.next?.page;\n\n return {\n nextPageUrl: nextPageNumber && `${this.baseUrl}?page=${nextPageNumber}`,\n applicationsFromReadPage: readResponse.applications,\n };\n }\n}\n"],"names":[],"mappings":";;;AA6DO,MAAM,iBAAiB,YAA0B,CAAA;AAAA,EACtD,EAAI,EAAA;AACN,CAAC;AAED,MAAM,uBAA0B,GAAA,WAAA;AAoBzB,MAAM,cAAsC,CAAA;AAAA,EAChC,YAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACT,OAAA;AAAA,EAER,YAAY,OAAkB,EAAA;AAC5B,IAAA,IAAA,CAAK,eAAe,OAAQ,CAAA,YAAA;AAC5B,IAAA,IAAA,CAAK,WAAW,OAAQ,CAAA,QAAA;AACxB,IAAK,IAAA,CAAA,aAAA,GAAgB,QAAQ,aAAiB,IAAA,uBAAA;AAC9C,IAAA,IAAA,CAAK,OAAU,GAAA,EAAA;AAAA;AACjB,EAEA,MAAM,eAAiD,GAAA;AACrD,IAAI,IAAA,CAAC,KAAK,OAAS,EAAA;AACjB,MAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,YAAA,CAAa,WAAW,OAAO,CAAA;AAC3D,MAAA,IAAA,CAAK,OAAU,GAAA,CAAA,EAAG,QAAQ,CAAA,EAAG,KAAK,aAAa,CAAA,0BAAA,CAAA;AAAA;AAGjD,IAAA,MAAM,eAAsC,EAAC;AAC7C,IAAA,IAAI,YAAY,IAAK,CAAA,OAAA;AAErB,IAAG,GAAA;AACD,MAAA,MAAM,EAAE,WAAa,EAAA,wBAAA,KACnB,MAAM,IAAA,CAAK,cAAc,SAAS,CAAA;AAEpC,MAAA,SAAA,GAAY,WAAe,IAAA,EAAA;AAC3B,MAAa,YAAA,CAAA,IAAA,CAAK,GAAG,wBAAwB,CAAA;AAAA,KAC/C,QAAS,CAAC,CAAC,SAAA;AAEX,IAAA,OAAO,EAAE,YAAa,EAAA;AAAA;AACxB,EAEA,MAAc,cACZ,SACiC,EAAA;AACjC,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,QAAA,CAAS,MAAM,SAAS,CAAA;AAEpD,IAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AAChB,MAAA,IAAI,kBAAqB,GAAA,KAAA,CAAA;AACzB,MAAI,IAAA;AACF,QAAA,kBAAA,GAAA,CAAsB,MAAM,QAAA,CAAS,IAAK,EAAA,GAAI,KAAO,EAAA,KAAA;AAAA,eAC9C,CAAG,EAAA;AAAA;AAIZ,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,oCAAA,EACE,kBAAsB,IAAA,QAAA,CAAS,UACjC,CAAA;AAAA,OACF;AAAA;AAGF,IAAM,MAAA,YAAA,GAAgB,MAAM,QAAA,CAAS,IAAK,EAAA;AAC1C,IAAA,MAAM,UAAa,GAAA,QAAA,CAAS,OAAQ,CAAA,GAAA,CAAI,MAAM,CAAA;AAC9C,IAAM,MAAA,WAAA,GAAc,gBAAgB,UAAU,CAAA;AAC9C,IAAM,MAAA,cAAA,GAAiB,aAAa,IAAM,EAAA,IAAA;AAE1C,IAAO,OAAA;AAAA,MACL,aAAa,cAAkB,IAAA,CAAA,EAAG,IAAK,CAAA,OAAO,SAAS,cAAc,CAAA,CAAA;AAAA,MACrE,0BAA0B,YAAa,CAAA;AAAA,KACzC;AAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../src/api/index.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 {\n createApiRef,\n DiscoveryApi,\n FetchApi,\n} from '@backstage/core-plugin-api';\n\nimport parseLinkHeader from 'parse-link-header';\n\nexport type NewRelicApplication = {\n id: number;\n application_summary: NewRelicApplicationSummary;\n name: string;\n language: string;\n health_status: string;\n reporting: boolean;\n settings: NewRelicApplicationSettings;\n links?: NewRelicApplicationLinks;\n};\n\nexport type NewRelicApplicationSummary = {\n apdex_score: number;\n error_rate: number;\n host_count: number;\n instance_count: number;\n response_time: number;\n throughput: number;\n};\n\nexport type NewRelicApplicationSettings = {\n app_apdex_threshold: number;\n end_user_apdex_threshold: number;\n enable_real_user_monitoring: boolean;\n use_server_side_config: boolean;\n};\n\nexport type NewRelicApplicationLinks = {\n application_instances: Array<any>;\n servers: Array<any>;\n application_hosts: Array<any>;\n};\n\nexport type NewRelicApplications = {\n applications: NewRelicApplication[];\n};\n\nexport const newRelicApiRef = createApiRef<NewRelicApi>({\n id: 'plugin.newrelic.service',\n});\n\nconst DEFAULT_PROXY_PATH_BASE = '/newrelic';\n\ntype Options = {\n discoveryApi: DiscoveryApi;\n fetchApi: FetchApi;\n /**\n * Path to use for requests via the proxy, defaults to /newrelic\n */\n proxyPathBase?: string;\n};\n\nexport interface NewRelicApi {\n getApplications(): Promise<NewRelicApplications>;\n}\n\ninterface NewRelicPageReadResult {\n nextPageUrl: string | undefined;\n applicationsFromReadPage: NewRelicApplication[];\n}\n\nexport class NewRelicClient implements NewRelicApi {\n private readonly discoveryApi: DiscoveryApi;\n private readonly fetchApi: FetchApi;\n private readonly proxyPathBase: string;\n private baseUrl: string;\n\n constructor(options: Options) {\n this.discoveryApi = options.discoveryApi;\n this.fetchApi = options.fetchApi;\n this.proxyPathBase = options.proxyPathBase ?? DEFAULT_PROXY_PATH_BASE;\n this.baseUrl = '';\n }\n\n async getApplications(): Promise<NewRelicApplications> {\n if (!this.baseUrl) {\n const proxyUrl = await this.discoveryApi.getBaseUrl('proxy');\n this.baseUrl = `${proxyUrl}${this.proxyPathBase}/apm/api/applications.json`;\n }\n\n const applications: NewRelicApplication[] = [];\n let targetUrl = this.baseUrl;\n\n do {\n const { nextPageUrl, applicationsFromReadPage } =\n await this.fetchNewRelic(targetUrl);\n\n targetUrl = nextPageUrl ?? '';\n applications.push(...applicationsFromReadPage);\n } while (!!targetUrl);\n\n return { applications };\n }\n\n private async fetchNewRelic(\n targetUrl: string,\n ): Promise<NewRelicPageReadResult> {\n const response = await this.fetchApi.fetch(targetUrl);\n\n if (!response.ok) {\n let specificErrorTitle = undefined;\n try {\n specificErrorTitle = (await response.json())?.error?.title;\n } catch (e) {\n /* empty */\n }\n\n throw new Error(\n `Error communicating with New Relic: ${\n specificErrorTitle || response.statusText\n }`,\n );\n }\n\n const readResponse = (await response.json()) as NewRelicApplications;\n const linkHeader = response.headers.get('link');\n const parseResult = parseLinkHeader(linkHeader);\n const nextPageNumber = parseResult?.next?.page;\n\n return {\n nextPageUrl: nextPageNumber && `${this.baseUrl}?page=${nextPageNumber}`,\n applicationsFromReadPage: readResponse.applications,\n };\n }\n}\n"],"names":[],"mappings":";;;AA6DO,MAAM,iBAAiB,YAAA,CAA0B;AAAA,EACtD,EAAA,EAAI;AACN,CAAC;AAED,MAAM,uBAAA,GAA0B,WAAA;AAoBzB,MAAM,cAAA,CAAsC;AAAA,EAChC,YAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACT,OAAA;AAAA,EAER,YAAY,OAAA,EAAkB;AAC5B,IAAA,IAAA,CAAK,eAAe,OAAA,CAAQ,YAAA;AAC5B,IAAA,IAAA,CAAK,WAAW,OAAA,CAAQ,QAAA;AACxB,IAAA,IAAA,CAAK,aAAA,GAAgB,QAAQ,aAAA,IAAiB,uBAAA;AAC9C,IAAA,IAAA,CAAK,OAAA,GAAU,EAAA;AAAA,EACjB;AAAA,EAEA,MAAM,eAAA,GAAiD;AACrD,IAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,MAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,YAAA,CAAa,WAAW,OAAO,CAAA;AAC3D,MAAA,IAAA,CAAK,OAAA,GAAU,CAAA,EAAG,QAAQ,CAAA,EAAG,KAAK,aAAa,CAAA,0BAAA,CAAA;AAAA,IACjD;AAEA,IAAA,MAAM,eAAsC,EAAC;AAC7C,IAAA,IAAI,YAAY,IAAA,CAAK,OAAA;AAErB,IAAA,GAAG;AACD,MAAA,MAAM,EAAE,WAAA,EAAa,wBAAA,KACnB,MAAM,IAAA,CAAK,cAAc,SAAS,CAAA;AAEpC,MAAA,SAAA,GAAY,WAAA,IAAe,EAAA;AAC3B,MAAA,YAAA,CAAa,IAAA,CAAK,GAAG,wBAAwB,CAAA;AAAA,IAC/C,CAAA,QAAS,CAAC,CAAC,SAAA;AAEX,IAAA,OAAO,EAAE,YAAA,EAAa;AAAA,EACxB;AAAA,EAEA,MAAc,cACZ,SAAA,EACiC;AACjC,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,QAAA,CAAS,MAAM,SAAS,CAAA;AAEpD,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,IAAI,kBAAA,GAAqB,MAAA;AACzB,MAAA,IAAI;AACF,QAAA,kBAAA,GAAA,CAAsB,MAAM,QAAA,CAAS,IAAA,EAAK,GAAI,KAAA,EAAO,KAAA;AAAA,MACvD,SAAS,CAAA,EAAG;AAAA,MAEZ;AAEA,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,oCAAA,EACE,kBAAA,IAAsB,QAAA,CAAS,UACjC,CAAA;AAAA,OACF;AAAA,IACF;AAEA,IAAA,MAAM,YAAA,GAAgB,MAAM,QAAA,CAAS,IAAA,EAAK;AAC1C,IAAA,MAAM,UAAA,GAAa,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAA;AAC9C,IAAA,MAAM,WAAA,GAAc,gBAAgB,UAAU,CAAA;AAC9C,IAAA,MAAM,cAAA,GAAiB,aAAa,IAAA,EAAM,IAAA;AAE1C,IAAA,OAAO;AAAA,MACL,aAAa,cAAA,IAAkB,CAAA,EAAG,IAAA,CAAK,OAAO,SAAS,cAAc,CAAA,CAAA;AAAA,MACrE,0BAA0B,YAAA,CAAa;AAAA,KACzC;AAAA,EACF;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"NewRelicComponent.esm.js","sources":["../../../src/components/NewRelicComponent/NewRelicComponent.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 Grid from '@material-ui/core/Grid';\nimport NewRelicFetchComponent from '../NewRelicFetchComponent';\nimport {\n Header,\n Page,\n Content,\n ContentHeader,\n HeaderLabel,\n SupportButton,\n} from '@backstage/core-components';\n\nexport const NewRelicComponent = () => (\n <Page themeId=\"tool\">\n <Header title=\"New Relic\">\n <HeaderLabel label=\"Owner\" value=\"Engineering\" />\n </Header>\n <Content>\n <ContentHeader title=\"New Relic\">\n <SupportButton>\n New Relic Application Performance Monitoring\n </SupportButton>\n </ContentHeader>\n <Grid container spacing={3} direction=\"column\">\n <Grid item>\n <NewRelicFetchComponent />\n </Grid>\n </Grid>\n </Content>\n </Page>\n);\n"],"names":[],"mappings":";;;;;AA2BO,MAAM,iBAAoB,GAAA,sBAC9B,IAAA,CAAA,IAAA,EAAA,EAAK,SAAQ,MACZ,EAAA,QAAA,EAAA;AAAA,kBAAC,GAAA,CAAA,MAAA,EAAA,EAAO,OAAM,WACZ,EAAA,QAAA,kBAAA,GAAA,CAAC,eAAY,KAAM,EAAA,OAAA,EAAQ,KAAM,EAAA,aAAA,EAAc,CACjD,EAAA,CAAA;AAAA,uBACC,OACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,iBAAc,KAAM,EAAA,WAAA,EACnB,QAAC,kBAAA,GAAA,CAAA,aAAA,EAAA,EAAc,0DAEf,CACF,EAAA,CAAA;AAAA,oBACC,GAAA,CAAA,IAAA,EAAA,EAAK,SAAS,EAAA,IAAA,EAAC,SAAS,CAAG,EAAA,SAAA,EAAU,QACpC,EAAA,QAAA,kBAAA,GAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EACR,QAAC,kBAAA,GAAA,CAAA,sBAAA,EAAA,EAAuB,GAC1B,CACF,EAAA;AAAA,GACF,EAAA;AAAA,CACF,EAAA;;;;"}
1
+ {"version":3,"file":"NewRelicComponent.esm.js","sources":["../../../src/components/NewRelicComponent/NewRelicComponent.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 Grid from '@material-ui/core/Grid';\nimport NewRelicFetchComponent from '../NewRelicFetchComponent';\nimport {\n Header,\n Page,\n Content,\n ContentHeader,\n HeaderLabel,\n SupportButton,\n} from '@backstage/core-components';\n\nexport const NewRelicComponent = () => (\n <Page themeId=\"tool\">\n <Header title=\"New Relic\">\n <HeaderLabel label=\"Owner\" value=\"Engineering\" />\n </Header>\n <Content>\n <ContentHeader title=\"New Relic\">\n <SupportButton>\n New Relic Application Performance Monitoring\n </SupportButton>\n </ContentHeader>\n <Grid container spacing={3} direction=\"column\">\n <Grid item>\n <NewRelicFetchComponent />\n </Grid>\n </Grid>\n </Content>\n </Page>\n);\n"],"names":[],"mappings":";;;;;AA2BO,MAAM,iBAAA,GAAoB,sBAC/B,IAAA,CAAC,IAAA,EAAA,EAAK,SAAQ,MAAA,EACZ,QAAA,EAAA;AAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,OAAM,WAAA,EACZ,QAAA,kBAAA,GAAA,CAAC,eAAY,KAAA,EAAM,OAAA,EAAQ,KAAA,EAAM,aAAA,EAAc,CAAA,EACjD,CAAA;AAAA,uBACC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,iBAAc,KAAA,EAAM,WAAA,EACnB,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,0DAEf,CAAA,EACF,CAAA;AAAA,oBACA,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAS,IAAA,EAAC,SAAS,CAAA,EAAG,SAAA,EAAU,QAAA,EACpC,QAAA,kBAAA,GAAA,CAAC,QAAK,IAAA,EAAI,IAAA,EACR,QAAA,kBAAA,GAAA,CAAC,sBAAA,EAAA,EAAuB,GAC1B,CAAA,EACF;AAAA,GAAA,EACF;AAAA,CAAA,EACF;;;;"}
@@ -1,2 +1,6 @@
1
- export { NewRelicComponent } from './NewRelicComponent.esm.js';
1
+ import { NewRelicComponent } from './NewRelicComponent.esm.js';
2
+
3
+
4
+
5
+ export { NewRelicComponent };
2
6
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"NewRelicFetchComponent.esm.js","sources":["../../../src/components/NewRelicFetchComponent/NewRelicFetchComponent.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 Alert from '@material-ui/lab/Alert';\nimport useAsync from 'react-use/esm/useAsync';\nimport { newRelicApiRef, NewRelicApplications } from '../../api';\n\nimport { Progress, Table, TableColumn } from '@backstage/core-components';\nimport { useApi } from '@backstage/core-plugin-api';\n\nconst sortNumeric =\n <F extends string>(field: F) =>\n (a: { [key in F]: number }, b: { [key in F]: number }) => {\n return a[field] - b[field];\n };\n\ntype NewRelicTableData = {\n name: string;\n responseTime: number;\n throughput: number;\n errorRate: number;\n instanceCount: number;\n apdexScore: number;\n};\n\nexport const NewRelicAPMTable = ({ applications }: NewRelicApplications) => {\n const columns: TableColumn<NewRelicTableData>[] = [\n { title: 'Application', field: 'name', searchable: true },\n {\n title: 'Response Time (ms)',\n field: 'responseTime',\n customSort: sortNumeric('responseTime'),\n searchable: false,\n },\n {\n title: 'Throughput (rpm)',\n field: 'throughput',\n customSort: sortNumeric('throughput'),\n searchable: false,\n },\n {\n title: 'Error Rate (%)',\n field: 'errorRate',\n customSort: sortNumeric('errorRate'),\n searchable: false,\n },\n {\n title: 'Instance Count',\n field: 'instanceCount',\n customSort: sortNumeric('instanceCount'),\n searchable: false,\n },\n {\n title: 'Apdex',\n field: 'apdexScore',\n customSort: sortNumeric('apdexScore'),\n searchable: false,\n },\n ];\n const data: Array<NewRelicTableData> = applications.map(app => {\n const { name, application_summary: applicationSummary } = app;\n const {\n response_time: responseTime,\n throughput,\n error_rate: errorRate,\n instance_count: instanceCount,\n apdex_score: apdexScore,\n } = applicationSummary;\n\n return {\n name,\n responseTime,\n throughput,\n errorRate,\n instanceCount,\n apdexScore,\n };\n });\n\n return (\n <Table\n title=\"Application Performance Monitoring\"\n options={{ search: true, paging: true }}\n columns={columns}\n data={data}\n />\n );\n};\n\nconst NewRelicFetchComponent = () => {\n const api = useApi(newRelicApiRef);\n\n const { value, loading, error } = useAsync(async () => {\n const data = await api.getApplications();\n return data.applications.filter(application => {\n return application.hasOwnProperty('application_summary');\n });\n }, []);\n\n if (loading) {\n return <Progress />;\n } else if (error) {\n return <Alert severity=\"error\">{error.message}</Alert>;\n }\n\n return <NewRelicAPMTable applications={value || []} />;\n};\n\nexport default NewRelicFetchComponent;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NewRelicFetchComponent.esm.js","sources":["../../../src/components/NewRelicFetchComponent/NewRelicFetchComponent.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 Alert from '@material-ui/lab/Alert';\nimport useAsync from 'react-use/esm/useAsync';\nimport { newRelicApiRef, NewRelicApplications } from '../../api';\n\nimport { Progress, Table, TableColumn } from '@backstage/core-components';\nimport { useApi } from '@backstage/core-plugin-api';\n\nconst sortNumeric =\n <F extends string>(field: F) =>\n (a: { [key in F]: number }, b: { [key in F]: number }) => {\n return a[field] - b[field];\n };\n\ntype NewRelicTableData = {\n name: string;\n responseTime: number;\n throughput: number;\n errorRate: number;\n instanceCount: number;\n apdexScore: number;\n};\n\nexport const NewRelicAPMTable = ({ applications }: NewRelicApplications) => {\n const columns: TableColumn<NewRelicTableData>[] = [\n { title: 'Application', field: 'name', searchable: true },\n {\n title: 'Response Time (ms)',\n field: 'responseTime',\n customSort: sortNumeric('responseTime'),\n searchable: false,\n },\n {\n title: 'Throughput (rpm)',\n field: 'throughput',\n customSort: sortNumeric('throughput'),\n searchable: false,\n },\n {\n title: 'Error Rate (%)',\n field: 'errorRate',\n customSort: sortNumeric('errorRate'),\n searchable: false,\n },\n {\n title: 'Instance Count',\n field: 'instanceCount',\n customSort: sortNumeric('instanceCount'),\n searchable: false,\n },\n {\n title: 'Apdex',\n field: 'apdexScore',\n customSort: sortNumeric('apdexScore'),\n searchable: false,\n },\n ];\n const data: Array<NewRelicTableData> = applications.map(app => {\n const { name, application_summary: applicationSummary } = app;\n const {\n response_time: responseTime,\n throughput,\n error_rate: errorRate,\n instance_count: instanceCount,\n apdex_score: apdexScore,\n } = applicationSummary;\n\n return {\n name,\n responseTime,\n throughput,\n errorRate,\n instanceCount,\n apdexScore,\n };\n });\n\n return (\n <Table\n title=\"Application Performance Monitoring\"\n options={{ search: true, paging: true }}\n columns={columns}\n data={data}\n />\n );\n};\n\nconst NewRelicFetchComponent = () => {\n const api = useApi(newRelicApiRef);\n\n const { value, loading, error } = useAsync(async () => {\n const data = await api.getApplications();\n return data.applications.filter(application => {\n return application.hasOwnProperty('application_summary');\n });\n }, []);\n\n if (loading) {\n return <Progress />;\n } else if (error) {\n return <Alert severity=\"error\">{error.message}</Alert>;\n }\n\n return <NewRelicAPMTable applications={value || []} />;\n};\n\nexport default NewRelicFetchComponent;\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { newRelicApiRef, NewRelicClient } from './api/index.esm.js';
2
- import { createRouteRef, createPlugin, createApiFactory, discoveryApiRef, fetchApiRef, createRoutableExtension } from '@backstage/core-plugin-api';
1
+ import { NewRelicClient, newRelicApiRef } from './api/index.esm.js';
2
+ import { createRouteRef, createPlugin, createApiFactory, fetchApiRef, discoveryApiRef, createRoutableExtension } from '@backstage/core-plugin-api';
3
3
 
4
4
  const rootRouteRef = createRouteRef({
5
5
  id: "newrelic"
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.esm.js","sources":["../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 { NewRelicClient, newRelicApiRef } from './api';\nimport {\n createApiFactory,\n createPlugin,\n createRouteRef,\n discoveryApiRef,\n fetchApiRef,\n createRoutableExtension,\n} from '@backstage/core-plugin-api';\n\nexport const rootRouteRef = createRouteRef({\n id: 'newrelic',\n});\n\n/** @public */\nexport const newRelicPlugin = createPlugin({\n id: 'newrelic',\n apis: [\n createApiFactory({\n api: newRelicApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ discoveryApi, fetchApi }) =>\n new NewRelicClient({ discoveryApi, fetchApi }),\n }),\n ],\n routes: {\n root: rootRouteRef,\n },\n});\n\n/** @public */\nexport const NewRelicPage = newRelicPlugin.provide(\n createRoutableExtension({\n name: 'NewRelicPage',\n component: () =>\n import('./components/NewRelicComponent').then(m => m.NewRelicComponent),\n mountPoint: rootRouteRef,\n }),\n);\n"],"names":[],"mappings":";;;AA0BO,MAAM,eAAe,cAAe,CAAA;AAAA,EACzC,EAAI,EAAA;AACN,CAAC;AAGM,MAAM,iBAAiB,YAAa,CAAA;AAAA,EACzC,EAAI,EAAA,UAAA;AAAA,EACJ,IAAM,EAAA;AAAA,IACJ,gBAAiB,CAAA;AAAA,MACf,GAAK,EAAA,cAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,YAAc,EAAA,eAAA;AAAA,QACd,QAAU,EAAA;AAAA,OACZ;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,YAAc,EAAA,QAAA,EACxB,KAAA,IAAI,cAAe,CAAA,EAAE,YAAc,EAAA,QAAA,EAAU;AAAA,KAChD;AAAA,GACH;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA;AAAA;AAEV,CAAC;AAGM,MAAM,eAAe,cAAe,CAAA,OAAA;AAAA,EACzC,uBAAwB,CAAA;AAAA,IACtB,IAAM,EAAA,cAAA;AAAA,IACN,SAAA,EAAW,MACT,OAAO,6CAAgC,EAAE,IAAK,CAAA,CAAA,CAAA,KAAK,EAAE,iBAAiB,CAAA;AAAA,IACxE,UAAY,EAAA;AAAA,GACb;AACH;;;;"}
1
+ {"version":3,"file":"plugin.esm.js","sources":["../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 { NewRelicClient, newRelicApiRef } from './api';\nimport {\n createApiFactory,\n createPlugin,\n createRouteRef,\n discoveryApiRef,\n fetchApiRef,\n createRoutableExtension,\n} from '@backstage/core-plugin-api';\n\nexport const rootRouteRef = createRouteRef({\n id: 'newrelic',\n});\n\n/** @public */\nexport const newRelicPlugin = createPlugin({\n id: 'newrelic',\n apis: [\n createApiFactory({\n api: newRelicApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ discoveryApi, fetchApi }) =>\n new NewRelicClient({ discoveryApi, fetchApi }),\n }),\n ],\n routes: {\n root: rootRouteRef,\n },\n});\n\n/** @public */\nexport const NewRelicPage = newRelicPlugin.provide(\n createRoutableExtension({\n name: 'NewRelicPage',\n component: () =>\n import('./components/NewRelicComponent').then(m => m.NewRelicComponent),\n mountPoint: rootRouteRef,\n }),\n);\n"],"names":[],"mappings":";;;AA0BO,MAAM,eAAe,cAAA,CAAe;AAAA,EACzC,EAAA,EAAI;AACN,CAAC;AAGM,MAAM,iBAAiB,YAAA,CAAa;AAAA,EACzC,EAAA,EAAI,UAAA;AAAA,EACJ,IAAA,EAAM;AAAA,IACJ,gBAAA,CAAiB;AAAA,MACf,GAAA,EAAK,cAAA;AAAA,MACL,IAAA,EAAM;AAAA,QACJ,YAAA,EAAc,eAAA;AAAA,QACd,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,QAAA,EAAS,KACjC,IAAI,cAAA,CAAe,EAAE,YAAA,EAAc,QAAA,EAAU;AAAA,KAChD;AAAA,GACH;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM;AAAA;AAEV,CAAC;AAGM,MAAM,eAAe,cAAA,CAAe,OAAA;AAAA,EACzC,uBAAA,CAAwB;AAAA,IACtB,IAAA,EAAM,cAAA;AAAA,IACN,SAAA,EAAW,MACT,OAAO,6CAAgC,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,iBAAiB,CAAA;AAAA,IACxE,UAAA,EAAY;AAAA,GACb;AACH;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage-community/plugin-newrelic",
3
- "version": "0.20.0",
3
+ "version": "0.22.0",
4
4
  "description": "A Backstage plugin that integrates towards New Relic",
5
5
  "backstage": {
6
6
  "role": "frontend-plugin",
@@ -66,10 +66,10 @@
66
66
  "test": "backstage-cli package test"
67
67
  },
68
68
  "dependencies": {
69
- "@backstage/core-compat-api": "^0.5.9",
70
- "@backstage/core-components": "^0.18.8",
71
- "@backstage/core-plugin-api": "^1.12.4",
72
- "@backstage/frontend-plugin-api": "^0.15.1",
69
+ "@backstage/core-compat-api": "^0.5.11",
70
+ "@backstage/core-components": "^0.18.10",
71
+ "@backstage/core-plugin-api": "^1.12.6",
72
+ "@backstage/frontend-plugin-api": "^0.17.1",
73
73
  "@material-ui/core": "^4.12.2",
74
74
  "@material-ui/icons": "^4.9.1",
75
75
  "@material-ui/lab": "4.0.0-alpha.61",
@@ -78,9 +78,9 @@
78
78
  "react-use": "^17.2.4"
79
79
  },
80
80
  "devDependencies": {
81
- "@backstage/cli": "^0.36.0",
82
- "@backstage/dev-utils": "^1.1.21",
83
- "@backstage/test-utils": "^1.7.16",
81
+ "@backstage/cli": "^0.36.2",
82
+ "@backstage/dev-utils": "^1.1.23",
83
+ "@backstage/test-utils": "^1.7.18",
84
84
  "@testing-library/dom": "^10.0.0",
85
85
  "@testing-library/jest-dom": "^6.0.0",
86
86
  "@testing-library/react": "^15.0.0",