@backstage-community/plugin-newrelic 0.3.54 → 0.4.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,11 @@
1
1
  # @backstage-community/plugin-newrelic
2
2
 
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - eeb3258: Backstage version bump to v1.34.1
8
+
3
9
  ## 0.3.54
4
10
 
5
11
  ### Patch Changes
@@ -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,yBAAA;AACN,CAAC,EAAA;AAED,MAAM,uBAA0B,GAAA,WAAA,CAAA;AAoBzB,MAAM,cAAsC,CAAA;AAAA,EAChC,YAAA,CAAA;AAAA,EACA,QAAA,CAAA;AAAA,EACA,aAAA,CAAA;AAAA,EACT,OAAA,CAAA;AAAA,EAER,YAAY,OAAkB,EAAA;AAC5B,IAAA,IAAA,CAAK,eAAe,OAAQ,CAAA,YAAA,CAAA;AAC5B,IAAA,IAAA,CAAK,WAAW,OAAQ,CAAA,QAAA,CAAA;AACxB,IAAK,IAAA,CAAA,aAAA,GAAgB,QAAQ,aAAiB,IAAA,uBAAA,CAAA;AAC9C,IAAA,IAAA,CAAK,OAAU,GAAA,EAAA,CAAA;AAAA,GACjB;AAAA,EAEA,MAAM,eAAiD,GAAA;AACrD,IAAI,IAAA,CAAC,KAAK,OAAS,EAAA;AACjB,MAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,YAAA,CAAa,WAAW,OAAO,CAAA,CAAA;AAC3D,MAAA,IAAA,CAAK,OAAU,GAAA,CAAA,EAAG,QAAQ,CAAA,EAAG,KAAK,aAAa,CAAA,0BAAA,CAAA,CAAA;AAAA,KACjD;AAEA,IAAA,MAAM,eAAsC,EAAC,CAAA;AAC7C,IAAA,IAAI,YAAY,IAAK,CAAA,OAAA,CAAA;AAErB,IAAG,GAAA;AACD,MAAA,MAAM,EAAE,WAAa,EAAA,wBAAA,KACnB,MAAM,IAAA,CAAK,cAAc,SAAS,CAAA,CAAA;AAEpC,MAAA,SAAA,GAAY,WAAe,IAAA,EAAA,CAAA;AAC3B,MAAa,YAAA,CAAA,IAAA,CAAK,GAAG,wBAAwB,CAAA,CAAA;AAAA,KAC/C,QAAS,CAAC,CAAC,SAAA,EAAA;AAEX,IAAA,OAAO,EAAE,YAAa,EAAA,CAAA;AAAA,GACxB;AAAA,EAEA,MAAc,cACZ,SACiC,EAAA;AACjC,IAAA,MAAM,QAAW,GAAA,MAAM,IAAK,CAAA,QAAA,CAAS,MAAM,SAAS,CAAA,CAAA;AAEpD,IAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AAChB,MAAA,IAAI,kBAAqB,GAAA,KAAA,CAAA,CAAA;AACzB,MAAI,IAAA;AACF,QAAA,kBAAA,GAAA,CAAsB,MAAM,QAAA,CAAS,IAAK,EAAA,GAAI,KAAO,EAAA,KAAA,CAAA;AAAA,eAC9C,CAAG,EAAA;AAAA,OAEZ;AAEA,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,oCAAA,EACE,kBAAsB,IAAA,QAAA,CAAS,UACjC,CAAA,CAAA;AAAA,OACF,CAAA;AAAA,KACF;AAEA,IAAM,MAAA,YAAA,GAAgB,MAAM,QAAA,CAAS,IAAK,EAAA,CAAA;AAC1C,IAAA,MAAM,UAAa,GAAA,QAAA,CAAS,OAAQ,CAAA,GAAA,CAAI,MAAM,CAAA,CAAA;AAC9C,IAAM,MAAA,WAAA,GAAc,gBAAgB,UAAU,CAAA,CAAA;AAC9C,IAAM,MAAA,cAAA,GAAiB,aAAa,IAAM,EAAA,IAAA,CAAA;AAE1C,IAAO,OAAA;AAAA,MACL,aAAa,cAAkB,IAAA,CAAA,EAAG,IAAK,CAAA,OAAO,SAAS,cAAc,CAAA,CAAA;AAAA,MACrE,0BAA0B,YAAa,CAAA,YAAA;AAAA,KACzC,CAAA;AAAA,GACF;AACF;;;;"}
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;;;;"}
@@ -4,7 +4,6 @@ import NewRelicFetchComponent from '../NewRelicFetchComponent/NewRelicFetchCompo
4
4
  import { Page, Header, HeaderLabel, Content, ContentHeader, SupportButton } from '@backstage/core-components';
5
5
 
6
6
  const NewRelicComponent = () => /* @__PURE__ */ React.createElement(Page, { themeId: "tool" }, /* @__PURE__ */ React.createElement(Header, { title: "New Relic" }, /* @__PURE__ */ React.createElement(HeaderLabel, { label: "Owner", value: "Engineering" })), /* @__PURE__ */ React.createElement(Content, null, /* @__PURE__ */ React.createElement(ContentHeader, { title: "New Relic" }, /* @__PURE__ */ React.createElement(SupportButton, null, "New Relic Application Performance Monitoring")), /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 3, direction: "column" }, /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(NewRelicFetchComponent, null)))));
7
- var NewRelicComponent$1 = NewRelicComponent;
8
7
 
9
- export { NewRelicComponent$1 as default };
8
+ export { NewRelicComponent as default };
10
9
  //# sourceMappingURL=NewRelicComponent.esm.js.map
@@ -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 React from 'react';\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\nconst 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\nexport default NewRelicComponent;\n"],"names":[],"mappings":";;;;;AA4BA,MAAM,iBAAA,GAAoB,sBACvB,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,SAAQ,MACZ,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,UAAO,KAAM,EAAA,WAAA,EAAA,sCACX,WAAY,EAAA,EAAA,KAAA,EAAM,SAAQ,KAAM,EAAA,aAAA,EAAc,CACjD,CACA,kBAAA,KAAA,CAAA,aAAA,CAAC,OACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,aAAc,EAAA,EAAA,KAAA,EAAM,+BAClB,KAAA,CAAA,aAAA,CAAA,aAAA,EAAA,IAAA,EAAc,8CAEf,CACF,CAAA,sCACC,IAAK,EAAA,EAAA,SAAA,EAAS,MAAC,OAAS,EAAA,CAAA,EAAG,WAAU,QACpC,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAA,sCACP,sBAAuB,EAAA,IAAA,CAC1B,CACF,CACF,CACF,CAAA,CAAA;AAGF,0BAAe,iBAAA;;;;"}
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 React from 'react';\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\nconst 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\nexport default NewRelicComponent;\n"],"names":[],"mappings":";;;;;AA4BM,MAAA,iBAAA,GAAoB,sBACvB,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,SAAQ,MACZ,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,UAAO,KAAM,EAAA,WAAA,EAAA,sCACX,WAAY,EAAA,EAAA,KAAA,EAAM,SAAQ,KAAM,EAAA,aAAA,EAAc,CACjD,CACA,kBAAA,KAAA,CAAA,aAAA,CAAC,OACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,aAAc,EAAA,EAAA,KAAA,EAAM,+BAClB,KAAA,CAAA,aAAA,CAAA,aAAA,EAAA,IAAA,EAAc,8CAEf,CACF,CAAA,sCACC,IAAK,EAAA,EAAA,SAAA,EAAS,MAAC,OAAS,EAAA,CAAA,EAAG,WAAU,QACpC,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAA,sCACP,sBAAuB,EAAA,IAAA,CAC1B,CACF,CACF,CACF;;;;"}
@@ -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 React from 'react';\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 React from 'react';\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 +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.default),\n mountPoint: rootRouteRef,\n }),\n);\n"],"names":[],"mappings":";;;AA0BO,MAAM,eAAe,cAAe,CAAA;AAAA,EACzC,EAAI,EAAA,UAAA;AACN,CAAC,EAAA;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,WAAA;AAAA,OACZ;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,YAAc,EAAA,QAAA,EACxB,KAAA,IAAI,cAAe,CAAA,EAAE,YAAc,EAAA,QAAA,EAAU,CAAA;AAAA,KAChD,CAAA;AAAA,GACH;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,YAAA;AAAA,GACR;AACF,CAAC,EAAA;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,OAAO,CAAA;AAAA,IAC9D,UAAY,EAAA,YAAA;AAAA,GACb,CAAA;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.default),\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,OAAO,CAAA;AAAA,IAC9D,UAAY,EAAA;AAAA,GACb;AACH;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage-community/plugin-newrelic",
3
- "version": "0.3.54",
3
+ "version": "0.4.0",
4
4
  "description": "A Backstage plugin that integrates towards New Relic",
5
5
  "backstage": {
6
6
  "role": "frontend-plugin",
@@ -41,8 +41,8 @@
41
41
  "test": "backstage-cli package test"
42
42
  },
43
43
  "dependencies": {
44
- "@backstage/core-components": "^0.15.1",
45
- "@backstage/core-plugin-api": "^1.10.0",
44
+ "@backstage/core-components": "^0.16.2",
45
+ "@backstage/core-plugin-api": "^1.10.2",
46
46
  "@material-ui/core": "^4.12.2",
47
47
  "@material-ui/lab": "4.0.0-alpha.61",
48
48
  "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
@@ -50,9 +50,9 @@
50
50
  "react-use": "^17.2.4"
51
51
  },
52
52
  "devDependencies": {
53
- "@backstage/cli": "^0.28.0",
54
- "@backstage/dev-utils": "^1.1.2",
55
- "@backstage/test-utils": "^1.7.0",
53
+ "@backstage/cli": "^0.29.4",
54
+ "@backstage/dev-utils": "^1.1.5",
55
+ "@backstage/test-utils": "^1.7.3",
56
56
  "@testing-library/dom": "^10.0.0",
57
57
  "@testing-library/jest-dom": "^6.0.0",
58
58
  "@testing-library/react": "^15.0.0",
@@ -69,5 +69,12 @@
69
69
  "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
70
70
  "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
71
71
  },
72
+ "typesVersions": {
73
+ "*": {
74
+ "index": [
75
+ "dist/index.d.ts"
76
+ ]
77
+ }
78
+ },
72
79
  "module": "./dist/index.esm.js"
73
80
  }