@backstage/plugin-devtools 0.0.0-nightly-20260918023200 → 0.0.0-nightly-20260920023043

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,18 +1,18 @@
1
1
  # @backstage/plugin-devtools
2
2
 
3
- ## 0.0.0-nightly-20260918023200
3
+ ## 0.0.0-nightly-20260920023043
4
4
 
5
5
  ### Patch Changes
6
6
 
7
7
  - Updated dependencies
8
- - @backstage/core-compat-api@0.0.0-nightly-20260918023200
9
- - @backstage/core-components@0.18.14
10
- - @backstage/core-plugin-api@1.12.10
11
- - @backstage/errors@1.3.1
12
- - @backstage/frontend-plugin-api@0.18.1
8
+ - @backstage/errors@0.0.0-nightly-20260920023043
9
+ - @backstage/core-components@0.0.0-nightly-20260920023043
10
+ - @backstage/core-plugin-api@0.0.0-nightly-20260920023043
11
+ - @backstage/frontend-plugin-api@0.0.0-nightly-20260920023043
12
+ - @backstage/plugin-permission-react@0.0.0-nightly-20260920023043
13
+ - @backstage/core-compat-api@0.0.0-nightly-20260920023043
13
14
  - @backstage/ui@0.18.0
14
- - @backstage/plugin-devtools-common@0.1.26
15
- - @backstage/plugin-permission-react@0.5.5
15
+ - @backstage/plugin-devtools-common@0.0.0-nightly-20260920023043
16
16
 
17
17
  ## 0.1.43
18
18
 
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.esm.js","sources":["../../src/alpha/plugin.tsx"],"sourcesContent":["/*\n * Copyright 2023 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 createFrontendPlugin,\n coreExtensionData,\n discoveryApiRef,\n fetchApiRef,\n ApiBlueprint,\n PageBlueprint,\n SubPageBlueprint,\n} from '@backstage/frontend-plugin-api';\n\nimport { devToolsApiRef, DevToolsClient } from '../api';\nimport BuildIcon from '@material-ui/icons/Build';\nimport { rootRouteRef } from '../routes';\nimport {\n devToolsConfigReadPermission,\n devToolsInfoReadPermission,\n} from '@backstage/plugin-devtools-common';\nimport { devToolsTaskSchedulerReadPermission } from '@backstage/plugin-devtools-common/alpha';\n\n/** @alpha */\nexport const devToolsApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: devToolsApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ discoveryApi, fetchApi }) =>\n new DevToolsClient({ discoveryApi, fetchApi }),\n }),\n});\n\n/** @alpha */\nexport const devToolsPage = PageBlueprint.makeWithOverrides({\n factory(originalFactory, { inputs }) {\n const pages = [...inputs.pages].sort((left, right) => {\n const leftPath = left.get(coreExtensionData.routePath);\n const rightPath = right.get(coreExtensionData.routePath);\n\n if (leftPath === 'info' && rightPath !== 'info') {\n return -1;\n }\n if (leftPath !== 'info' && rightPath === 'info') {\n return 1;\n }\n\n return 0;\n });\n\n return originalFactory(\n {\n path: '/devtools',\n routeRef: rootRouteRef,\n title: 'DevTools',\n icon: <BuildIcon fontSize=\"inherit\" />,\n },\n {\n inputs: {\n pages,\n },\n },\n );\n },\n});\n\n/** @alpha */\nexport const devToolsInfoPage = SubPageBlueprint.make({\n name: 'info',\n params: {\n path: 'info',\n title: 'Info',\n loader: async () => {\n const [m, { Content }, { RequirePermission }] = await Promise.all([\n import('../components/Content'),\n import('@backstage/core-components'),\n import('@backstage/plugin-permission-react'),\n ]);\n return (\n <Content>\n <RequirePermission permission={devToolsInfoReadPermission}>\n <m.InfoContent />\n </RequirePermission>\n </Content>\n );\n },\n },\n});\n\n/** @alpha */\nexport const devToolsConfigPage = SubPageBlueprint.make({\n name: 'config',\n params: {\n path: 'config',\n title: 'Config',\n loader: async () => {\n const [m, { Content }, { RequirePermission }] = await Promise.all([\n import('../components/Content'),\n import('@backstage/core-components'),\n import('@backstage/plugin-permission-react'),\n ]);\n return (\n <Content>\n <RequirePermission permission={devToolsConfigReadPermission}>\n <m.ConfigContent />\n </RequirePermission>\n </Content>\n );\n },\n },\n});\n\n/** @alpha */\nexport const devToolsScheduledTasksPage = SubPageBlueprint.make({\n name: 'scheduled-tasks',\n params: {\n path: 'scheduled-tasks',\n title: 'Scheduled Tasks',\n loader: async () => {\n const [m, { Content }, { RequirePermission }] = await Promise.all([\n import('../components/Content'),\n import('@backstage/core-components'),\n import('@backstage/plugin-permission-react'),\n ]);\n return (\n <Content>\n <RequirePermission permission={devToolsTaskSchedulerReadPermission}>\n <m.ScheduledTasksContent />\n </RequirePermission>\n </Content>\n );\n },\n },\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'devtools',\n title: 'DevTools',\n icon: <BuildIcon fontSize=\"inherit\" />,\n info: { packageJson: () => import('../../package.json') },\n routes: {\n root: rootRouteRef,\n },\n extensions: [\n devToolsApi,\n devToolsPage,\n devToolsInfoPage,\n devToolsConfigPage,\n devToolsScheduledTasksPage,\n ],\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.esm.js","sources":["../../src/alpha/plugin.tsx"],"sourcesContent":["/*\n * Copyright 2023 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 createFrontendPlugin,\n coreExtensionData,\n discoveryApiRef,\n fetchApiRef,\n ApiBlueprint,\n PageBlueprint,\n SubPageBlueprint,\n} from '@backstage/frontend-plugin-api';\n\nimport { devToolsApiRef, DevToolsClient } from '../api';\nimport BuildIcon from '@material-ui/icons/Build';\nimport { rootRouteRef } from '../routes';\nimport {\n devToolsConfigReadPermission,\n devToolsInfoReadPermission,\n} from '@backstage/plugin-devtools-common';\nimport { devToolsTaskSchedulerReadPermission } from '@backstage/plugin-devtools-common/alpha';\n\n/** @alpha */\nexport const devToolsApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: devToolsApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ discoveryApi, fetchApi }) =>\n new DevToolsClient({ discoveryApi, fetchApi }),\n }),\n});\n\n/** @alpha */\nexport const devToolsPage = PageBlueprint.makeWithOverrides({\n factory(originalFactory, { inputs }) {\n const pages = [...inputs.pages].sort((left, right) => {\n const leftPath = left.get(coreExtensionData.routePath);\n const rightPath = right.get(coreExtensionData.routePath);\n\n if (leftPath === 'info' && rightPath !== 'info') {\n return -1;\n }\n if (leftPath !== 'info' && rightPath === 'info') {\n return 1;\n }\n\n return 0;\n });\n\n return originalFactory(\n {\n path: '/devtools',\n routeRef: rootRouteRef,\n title: 'DevTools',\n icon: <BuildIcon fontSize=\"inherit\" />,\n },\n {\n inputs: {\n pages,\n },\n },\n );\n },\n});\n\n/** @alpha */\nexport const devToolsInfoPage = SubPageBlueprint.make({\n name: 'info',\n params: {\n path: 'info',\n title: 'Info',\n loader: async () => {\n const [m, { Content }, { RequirePermission }] = await Promise.all([\n import('../components/Content'),\n import('@backstage/core-components'),\n import('@backstage/plugin-permission-react'),\n ]);\n return (\n <Content>\n <RequirePermission permission={devToolsInfoReadPermission}>\n <m.InfoContent />\n </RequirePermission>\n </Content>\n );\n },\n },\n});\n\n/** @alpha */\nexport const devToolsConfigPage = SubPageBlueprint.make({\n name: 'config',\n params: {\n path: 'config',\n title: 'Config',\n loader: async () => {\n const [m, { Content }, { RequirePermission }] = await Promise.all([\n import('../components/Content'),\n import('@backstage/core-components'),\n import('@backstage/plugin-permission-react'),\n ]);\n return (\n <Content>\n <RequirePermission permission={devToolsConfigReadPermission}>\n <m.ConfigContent />\n </RequirePermission>\n </Content>\n );\n },\n },\n});\n\n/** @alpha */\nexport const devToolsScheduledTasksPage = SubPageBlueprint.make({\n name: 'scheduled-tasks',\n params: {\n path: 'scheduled-tasks',\n title: 'Scheduled Tasks',\n loader: async () => {\n const [m, { Content }, { RequirePermission }] = await Promise.all([\n import('../components/Content'),\n import('@backstage/core-components'),\n import('@backstage/plugin-permission-react'),\n ]);\n return (\n <Content>\n <RequirePermission permission={devToolsTaskSchedulerReadPermission}>\n <m.ScheduledTasksContent />\n </RequirePermission>\n </Content>\n );\n },\n },\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'devtools',\n title: 'DevTools',\n icon: <BuildIcon fontSize=\"inherit\" />,\n info: { packageJson: () => import('../../package.json') },\n routes: {\n root: rootRouteRef,\n },\n extensions: [\n devToolsApi,\n devToolsPage,\n devToolsInfoPage,\n devToolsConfigPage,\n devToolsScheduledTasksPage,\n ],\n});\n"],"names":[],"mappings":";;;;;;;;;AAoCO,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,iBAAA,CAAkB;AAAA,EAC1D,OAAA,CAAQ,eAAA,EAAiB,EAAE,MAAA,EAAO,EAAG;AACnC,IAAA,MAAM,KAAA,GAAQ,CAAC,GAAG,MAAA,CAAO,KAAK,CAAA,CAAE,IAAA,CAAK,CAAC,IAAA,EAAM,KAAA,KAAU;AACpD,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,iBAAA,CAAkB,SAAS,CAAA;AACrD,MAAA,MAAM,SAAA,GAAY,KAAA,CAAM,GAAA,CAAI,iBAAA,CAAkB,SAAS,CAAA;AAEvD,MAAA,IAAI,QAAA,KAAa,MAAA,IAAU,SAAA,KAAc,MAAA,EAAQ;AAC/C,QAAA,OAAO,EAAA;AAAA,MACT;AACA,MAAA,IAAI,QAAA,KAAa,MAAA,IAAU,SAAA,KAAc,MAAA,EAAQ;AAC/C,QAAA,OAAO,CAAA;AAAA,MACT;AAEA,MAAA,OAAO,CAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,OAAO,eAAA;AAAA,MACL;AAAA,QACE,IAAA,EAAM,WAAA;AAAA,QACN,QAAA,EAAU,YAAA;AAAA,QACV,KAAA,EAAO,UAAA;AAAA,QACP,IAAA,kBAAM,GAAA,CAAC,SAAA,EAAA,EAAU,QAAA,EAAS,SAAA,EAAU;AAAA,OACtC;AAAA,MACA;AAAA,QACE,MAAA,EAAQ;AAAA,UACN;AAAA;AACF;AACF,KACF;AAAA,EACF;AACF,CAAC;AAGM,MAAM,gBAAA,GAAmB,iBAAiB,IAAA,CAAK;AAAA,EACpD,IAAA,EAAM,MAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,KAAA,EAAO,MAAA;AAAA,IACP,QAAQ,YAAY;AAClB,MAAA,MAAM,CAAC,CAAA,EAAG,EAAE,OAAA,EAAQ,EAAG,EAAE,iBAAA,EAAmB,CAAA,GAAI,MAAM,OAAA,CAAQ,GAAA,CAAI;AAAA,QAChE,OAAO,oCAAuB,CAAA;AAAA,QAC9B,OAAO,4BAA4B,CAAA;AAAA,QACnC,OAAO,oCAAoC;AAAA,OAC5C,CAAA;AACD,MAAA,uBACE,GAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,UAAA,EAAY,0BAAA,EAC7B,QAAA,kBAAA,GAAA,CAAC,CAAA,CAAE,WAAA,EAAF,EAAc,CAAA,EACjB,CAAA,EACF,CAAA;AAAA,IAEJ;AAAA;AAEJ,CAAC;AAGM,MAAM,kBAAA,GAAqB,iBAAiB,IAAA,CAAK;AAAA,EACtD,IAAA,EAAM,QAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,QAAA;AAAA,IACN,KAAA,EAAO,QAAA;AAAA,IACP,QAAQ,YAAY;AAClB,MAAA,MAAM,CAAC,CAAA,EAAG,EAAE,OAAA,EAAQ,EAAG,EAAE,iBAAA,EAAmB,CAAA,GAAI,MAAM,OAAA,CAAQ,GAAA,CAAI;AAAA,QAChE,OAAO,oCAAuB,CAAA;AAAA,QAC9B,OAAO,4BAA4B,CAAA;AAAA,QACnC,OAAO,oCAAoC;AAAA,OAC5C,CAAA;AACD,MAAA,uBACE,GAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,UAAA,EAAY,4BAAA,EAC7B,QAAA,kBAAA,GAAA,CAAC,CAAA,CAAE,aAAA,EAAF,EAAgB,CAAA,EACnB,CAAA,EACF,CAAA;AAAA,IAEJ;AAAA;AAEJ,CAAC;AAGM,MAAM,0BAAA,GAA6B,iBAAiB,IAAA,CAAK;AAAA,EAC9D,IAAA,EAAM,iBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,iBAAA;AAAA,IACN,KAAA,EAAO,iBAAA;AAAA,IACP,QAAQ,YAAY;AAClB,MAAA,MAAM,CAAC,CAAA,EAAG,EAAE,OAAA,EAAQ,EAAG,EAAE,iBAAA,EAAmB,CAAA,GAAI,MAAM,OAAA,CAAQ,GAAA,CAAI;AAAA,QAChE,OAAO,oCAAuB,CAAA;AAAA,QAC9B,OAAO,4BAA4B,CAAA;AAAA,QACnC,OAAO,oCAAoC;AAAA,OAC5C,CAAA;AACD,MAAA,uBACE,GAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,UAAA,EAAY,mCAAA,EAC7B,QAAA,kBAAA,GAAA,CAAC,CAAA,CAAE,qBAAA,EAAF,EAAwB,CAAA,EAC3B,CAAA,EACF,CAAA;AAAA,IAEJ;AAAA;AAEJ,CAAC;AAGD,aAAe,oBAAA,CAAqB;AAAA,EAClC,QAAA,EAAU,UAAA;AAAA,EACV,KAAA,EAAO,UAAA;AAAA,EACP,IAAA,kBAAM,GAAA,CAAC,SAAA,EAAA,EAAU,QAAA,EAAS,SAAA,EAAU,CAAA;AAAA,EACpC,MAAM,EAAE,WAAA,EAAa,MAAM,OAAO,wBAAoB,CAAA,EAAE;AAAA,EACxD,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA,UAAA,EAAY;AAAA,IACV,WAAA;AAAA,IACA,YAAA;AAAA,IACA,gBAAA;AAAA,IACA,kBAAA;AAAA,IACA;AAAA;AAEJ,CAAC,CAAA;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DevToolsApi.esm.js","sources":["../../src/api/DevToolsApi.ts"],"sourcesContent":["/*\n * Copyright 2022 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 { createApiRef } from '@backstage/core-plugin-api';\nimport {\n ConfigInfo,\n DevToolsInfo,\n ExternalDependency,\n} from '@backstage/plugin-devtools-common';\nimport {\n ScheduledTasks,\n TriggerScheduledTask,\n} from '@backstage/plugin-devtools-common/alpha';\n\nexport const devToolsApiRef = createApiRef<DevToolsApi>({\n id: 'plugin.devtools.service',\n});\n\nexport interface DevToolsApi {\n getConfig(): Promise<ConfigInfo | undefined>;\n getExternalDependencies(): Promise<ExternalDependency[] | undefined>;\n getInfo(): Promise<DevToolsInfo | undefined>;\n getScheduledTasksByPlugin(plugin: string): Promise<ScheduledTasks>;\n triggerScheduledTask(\n plugin: string,\n taskId: string,\n ): Promise<TriggerScheduledTask>;\n cancelScheduledTask(plugin: string, taskId: string): Promise<void>;\n}\n"],"names":[],"mappings":";;AA2BO,MAAM,iBAAiB,YAAA,CAA0B;AAAA,EACtD,EAAA,EAAI;AACN,CAAC;;;;"}
1
+ {"version":3,"file":"DevToolsApi.esm.js","sources":["../../src/api/DevToolsApi.ts"],"sourcesContent":["/*\n * Copyright 2022 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 { createApiRef } from '@backstage/core-plugin-api';\nimport {\n ConfigInfo,\n DevToolsInfo,\n ExternalDependency,\n} from '@backstage/plugin-devtools-common';\nimport {\n ScheduledTasks,\n TriggerScheduledTask,\n} from '@backstage/plugin-devtools-common/alpha';\n\nexport const devToolsApiRef = createApiRef<DevToolsApi>({\n id: 'plugin.devtools.service',\n});\n\nexport interface DevToolsApi {\n getConfig(): Promise<ConfigInfo | undefined>;\n getExternalDependencies(): Promise<ExternalDependency[] | undefined>;\n getInfo(): Promise<DevToolsInfo | undefined>;\n getScheduledTasksByPlugin(plugin: string): Promise<ScheduledTasks>;\n triggerScheduledTask(\n plugin: string,\n taskId: string,\n ): Promise<TriggerScheduledTask>;\n cancelScheduledTask(plugin: string, taskId: string): Promise<void>;\n}\n"],"names":[],"mappings":";;AA2BO,MAAM,iBAAiB,YAAA,CAA0B;AAAA,EACtD,EAAA,EAAI;AACN,CAAC;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DevToolsClient.esm.js","sources":["../../src/api/DevToolsClient.ts"],"sourcesContent":["/*\n * Copyright 2022 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 { DiscoveryApi, FetchApi } from '@backstage/core-plugin-api';\nimport {\n ConfigInfo,\n DevToolsInfo,\n ExternalDependency,\n} from '@backstage/plugin-devtools-common';\nimport {\n ScheduledTasks,\n TriggerScheduledTask,\n} from '@backstage/plugin-devtools-common/alpha';\nimport { ResponseError, NotFoundError, ConflictError } from '@backstage/errors';\nimport { DevToolsApi } from './DevToolsApi';\n\nexport class DevToolsClient implements DevToolsApi {\n private readonly discoveryApi: DiscoveryApi;\n private readonly fetchApi: FetchApi;\n\n public constructor(options: {\n discoveryApi: DiscoveryApi;\n fetchApi: FetchApi;\n }) {\n this.discoveryApi = options.discoveryApi;\n this.fetchApi = options.fetchApi;\n }\n\n public async getConfig(): Promise<ConfigInfo | undefined> {\n const urlSegment = 'config';\n\n const configInfo = await this.get<ConfigInfo | undefined>(urlSegment);\n return configInfo;\n }\n\n public async getScheduledTasksByPlugin(\n plugin: string,\n ): Promise<ScheduledTasks> {\n const baseUrl = `${await this.discoveryApi.getBaseUrl(plugin)}/`;\n const url = new URL('.backstage/scheduler/v1/tasks', baseUrl);\n\n const response = await this.fetchApi.fetch(url.toString());\n\n if (!response.ok) {\n throw await ResponseError.fromResponse(response);\n }\n\n const scheduledTasks = await response.json();\n return {\n scheduledTasks: scheduledTasks.tasks,\n };\n }\n\n public async triggerScheduledTask(\n plugin: string,\n taskId: string,\n ): Promise<TriggerScheduledTask> {\n const baseUrl = `${await this.discoveryApi.getBaseUrl(plugin)}/`;\n const url = new URL(\n `.backstage/scheduler/v1/tasks/${encodeURIComponent(taskId)}/trigger`,\n baseUrl,\n );\n\n const response = await this.fetchApi.fetch(url.toString(), {\n method: 'POST',\n });\n\n if (!response.ok) {\n throw await ResponseError.fromResponse(response);\n }\n\n return {};\n }\n\n public async cancelScheduledTask(\n plugin: string,\n taskId: string,\n ): Promise<void> {\n const baseUrl = `${await this.discoveryApi.getBaseUrl(plugin)}/`;\n const url = new URL(\n `.backstage/scheduler/v1/tasks/${encodeURIComponent(taskId)}/cancel`,\n baseUrl,\n );\n\n const response = await this.fetchApi.fetch(url.toString(), {\n method: 'POST',\n });\n\n if (!response.ok) {\n if (response.status === 404) {\n throw new NotFoundError(`Task ${taskId} not found`);\n } else if (response.status === 409) {\n throw new ConflictError(`Task ${taskId} is not running`);\n }\n throw await ResponseError.fromResponse(response);\n }\n }\n\n public async getExternalDependencies(): Promise<\n ExternalDependency[] | undefined\n > {\n const urlSegment = 'external-dependencies';\n\n const externalDependencies = await this.get<\n ExternalDependency[] | undefined\n >(urlSegment);\n return externalDependencies;\n }\n\n public async getInfo(): Promise<DevToolsInfo | undefined> {\n const urlSegment = 'info';\n\n const info = await this.get<DevToolsInfo | undefined>(urlSegment);\n return info;\n }\n\n private async get<T>(path: string): Promise<T> {\n const baseUrl = `${await this.discoveryApi.getBaseUrl('devtools')}/`;\n const url = new URL(path, baseUrl);\n\n const response = await this.fetchApi.fetch(url.toString());\n\n if (!response.ok) {\n throw await ResponseError.fromResponse(response);\n }\n\n return response.json() as Promise<T>;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DevToolsClient.esm.js","sources":["../../src/api/DevToolsClient.ts"],"sourcesContent":["/*\n * Copyright 2022 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 { DiscoveryApi, FetchApi } from '@backstage/core-plugin-api';\nimport {\n ConfigInfo,\n DevToolsInfo,\n ExternalDependency,\n} from '@backstage/plugin-devtools-common';\nimport {\n ScheduledTasks,\n TriggerScheduledTask,\n} from '@backstage/plugin-devtools-common/alpha';\nimport { ResponseError, NotFoundError, ConflictError } from '@backstage/errors';\nimport { DevToolsApi } from './DevToolsApi';\n\nexport class DevToolsClient implements DevToolsApi {\n private readonly discoveryApi: DiscoveryApi;\n private readonly fetchApi: FetchApi;\n\n public constructor(options: {\n discoveryApi: DiscoveryApi;\n fetchApi: FetchApi;\n }) {\n this.discoveryApi = options.discoveryApi;\n this.fetchApi = options.fetchApi;\n }\n\n public async getConfig(): Promise<ConfigInfo | undefined> {\n const urlSegment = 'config';\n\n const configInfo = await this.get<ConfigInfo | undefined>(urlSegment);\n return configInfo;\n }\n\n public async getScheduledTasksByPlugin(\n plugin: string,\n ): Promise<ScheduledTasks> {\n const baseUrl = `${await this.discoveryApi.getBaseUrl(plugin)}/`;\n const url = new URL('.backstage/scheduler/v1/tasks', baseUrl);\n\n const response = await this.fetchApi.fetch(url.toString());\n\n if (!response.ok) {\n throw await ResponseError.fromResponse(response);\n }\n\n const scheduledTasks = await response.json();\n return {\n scheduledTasks: scheduledTasks.tasks,\n };\n }\n\n public async triggerScheduledTask(\n plugin: string,\n taskId: string,\n ): Promise<TriggerScheduledTask> {\n const baseUrl = `${await this.discoveryApi.getBaseUrl(plugin)}/`;\n const url = new URL(\n `.backstage/scheduler/v1/tasks/${encodeURIComponent(taskId)}/trigger`,\n baseUrl,\n );\n\n const response = await this.fetchApi.fetch(url.toString(), {\n method: 'POST',\n });\n\n if (!response.ok) {\n throw await ResponseError.fromResponse(response);\n }\n\n return {};\n }\n\n public async cancelScheduledTask(\n plugin: string,\n taskId: string,\n ): Promise<void> {\n const baseUrl = `${await this.discoveryApi.getBaseUrl(plugin)}/`;\n const url = new URL(\n `.backstage/scheduler/v1/tasks/${encodeURIComponent(taskId)}/cancel`,\n baseUrl,\n );\n\n const response = await this.fetchApi.fetch(url.toString(), {\n method: 'POST',\n });\n\n if (!response.ok) {\n if (response.status === 404) {\n throw new NotFoundError(`Task ${taskId} not found`);\n } else if (response.status === 409) {\n throw new ConflictError(`Task ${taskId} is not running`);\n }\n throw await ResponseError.fromResponse(response);\n }\n }\n\n public async getExternalDependencies(): Promise<\n ExternalDependency[] | undefined\n > {\n const urlSegment = 'external-dependencies';\n\n const externalDependencies = await this.get<\n ExternalDependency[] | undefined\n >(urlSegment);\n return externalDependencies;\n }\n\n public async getInfo(): Promise<DevToolsInfo | undefined> {\n const urlSegment = 'info';\n\n const info = await this.get<DevToolsInfo | undefined>(urlSegment);\n return info;\n }\n\n private async get<T>(path: string): Promise<T> {\n const baseUrl = `${await this.discoveryApi.getBaseUrl('devtools')}/`;\n const url = new URL(path, baseUrl);\n\n const response = await this.fetchApi.fetch(url.toString());\n\n if (!response.ok) {\n throw await ResponseError.fromResponse(response);\n }\n\n return response.json() as Promise<T>;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigContent.esm.js","sources":["../../../../src/components/Content/ConfigContent/ConfigContent.tsx"],"sourcesContent":["/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Progress, WarningPanel } from '@backstage/core-components';\nimport { appThemeApiRef, useApi } from '@backstage/core-plugin-api';\nimport { Alert, Box, Text } from '@backstage/ui';\nimport useObservable from 'react-use/esm/useObservable';\nimport ReactJson from 'react-json-view';\nimport { useConfig } from '../../../hooks';\nimport { ConfigError } from '@backstage/plugin-devtools-common';\n\nexport const WarningContent = ({ error }: { error: ConfigError }) => {\n if (!error.messages) {\n return <Text as=\"p\">{error.message}</Text>;\n }\n\n const messages = error.messages;\n\n return (\n <Box>\n {messages.map(message => (\n <Text as=\"p\" key={message}>\n {message}\n </Text>\n ))}\n </Box>\n );\n};\n\n/** @public */\nexport const ConfigContent = () => {\n const appThemeApi = useApi(appThemeApiRef);\n const activeThemeId = useObservable(\n appThemeApi.activeThemeId$(),\n appThemeApi.getActiveThemeId(),\n );\n const activeTheme = appThemeApi\n .getInstalledThemes()\n .find(t => t.id === activeThemeId);\n const isDark = activeTheme?.variant === 'dark';\n const { configInfo, loading, error } = useConfig();\n\n if (loading) {\n return <Progress />;\n } else if (error) {\n return <Alert status=\"danger\" description={error.message} />;\n }\n\n if (!configInfo) {\n return <Alert status=\"danger\" description=\"Unable to load config data\" />;\n }\n\n return (\n <Box>\n {configInfo && configInfo.error && (\n <Box pb=\"2\">\n <WarningPanel title=\"Config validation failed\">\n <WarningContent error={configInfo.error} />\n </WarningPanel>\n </Box>\n )}\n <Box bg=\"neutral\" p=\"4\">\n <ReactJson\n src={configInfo.config as object}\n name=\"config\"\n enableClipboard={false}\n theme={isDark ? 'chalk' : 'rjv-default'}\n />\n </Box>\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;AAwBO,MAAM,cAAA,GAAiB,CAAC,EAAE,KAAA,EAAM,KAA8B;AACnE,EAAA,IAAI,CAAC,MAAM,QAAA,EAAU;AACnB,IAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAK,gBAAM,OAAA,EAAQ,CAAA;AAAA,EACrC;AAEA,EAAA,MAAM,WAAW,KAAA,CAAM,QAAA;AAEvB,EAAA,uBACE,GAAA,CAAC,GAAA,EAAA,EACE,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAA,OAAA,qBACZ,GAAA,CAAC,IAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EACN,QAAA,EAAA,OAAA,EAAA,EADe,OAElB,CACD,CAAA,EACH,CAAA;AAEJ;AAGO,MAAM,gBAAgB,MAAM;AACjC,EAAA,MAAM,WAAA,GAAc,OAAO,cAAc,CAAA;AACzC,EAAA,MAAM,aAAA,GAAgB,aAAA;AAAA,IACpB,YAAY,cAAA,EAAe;AAAA,IAC3B,YAAY,gBAAA;AAAiB,GAC/B;AACA,EAAA,MAAM,WAAA,GAAc,YACjB,kBAAA,EAAmB,CACnB,KAAK,CAAA,CAAA,KAAK,CAAA,CAAE,OAAO,aAAa,CAAA;AACnC,EAAA,MAAM,MAAA,GAAS,aAAa,OAAA,KAAY,MAAA;AACxC,EAAA,MAAM,EAAE,UAAA,EAAY,OAAA,EAAS,KAAA,KAAU,SAAA,EAAU;AAEjD,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,2BAAQ,QAAA,EAAA,EAAS,CAAA;AAAA,EACnB,WAAW,KAAA,EAAO;AAChB,IAAA,2BAAQ,KAAA,EAAA,EAAM,MAAA,EAAO,QAAA,EAAS,WAAA,EAAa,MAAM,OAAA,EAAS,CAAA;AAAA,EAC5D;AAEA,EAAA,IAAI,CAAC,UAAA,EAAY;AACf,IAAA,uBAAO,GAAA,CAAC,KAAA,EAAA,EAAM,MAAA,EAAO,QAAA,EAAS,aAAY,4BAAA,EAA6B,CAAA;AAAA,EACzE;AAEA,EAAA,4BACG,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,UAAA,IAAc,WAAW,KAAA,oBACxB,GAAA,CAAC,GAAA,EAAA,EAAI,EAAA,EAAG,KACN,QAAA,kBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAM,0BAAA,EAClB,8BAAC,cAAA,EAAA,EAAe,KAAA,EAAO,UAAA,CAAW,KAAA,EAAO,GAC3C,CAAA,EACF,CAAA;AAAA,oBAEF,GAAA,CAAC,GAAA,EAAA,EAAI,EAAA,EAAG,SAAA,EAAU,GAAE,GAAA,EAClB,QAAA,kBAAA,GAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,KAAK,UAAA,CAAW,MAAA;AAAA,QAChB,IAAA,EAAK,QAAA;AAAA,QACL,eAAA,EAAiB,KAAA;AAAA,QACjB,KAAA,EAAO,SAAS,OAAA,GAAU;AAAA;AAAA,KAC5B,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"ConfigContent.esm.js","sources":["../../../../src/components/Content/ConfigContent/ConfigContent.tsx"],"sourcesContent":["/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Progress, WarningPanel } from '@backstage/core-components';\nimport { appThemeApiRef, useApi } from '@backstage/core-plugin-api';\nimport { Alert, Box, Text } from '@backstage/ui';\nimport useObservable from 'react-use/esm/useObservable';\nimport ReactJson from 'react-json-view';\nimport { useConfig } from '../../../hooks';\nimport { ConfigError } from '@backstage/plugin-devtools-common';\n\nexport const WarningContent = ({ error }: { error: ConfigError }) => {\n if (!error.messages) {\n return <Text as=\"p\">{error.message}</Text>;\n }\n\n const messages = error.messages;\n\n return (\n <Box>\n {messages.map(message => (\n <Text as=\"p\" key={message}>\n {message}\n </Text>\n ))}\n </Box>\n );\n};\n\n/** @public */\nexport const ConfigContent = () => {\n const appThemeApi = useApi(appThemeApiRef);\n const activeThemeId = useObservable(\n appThemeApi.activeThemeId$(),\n appThemeApi.getActiveThemeId(),\n );\n const activeTheme = appThemeApi\n .getInstalledThemes()\n .find(t => t.id === activeThemeId);\n const isDark = activeTheme?.variant === 'dark';\n const { configInfo, loading, error } = useConfig();\n\n if (loading) {\n return <Progress />;\n } else if (error) {\n return <Alert status=\"danger\" description={error.message} />;\n }\n\n if (!configInfo) {\n return <Alert status=\"danger\" description=\"Unable to load config data\" />;\n }\n\n return (\n <Box>\n {configInfo && configInfo.error && (\n <Box pb=\"2\">\n <WarningPanel title=\"Config validation failed\">\n <WarningContent error={configInfo.error} />\n </WarningPanel>\n </Box>\n )}\n <Box bg=\"neutral\" p=\"4\">\n <ReactJson\n src={configInfo.config as object}\n name=\"config\"\n enableClipboard={false}\n theme={isDark ? 'chalk' : 'rjv-default'}\n />\n </Box>\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;AAwBO,MAAM,cAAA,GAAiB,CAAC,EAAE,KAAA,EAAM,KAA8B;AACnE,EAAA,IAAI,CAAC,MAAM,QAAA,EAAU;AACnB,IAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAK,gBAAM,OAAA,EAAQ,CAAA;AAAA,EACrC;AAEA,EAAA,MAAM,WAAW,KAAA,CAAM,QAAA;AAEvB,EAAA,uBACE,GAAA,CAAC,GAAA,EAAA,EACE,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAA,OAAA,qBACZ,GAAA,CAAC,IAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EACN,QAAA,EAAA,OAAA,EAAA,EADe,OAElB,CACD,CAAA,EACH,CAAA;AAEJ;AAGO,MAAM,gBAAgB,MAAM;AACjC,EAAA,MAAM,WAAA,GAAc,OAAO,cAAc,CAAA;AACzC,EAAA,MAAM,aAAA,GAAgB,aAAA;AAAA,IACpB,YAAY,cAAA,EAAe;AAAA,IAC3B,YAAY,gBAAA;AAAiB,GAC/B;AACA,EAAA,MAAM,WAAA,GAAc,YACjB,kBAAA,EAAmB,CACnB,KAAK,CAAA,CAAA,KAAK,CAAA,CAAE,OAAO,aAAa,CAAA;AACnC,EAAA,MAAM,MAAA,GAAS,aAAa,OAAA,KAAY,MAAA;AACxC,EAAA,MAAM,EAAE,UAAA,EAAY,OAAA,EAAS,KAAA,KAAU,SAAA,EAAU;AAEjD,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,2BAAQ,QAAA,EAAA,EAAS,CAAA;AAAA,EACnB,WAAW,KAAA,EAAO;AAChB,IAAA,2BAAQ,KAAA,EAAA,EAAM,MAAA,EAAO,QAAA,EAAS,WAAA,EAAa,MAAM,OAAA,EAAS,CAAA;AAAA,EAC5D;AAEA,EAAA,IAAI,CAAC,UAAA,EAAY;AACf,IAAA,uBAAO,GAAA,CAAC,KAAA,EAAA,EAAM,MAAA,EAAO,QAAA,EAAS,aAAY,4BAAA,EAA6B,CAAA;AAAA,EACzE;AAEA,EAAA,4BACG,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,UAAA,IAAc,WAAW,KAAA,oBACxB,GAAA,CAAC,GAAA,EAAA,EAAI,EAAA,EAAG,KACN,QAAA,kBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAM,0BAAA,EAClB,8BAAC,cAAA,EAAA,EAAe,KAAA,EAAO,UAAA,CAAW,KAAA,EAAO,GAC3C,CAAA,EACF,CAAA;AAAA,oBAEF,GAAA,CAAC,GAAA,EAAA,EAAI,EAAA,EAAG,SAAA,EAAU,GAAE,GAAA,EAClB,QAAA,kBAAA,GAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,KAAK,UAAA,CAAW,MAAA;AAAA,QAChB,IAAA,EAAK,QAAA;AAAA,QACL,eAAA,EAAiB,KAAA;AAAA,QACjB,KAAA,EAAO,SAAS,OAAA,GAAU;AAAA;AAAA,KAC5B,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalDependenciesContent.esm.js","sources":["../../../../src/components/Content/ExternalDependenciesContent/ExternalDependenciesContent.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 Progress,\n StatusError,\n StatusOK,\n StatusWarning,\n Table,\n TableColumn,\n} from '@backstage/core-components';\nimport { ExternalDependency } from '@backstage/plugin-devtools-common';\nimport Box from '@material-ui/core/Box';\nimport Grid from '@material-ui/core/Grid';\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport Alert from '@material-ui/lab/Alert';\nimport { useExternalDependencies } from '../../../hooks';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paperStyle: {\n padding: theme.spacing(2),\n },\n }),\n);\n\nexport const getExternalDependencyStatus = (\n result: Partial<ExternalDependency> | undefined,\n) => {\n switch (result?.status) {\n case 'Healthy':\n return (\n <Typography component=\"span\">\n <StatusOK /> {result.status}\n </Typography>\n );\n case 'Unhealthy':\n return (\n <Typography component=\"span\">\n <StatusError /> {`${result.status}`}\n </Typography>\n );\n case undefined:\n default:\n return (\n <Typography component=\"span\">\n <StatusWarning /> Unknown\n </Typography>\n );\n }\n};\n\nconst columns: TableColumn[] = [\n {\n title: 'Name',\n width: 'auto',\n field: 'name',\n },\n {\n title: 'Target',\n width: 'auto',\n field: 'target',\n },\n {\n title: 'Type',\n width: 'auto',\n field: 'type',\n },\n {\n title: 'Status',\n width: 'auto',\n render: (row: Partial<ExternalDependency>) => (\n <Grid container direction=\"column\">\n <Grid item>\n <Typography variant=\"button\">\n {getExternalDependencyStatus(row)}\n </Typography>\n </Grid>\n <Grid item>{row.error && <Typography>{row.error}</Typography>}</Grid>\n </Grid>\n ),\n },\n];\n\n/** @public */\nexport const ExternalDependenciesContent = () => {\n const classes = useStyles();\n const { externalDependencies, loading, error } = useExternalDependencies();\n\n if (loading) {\n return <Progress />;\n } else if (error) {\n return <Alert severity=\"error\">{error.message}</Alert>;\n }\n\n if (!externalDependencies || externalDependencies.length === 0) {\n return (\n <Box>\n <Paper className={classes.paperStyle}>\n <Typography>No external dependencies found</Typography>\n </Paper>\n </Box>\n );\n }\n\n return (\n <Table\n title=\"Status\"\n options={{\n paging: true,\n pageSize: 20,\n pageSizeOptions: [20, 50, 100],\n loadingType: 'linear',\n showEmptyDataSourceMessage: !loading,\n }}\n columns={columns}\n data={externalDependencies || []}\n />\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExternalDependenciesContent.esm.js","sources":["../../../../src/components/Content/ExternalDependenciesContent/ExternalDependenciesContent.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 Progress,\n StatusError,\n StatusOK,\n StatusWarning,\n Table,\n TableColumn,\n} from '@backstage/core-components';\nimport { ExternalDependency } from '@backstage/plugin-devtools-common';\nimport Box from '@material-ui/core/Box';\nimport Grid from '@material-ui/core/Grid';\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport Alert from '@material-ui/lab/Alert';\nimport { useExternalDependencies } from '../../../hooks';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paperStyle: {\n padding: theme.spacing(2),\n },\n }),\n);\n\nexport const getExternalDependencyStatus = (\n result: Partial<ExternalDependency> | undefined,\n) => {\n switch (result?.status) {\n case 'Healthy':\n return (\n <Typography component=\"span\">\n <StatusOK /> {result.status}\n </Typography>\n );\n case 'Unhealthy':\n return (\n <Typography component=\"span\">\n <StatusError /> {`${result.status}`}\n </Typography>\n );\n case undefined:\n default:\n return (\n <Typography component=\"span\">\n <StatusWarning /> Unknown\n </Typography>\n );\n }\n};\n\nconst columns: TableColumn[] = [\n {\n title: 'Name',\n width: 'auto',\n field: 'name',\n },\n {\n title: 'Target',\n width: 'auto',\n field: 'target',\n },\n {\n title: 'Type',\n width: 'auto',\n field: 'type',\n },\n {\n title: 'Status',\n width: 'auto',\n render: (row: Partial<ExternalDependency>) => (\n <Grid container direction=\"column\">\n <Grid item>\n <Typography variant=\"button\">\n {getExternalDependencyStatus(row)}\n </Typography>\n </Grid>\n <Grid item>{row.error && <Typography>{row.error}</Typography>}</Grid>\n </Grid>\n ),\n },\n];\n\n/** @public */\nexport const ExternalDependenciesContent = () => {\n const classes = useStyles();\n const { externalDependencies, loading, error } = useExternalDependencies();\n\n if (loading) {\n return <Progress />;\n } else if (error) {\n return <Alert severity=\"error\">{error.message}</Alert>;\n }\n\n if (!externalDependencies || externalDependencies.length === 0) {\n return (\n <Box>\n <Paper className={classes.paperStyle}>\n <Typography>No external dependencies found</Typography>\n </Paper>\n </Box>\n );\n }\n\n return (\n <Table\n title=\"Status\"\n options={{\n paging: true,\n pageSize: 20,\n pageSizeOptions: [20, 50, 100],\n loadingType: 'linear',\n showEmptyDataSourceMessage: !loading,\n }}\n columns={columns}\n data={externalDependencies || []}\n />\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BackstageLogoIcon.esm.js","sources":["../../../../src/components/Content/InfoContent/BackstageLogoIcon.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nexport const BackstageLogoIcon = (props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 337.46 428.5\">\n <path d=\"M303 166.05a80.69 80.69 0 0013.45-10.37c.79-.77 1.55-1.53 2.3-2.3a83.12 83.12 0 007.93-9.38 63.69 63.69 0 006.32-10.77 48.58 48.58 0 004.35-16.4c1.49-19.39-10-38.67-35.62-54.22L198.56 0 78.3 115.23 0 190.25l108.6 65.91a111.59 111.59 0 0057.76 16.41c24.92 0 48.8-8.8 66.42-25.69 19.16-18.36 25.52-42.12 13.7-61.87a49.22 49.22 0 00-6.8-8.87 89.17 89.17 0 0019.32 2.15h.15a85.08 85.08 0 0031-5.79 80.88 80.88 0 0012.85-6.45zm-100.55 59.81c-19.32 18.51-50.4 21.23-75.7 5.9l-75.14-45.61 67.45-64.64 76.41 46.38c27.53 16.69 26.02 39.72 6.98 57.97zm8.93-82.22l-70.65-42.89L205.14 39l69.37 42.1c25.94 15.72 29.31 37 10.55 55a60.69 60.69 0 01-73.68 7.54zm29.86 190c-19.57 18.75-46.17 29.09-74.88 29.09a123.73 123.73 0 01-64.1-18.2L0 282.52v24.67l108.6 65.91a111.6 111.6 0 0057.76 16.42c24.92 0 48.8-8.81 66.42-25.69 12.88-12.34 20-27.13 19.68-41.49v-1.79a87.27 87.27 0 01-11.22 13.13zm0-39c-19.57 18.75-46.17 29.08-74.88 29.08a123.81 123.81 0 01-64.1-18.19L0 243.53v24.68l108.6 65.91a111.6 111.6 0 0057.76 16.42c24.92 0 48.8-8.81 66.42-25.69 12.88-12.34 20-27.13 19.68-41.5v-1.78a87.27 87.27 0 01-11.22 13.13zm0-39c-19.57 18.76-46.17 29.09-74.88 29.09a123.81 123.81 0 01-64.1-18.19L0 204.55v24.68l108.6 65.91a111.59 111.59 0 0057.76 16.41c24.92 0 48.8-8.8 66.42-25.68 12.88-12.35 20-27.13 19.68-41.5v-1.82a86.09 86.09 0 01-11.22 13.16zm83.7 25.74a94.15 94.15 0 01-60.2 25.86V334a81.6 81.6 0 0051.74-22.37c14-13.38 21.14-28.11 21-42.64v-2.19a94.92 94.92 0 01-12.54 14.65zm-83.7 91.21c-19.57 18.76-46.17 29.09-74.88 29.09a123.73 123.73 0 01-64.1-18.2L0 321.5v24.68l108.6 65.9a111.6 111.6 0 0057.76 16.42c24.92 0 48.8-8.8 66.42-25.69 12.88-12.34 20-27.13 19.68-41.49v-1.79a86.29 86.29 0 01-11.22 13.13zM327 162.45c-.68.69-1.35 1.38-2.05 2.06a94.37 94.37 0 01-10.64 8.65 91.35 91.35 0 01-11.6 7 94.53 94.53 0 01-26.24 8.71 97.69 97.69 0 01-14.16 1.57c.5 1.61.9 3.25 1.25 4.9a53.27 53.27 0 011.14 12V217h.05a84.41 84.41 0 0025.35-5.55 81 81 0 0026.39-16.82c.8-.77 1.5-1.56 2.26-2.34a82.08 82.08 0 007.93-9.38 63.76 63.76 0 006.32-10.74 48.55 48.55 0 004.32-16.45c.09-1.23.2-2.47.19-3.7V150q-1.08 1.54-2.25 3.09a96.73 96.73 0 01-8.26 9.36zm0 77.92c-.69.7-1.31 1.41-2 2.1a94.2 94.2 0 01-60.2 25.86V295a81.6 81.6 0 0051.74-22.37 73.51 73.51 0 0016.46-22.5 48.56 48.56 0 004.32-16.44c.09-1.24.2-2.47.19-3.71v-2.19c-.74 1.07-1.46 2.15-2.27 3.21a95.68 95.68 0 01-8.24 9.37zm0-39c-.69.7-1.31 1.41-2 2.1a93.18 93.18 0 01-10.63 8.65 91.63 91.63 0 01-11.63 7 95.47 95.47 0 01-37.94 10.18V256a81.65 81.65 0 0051.74-22.37c.8-.77 1.5-1.56 2.26-2.34a82.08 82.08 0 007.93-9.38 63.76 63.76 0 006.27-10.76 48.56 48.56 0 004.32-16.44c.09-1.24.2-2.48.19-3.71v-2.2c-.74 1.08-1.46 2.16-2.27 3.22a95.68 95.68 0 01-8.24 9.37z\" />\n </SvgIcon>\n);\n"],"names":[],"mappings":";;;AAkBO,MAAM,iBAAA,GAAoB,CAAC,KAAA,qBAChC,GAAA,CAAC,OAAA,EAAA,EAAS,GAAG,KAAA,EAAO,OAAA,EAAQ,kBAAA,EAC1B,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,ooFAAmoF,CAAA,EAC7oF;;;;"}
1
+ {"version":3,"file":"BackstageLogoIcon.esm.js","sources":["../../../../src/components/Content/InfoContent/BackstageLogoIcon.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon';\n\nexport const BackstageLogoIcon = (props: SvgIconProps) => (\n <SvgIcon {...props} viewBox=\"0 0 337.46 428.5\">\n <path d=\"M303 166.05a80.69 80.69 0 0013.45-10.37c.79-.77 1.55-1.53 2.3-2.3a83.12 83.12 0 007.93-9.38 63.69 63.69 0 006.32-10.77 48.58 48.58 0 004.35-16.4c1.49-19.39-10-38.67-35.62-54.22L198.56 0 78.3 115.23 0 190.25l108.6 65.91a111.59 111.59 0 0057.76 16.41c24.92 0 48.8-8.8 66.42-25.69 19.16-18.36 25.52-42.12 13.7-61.87a49.22 49.22 0 00-6.8-8.87 89.17 89.17 0 0019.32 2.15h.15a85.08 85.08 0 0031-5.79 80.88 80.88 0 0012.85-6.45zm-100.55 59.81c-19.32 18.51-50.4 21.23-75.7 5.9l-75.14-45.61 67.45-64.64 76.41 46.38c27.53 16.69 26.02 39.72 6.98 57.97zm8.93-82.22l-70.65-42.89L205.14 39l69.37 42.1c25.94 15.72 29.31 37 10.55 55a60.69 60.69 0 01-73.68 7.54zm29.86 190c-19.57 18.75-46.17 29.09-74.88 29.09a123.73 123.73 0 01-64.1-18.2L0 282.52v24.67l108.6 65.91a111.6 111.6 0 0057.76 16.42c24.92 0 48.8-8.81 66.42-25.69 12.88-12.34 20-27.13 19.68-41.49v-1.79a87.27 87.27 0 01-11.22 13.13zm0-39c-19.57 18.75-46.17 29.08-74.88 29.08a123.81 123.81 0 01-64.1-18.19L0 243.53v24.68l108.6 65.91a111.6 111.6 0 0057.76 16.42c24.92 0 48.8-8.81 66.42-25.69 12.88-12.34 20-27.13 19.68-41.5v-1.78a87.27 87.27 0 01-11.22 13.13zm0-39c-19.57 18.76-46.17 29.09-74.88 29.09a123.81 123.81 0 01-64.1-18.19L0 204.55v24.68l108.6 65.91a111.59 111.59 0 0057.76 16.41c24.92 0 48.8-8.8 66.42-25.68 12.88-12.35 20-27.13 19.68-41.5v-1.82a86.09 86.09 0 01-11.22 13.16zm83.7 25.74a94.15 94.15 0 01-60.2 25.86V334a81.6 81.6 0 0051.74-22.37c14-13.38 21.14-28.11 21-42.64v-2.19a94.92 94.92 0 01-12.54 14.65zm-83.7 91.21c-19.57 18.76-46.17 29.09-74.88 29.09a123.73 123.73 0 01-64.1-18.2L0 321.5v24.68l108.6 65.9a111.6 111.6 0 0057.76 16.42c24.92 0 48.8-8.8 66.42-25.69 12.88-12.34 20-27.13 19.68-41.49v-1.79a86.29 86.29 0 01-11.22 13.13zM327 162.45c-.68.69-1.35 1.38-2.05 2.06a94.37 94.37 0 01-10.64 8.65 91.35 91.35 0 01-11.6 7 94.53 94.53 0 01-26.24 8.71 97.69 97.69 0 01-14.16 1.57c.5 1.61.9 3.25 1.25 4.9a53.27 53.27 0 011.14 12V217h.05a84.41 84.41 0 0025.35-5.55 81 81 0 0026.39-16.82c.8-.77 1.5-1.56 2.26-2.34a82.08 82.08 0 007.93-9.38 63.76 63.76 0 006.32-10.74 48.55 48.55 0 004.32-16.45c.09-1.23.2-2.47.19-3.7V150q-1.08 1.54-2.25 3.09a96.73 96.73 0 01-8.26 9.36zm0 77.92c-.69.7-1.31 1.41-2 2.1a94.2 94.2 0 01-60.2 25.86V295a81.6 81.6 0 0051.74-22.37 73.51 73.51 0 0016.46-22.5 48.56 48.56 0 004.32-16.44c.09-1.24.2-2.47.19-3.71v-2.19c-.74 1.07-1.46 2.15-2.27 3.21a95.68 95.68 0 01-8.24 9.37zm0-39c-.69.7-1.31 1.41-2 2.1a93.18 93.18 0 01-10.63 8.65 91.63 91.63 0 01-11.63 7 95.47 95.47 0 01-37.94 10.18V256a81.65 81.65 0 0051.74-22.37c.8-.77 1.5-1.56 2.26-2.34a82.08 82.08 0 007.93-9.38 63.76 63.76 0 006.27-10.76 48.56 48.56 0 004.32-16.44c.09-1.24.2-2.48.19-3.71v-2.2c-.74 1.08-1.46 2.16-2.27 3.22a95.68 95.68 0 01-8.24 9.37z\" />\n </SvgIcon>\n);\n"],"names":[],"mappings":";;;AAkBO,MAAM,iBAAA,GAAoB,CAAC,KAAA,qBAChC,GAAA,CAAC,OAAA,EAAA,EAAS,GAAG,KAAA,EAAO,OAAA,EAAQ,kBAAA,EAC1B,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,ooFAAmoF,CAAA,EAC7oF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"InfoContent.esm.js","sources":["../../../../src/components/Content/InfoContent/InfoContent.tsx"],"sourcesContent":["/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Progress } from '@backstage/core-components';\nimport Avatar from '@material-ui/core/Avatar';\nimport Box from '@material-ui/core/Box';\nimport Divider from '@material-ui/core/Divider';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Paper from '@material-ui/core/Paper';\nimport Button from '@material-ui/core/Button';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport Alert from '@material-ui/lab/Alert';\nimport { useInfo } from '../../../hooks';\nimport { InfoDependenciesTable } from './InfoDependenciesTable';\nimport DescriptionIcon from '@material-ui/icons/Description';\nimport MemoryIcon from '@material-ui/icons/Memory';\nimport DeveloperBoardIcon from '@material-ui/icons/DeveloperBoard';\nimport { BackstageLogoIcon } from './BackstageLogoIcon';\nimport FileCopyIcon from '@material-ui/icons/FileCopy';\nimport { DevToolsInfo } from '@backstage/plugin-devtools-common';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paperStyle: {\n display: 'flex',\n marginBottom: theme.spacing(2),\n },\n flexContainer: {\n display: 'flex',\n flexDirection: 'row',\n padding: 0,\n },\n copyButton: {\n float: 'left',\n margin: theme.spacing(2),\n },\n }),\n);\n\nconst copyToClipboard = ({ about }: { about: DevToolsInfo | undefined }) => {\n if (about) {\n let formatted = `OS: ${about.operatingSystem}\\nResources: ${about.resourceUtilization}\\nnode: ${about.nodeJsVersion}\\nbackstage: ${about.backstageVersion}\\nDependencies:\\n`;\n const deps = about.dependencies;\n for (const key in deps) {\n if (Object.prototype.hasOwnProperty.call(deps, key)) {\n formatted = `${formatted} ${deps[key].name}: ${deps[key].versions}\\n`;\n }\n }\n window.navigator.clipboard.writeText(formatted);\n }\n};\n\n/** @public */\nexport const InfoContent = () => {\n const classes = useStyles();\n const { about, loading, error } = useInfo();\n\n if (loading) {\n return <Progress />;\n } else if (error) {\n return <Alert severity=\"error\">{error.message}</Alert>;\n }\n return (\n <Box>\n <Paper className={classes.paperStyle}>\n <List className={classes.flexContainer}>\n <ListItem>\n <ListItemAvatar>\n <Avatar>\n <DeveloperBoardIcon />\n </Avatar>\n </ListItemAvatar>\n <ListItemText\n primary=\"Operating System\"\n secondary={about?.operatingSystem}\n />\n </ListItem>\n <ListItem>\n <ListItemAvatar>\n <Avatar>\n <MemoryIcon />\n </Avatar>\n </ListItemAvatar>\n <ListItemText\n primary=\"Resource utilization\"\n secondary={about?.resourceUtilization}\n />\n </ListItem>\n <ListItem>\n <ListItemAvatar>\n <Avatar>\n <DescriptionIcon />\n </Avatar>\n </ListItemAvatar>\n <ListItemText\n primary=\"NodeJS Version\"\n secondary={about?.nodeJsVersion}\n />\n </ListItem>\n <ListItem>\n <ListItemAvatar>\n <Avatar>\n <BackstageLogoIcon />\n </Avatar>\n </ListItemAvatar>\n <ListItemText\n primary=\"Backstage Version\"\n secondary={about?.backstageVersion}\n />\n </ListItem>\n </List>\n <Divider orientation=\"vertical\" variant=\"middle\" flexItem />\n <Button\n onClick={() => {\n copyToClipboard({ about });\n }}\n className={classes.copyButton}\n startIcon={<FileCopyIcon />}\n >\n Copy Info to Clipboard\n </Button>\n </Paper>\n <InfoDependenciesTable infoDependencies={about?.dependencies} />\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InfoContent.esm.js","sources":["../../../../src/components/Content/InfoContent/InfoContent.tsx"],"sourcesContent":["/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Progress } from '@backstage/core-components';\nimport Avatar from '@material-ui/core/Avatar';\nimport Box from '@material-ui/core/Box';\nimport Divider from '@material-ui/core/Divider';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Paper from '@material-ui/core/Paper';\nimport Button from '@material-ui/core/Button';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport Alert from '@material-ui/lab/Alert';\nimport { useInfo } from '../../../hooks';\nimport { InfoDependenciesTable } from './InfoDependenciesTable';\nimport DescriptionIcon from '@material-ui/icons/Description';\nimport MemoryIcon from '@material-ui/icons/Memory';\nimport DeveloperBoardIcon from '@material-ui/icons/DeveloperBoard';\nimport { BackstageLogoIcon } from './BackstageLogoIcon';\nimport FileCopyIcon from '@material-ui/icons/FileCopy';\nimport { DevToolsInfo } from '@backstage/plugin-devtools-common';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paperStyle: {\n display: 'flex',\n marginBottom: theme.spacing(2),\n },\n flexContainer: {\n display: 'flex',\n flexDirection: 'row',\n padding: 0,\n },\n copyButton: {\n float: 'left',\n margin: theme.spacing(2),\n },\n }),\n);\n\nconst copyToClipboard = ({ about }: { about: DevToolsInfo | undefined }) => {\n if (about) {\n let formatted = `OS: ${about.operatingSystem}\\nResources: ${about.resourceUtilization}\\nnode: ${about.nodeJsVersion}\\nbackstage: ${about.backstageVersion}\\nDependencies:\\n`;\n const deps = about.dependencies;\n for (const key in deps) {\n if (Object.prototype.hasOwnProperty.call(deps, key)) {\n formatted = `${formatted} ${deps[key].name}: ${deps[key].versions}\\n`;\n }\n }\n window.navigator.clipboard.writeText(formatted);\n }\n};\n\n/** @public */\nexport const InfoContent = () => {\n const classes = useStyles();\n const { about, loading, error } = useInfo();\n\n if (loading) {\n return <Progress />;\n } else if (error) {\n return <Alert severity=\"error\">{error.message}</Alert>;\n }\n return (\n <Box>\n <Paper className={classes.paperStyle}>\n <List className={classes.flexContainer}>\n <ListItem>\n <ListItemAvatar>\n <Avatar>\n <DeveloperBoardIcon />\n </Avatar>\n </ListItemAvatar>\n <ListItemText\n primary=\"Operating System\"\n secondary={about?.operatingSystem}\n />\n </ListItem>\n <ListItem>\n <ListItemAvatar>\n <Avatar>\n <MemoryIcon />\n </Avatar>\n </ListItemAvatar>\n <ListItemText\n primary=\"Resource utilization\"\n secondary={about?.resourceUtilization}\n />\n </ListItem>\n <ListItem>\n <ListItemAvatar>\n <Avatar>\n <DescriptionIcon />\n </Avatar>\n </ListItemAvatar>\n <ListItemText\n primary=\"NodeJS Version\"\n secondary={about?.nodeJsVersion}\n />\n </ListItem>\n <ListItem>\n <ListItemAvatar>\n <Avatar>\n <BackstageLogoIcon />\n </Avatar>\n </ListItemAvatar>\n <ListItemText\n primary=\"Backstage Version\"\n secondary={about?.backstageVersion}\n />\n </ListItem>\n </List>\n <Divider orientation=\"vertical\" variant=\"middle\" flexItem />\n <Button\n onClick={() => {\n copyToClipboard({ about });\n }}\n className={classes.copyButton}\n startIcon={<FileCopyIcon />}\n >\n Copy Info to Clipboard\n </Button>\n </Paper>\n <InfoDependenciesTable infoDependencies={about?.dependencies} />\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"InfoDependenciesTable.esm.js","sources":["../../../../src/components/Content/InfoContent/InfoDependenciesTable.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 { Table, TableColumn } from '@backstage/core-components';\nimport { PackageDependency } from '@backstage/plugin-devtools-common';\n\nconst columns: TableColumn[] = [\n {\n title: 'Name',\n width: 'auto',\n field: 'name',\n defaultSort: 'asc',\n },\n {\n title: 'Versions',\n width: 'auto',\n field: 'versions',\n },\n];\n\nexport const InfoDependenciesTable = ({\n infoDependencies,\n}: {\n infoDependencies: PackageDependency[] | undefined;\n}) => {\n return (\n <Table\n title=\"Package Dependencies\"\n options={{\n paging: true,\n pageSize: 15,\n pageSizeOptions: [15, 30, 100],\n loadingType: 'linear',\n padding: 'dense',\n }}\n columns={columns}\n data={infoDependencies || []}\n />\n );\n};\n"],"names":[],"mappings":";;;AAmBA,MAAM,OAAA,GAAyB;AAAA,EAC7B;AAAA,IACE,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO;AAAA;AAEX,CAAA;AAEO,MAAM,wBAAwB,CAAC;AAAA,EACpC;AACF,CAAA,KAEM;AACJ,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,sBAAA;AAAA,MACN,OAAA,EAAS;AAAA,QACP,MAAA,EAAQ,IAAA;AAAA,QACR,QAAA,EAAU,EAAA;AAAA,QACV,eAAA,EAAiB,CAAC,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA;AAAA,QAC7B,WAAA,EAAa,QAAA;AAAA,QACb,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA;AAAA,MACA,IAAA,EAAM,oBAAoB;AAAC;AAAA,GAC7B;AAEJ;;;;"}
1
+ {"version":3,"file":"InfoDependenciesTable.esm.js","sources":["../../../../src/components/Content/InfoContent/InfoDependenciesTable.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 { Table, TableColumn } from '@backstage/core-components';\nimport { PackageDependency } from '@backstage/plugin-devtools-common';\n\nconst columns: TableColumn[] = [\n {\n title: 'Name',\n width: 'auto',\n field: 'name',\n defaultSort: 'asc',\n },\n {\n title: 'Versions',\n width: 'auto',\n field: 'versions',\n },\n];\n\nexport const InfoDependenciesTable = ({\n infoDependencies,\n}: {\n infoDependencies: PackageDependency[] | undefined;\n}) => {\n return (\n <Table\n title=\"Package Dependencies\"\n options={{\n paging: true,\n pageSize: 15,\n pageSizeOptions: [15, 30, 100],\n loadingType: 'linear',\n padding: 'dense',\n }}\n columns={columns}\n data={infoDependencies || []}\n />\n );\n};\n"],"names":[],"mappings":";;;AAmBA,MAAM,OAAA,GAAyB;AAAA,EAC7B;AAAA,IACE,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO;AAAA;AAEX,CAAA;AAEO,MAAM,wBAAwB,CAAC;AAAA,EACpC;AACF,CAAA,KAEM;AACJ,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,sBAAA;AAAA,MACN,OAAA,EAAS;AAAA,QACP,MAAA,EAAQ,IAAA;AAAA,QACR,QAAA,EAAU,EAAA;AAAA,QACV,eAAA,EAAiB,CAAC,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA;AAAA,QAC7B,WAAA,EAAa,QAAA;AAAA,QACb,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA;AAAA,MACA,IAAA,EAAM,oBAAoB;AAAC;AAAA,GAC7B;AAEJ;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScheduledTaskDetailedPanel.esm.js","sources":["../../../../src/components/Content/ScheduledTasksContent/ScheduledTaskDetailedPanel.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 */\nimport { TaskApiTasksResponse } from '@backstage/plugin-devtools-common/alpha';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport Box from '@material-ui/core/Box';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport Alert from '@material-ui/lab/Alert';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n detailPanel: {\n padding: theme.spacing(2),\n backgroundColor: theme.palette.background.default,\n },\n detailLabel: {\n fontWeight: 'bold',\n marginRight: theme.spacing(1),\n },\n errorIcon: {\n color: theme.palette.error.main,\n marginRight: theme.spacing(1),\n fontSize: '1.2rem',\n },\n detailPanelAlert: {\n marginBottom: theme.spacing(2),\n },\n }),\n);\n\n/** @public */\nexport const ScheduledTaskDetailPanel = ({\n rowData,\n}: {\n rowData: TaskApiTasksResponse;\n}) => {\n const classes = useStyles();\n const lastRunError = rowData.taskState?.lastRunError;\n\n const DetailItem = ({ title, value }: { title: string; value: any }) => (\n <>\n <Grid item xs={3}>\n <Typography variant=\"subtitle2\" className={classes.detailLabel}>\n {title}:\n </Typography>\n </Grid>\n <Grid item xs={9}>\n <Typography variant=\"body2\" component=\"code\">\n {value || 'N/A'}\n </Typography>\n </Grid>\n </>\n );\n\n return (\n <Box className={classes.detailPanel}>\n {lastRunError && (\n <Alert severity=\"error\" className={classes.detailPanelAlert}>\n <strong>Last Run Error:</strong> {lastRunError}\n </Alert>\n )}\n\n <Grid container spacing={1}>\n <DetailItem title=\"Worker State\" value={rowData.workerState?.status} />\n <DetailItem\n title=\"Frequency (Cadence)\"\n value={rowData.settings?.cadence?.toString()}\n />\n <DetailItem title=\"Scope\" value={rowData.scope} />\n <DetailItem\n title=\"Started At\"\n value={\n rowData.taskState?.status === 'running' &&\n rowData.taskState.startedAt\n ? new Date(rowData.taskState.startedAt).toLocaleString()\n : 'N/A'\n }\n />\n <DetailItem\n title=\"Times Out At\"\n value={\n rowData.taskState?.status === 'running' &&\n rowData.taskState.timesOutAt\n ? new Date(rowData.taskState.timesOutAt).toLocaleString()\n : 'N/A'\n }\n />\n </Grid>\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScheduledTaskDetailedPanel.esm.js","sources":["../../../../src/components/Content/ScheduledTasksContent/ScheduledTaskDetailedPanel.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 */\nimport { TaskApiTasksResponse } from '@backstage/plugin-devtools-common/alpha';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport Box from '@material-ui/core/Box';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport Alert from '@material-ui/lab/Alert';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n detailPanel: {\n padding: theme.spacing(2),\n backgroundColor: theme.palette.background.default,\n },\n detailLabel: {\n fontWeight: 'bold',\n marginRight: theme.spacing(1),\n },\n errorIcon: {\n color: theme.palette.error.main,\n marginRight: theme.spacing(1),\n fontSize: '1.2rem',\n },\n detailPanelAlert: {\n marginBottom: theme.spacing(2),\n },\n }),\n);\n\n/** @public */\nexport const ScheduledTaskDetailPanel = ({\n rowData,\n}: {\n rowData: TaskApiTasksResponse;\n}) => {\n const classes = useStyles();\n const lastRunError = rowData.taskState?.lastRunError;\n\n const DetailItem = ({ title, value }: { title: string; value: any }) => (\n <>\n <Grid item xs={3}>\n <Typography variant=\"subtitle2\" className={classes.detailLabel}>\n {title}:\n </Typography>\n </Grid>\n <Grid item xs={9}>\n <Typography variant=\"body2\" component=\"code\">\n {value || 'N/A'}\n </Typography>\n </Grid>\n </>\n );\n\n return (\n <Box className={classes.detailPanel}>\n {lastRunError && (\n <Alert severity=\"error\" className={classes.detailPanelAlert}>\n <strong>Last Run Error:</strong> {lastRunError}\n </Alert>\n )}\n\n <Grid container spacing={1}>\n <DetailItem title=\"Worker State\" value={rowData.workerState?.status} />\n <DetailItem\n title=\"Frequency (Cadence)\"\n value={rowData.settings?.cadence?.toString()}\n />\n <DetailItem title=\"Scope\" value={rowData.scope} />\n <DetailItem\n title=\"Started At\"\n value={\n rowData.taskState?.status === 'running' &&\n rowData.taskState.startedAt\n ? new Date(rowData.taskState.startedAt).toLocaleString()\n : 'N/A'\n }\n />\n <DetailItem\n title=\"Times Out At\"\n value={\n rowData.taskState?.status === 'running' &&\n rowData.taskState.timesOutAt\n ? new Date(rowData.taskState.timesOutAt).toLocaleString()\n : 'N/A'\n }\n />\n </Grid>\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScheduledTasksContent.esm.js","sources":["../../../../src/components/Content/ScheduledTasksContent/ScheduledTasksContent.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 { useState } from 'react';\nimport Box from '@material-ui/core/Box';\nimport Typography from '@material-ui/core/Typography';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport TextField from '@material-ui/core/TextField';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport {\n ErrorPanel,\n Progress,\n Table,\n TableColumn,\n} from '@backstage/core-components';\nimport Alert from '@material-ui/lab/Alert';\nimport { useScheduledTasks, useScheduledTasksOperations } from '../../../hooks';\nimport {\n devToolsTaskSchedulerCreatePermission,\n TaskApiTasksResponse,\n} from '@backstage/plugin-devtools-common/alpha';\nimport { configApiRef, useApi } from '@backstage/core-plugin-api';\nimport RefreshIcon from '@material-ui/icons/Refresh';\nimport StopIcon from '@material-ui/icons/Stop';\nimport NightsStay from '@material-ui/icons/NightsStay';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport BlockIcon from '@material-ui/icons/Block';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { ScheduledTaskDetailPanel } from './ScheduledTaskDetailedPanel';\nimport { RequirePermission } from '@backstage/plugin-permission-react';\nimport { toastApiRef } from '@backstage/frontend-plugin-api';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paperStyle: {\n display: 'flex',\n marginBottom: theme.spacing(2),\n },\n flexContainer: {\n display: 'flex',\n flexDirection: 'row',\n padding: 0,\n },\n formControl: {\n minWidth: 240,\n marginBottom: theme.spacing(2),\n },\n detailPanel: {\n padding: theme.spacing(2),\n backgroundColor: theme.palette.background.default,\n },\n detailLabel: {\n fontWeight: 'bold',\n marginRight: theme.spacing(1),\n },\n errorIcon: {\n color: theme.palette.error.main,\n marginRight: theme.spacing(1),\n fontSize: '1.2rem',\n },\n detailPanelAlert: {\n marginBottom: theme.spacing(2),\n },\n }),\n);\n\nconst StatusDisplay = ({\n icon,\n text,\n}: {\n icon: React.ReactNode;\n text: string;\n}) => (\n <Box display=\"flex\" alignItems=\"center\">\n {icon}\n <Typography variant=\"body2\" style={{ marginLeft: 8 }}>\n {text}\n </Typography>\n </Box>\n);\n\nconst CreateNotAllowed = () => (\n <Tooltip title=\"You are not allowed to perform this action\">\n <BlockIcon color=\"disabled\" />\n </Tooltip>\n);\n\n/** @public */\nexport const ScheduledTasksContent = () => {\n const classes = useStyles();\n const configApi = useApi(configApiRef);\n const toastApi = useApi(toastApiRef);\n const plugins =\n configApi.getOptionalStringArray('devTools.scheduledTasks.plugins') || [];\n const [selectedPlugin, setSelectedPlugin] = useState(plugins[0] || '');\n const { scheduledTasks, loading, error, refresh } =\n useScheduledTasks(selectedPlugin);\n const { triggerTask, cancelTask, isLoading } = useScheduledTasksOperations();\n\n const [inputValue, setInputValue] = useState('');\n\n const handleAutocompleteChange = (_event: any, newValue: string | null) => {\n setSelectedPlugin(newValue || '');\n };\n\n const handleCommitChange = () => {\n if (inputValue !== selectedPlugin) {\n setSelectedPlugin(inputValue);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'Enter') {\n handleCommitChange();\n // Prevent Autocomplete's default behavior (which might select a filtered item)\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n if (!plugins || plugins.length === 0) {\n return (\n <Alert severity=\"info\">\n No plugins configured for scheduled tasks. Please configure\n `devTools.scheduledTasks.plugins` in app-config.yaml.\n </Alert>\n );\n }\n\n const columns: TableColumn<TaskApiTasksResponse>[] = [\n {\n title: 'Task ID',\n field: 'taskId',\n width: '35%',\n render: (rowData: TaskApiTasksResponse) => {\n const errorIconStyle: React.CSSProperties = {\n color: '#f44336',\n marginRight: '8px',\n fontSize: '1.2rem',\n verticalAlign: 'middle',\n };\n\n return (\n <Box display=\"flex\" alignItems=\"center\">\n {rowData.taskState?.lastRunError && (\n <ErrorIcon style={errorIconStyle} />\n )}\n <Typography>{rowData.taskId}</Typography>\n </Box>\n );\n },\n },\n {\n title: 'Status',\n field: 'taskState.status',\n width: '15%',\n render: (rowData: TaskApiTasksResponse) => {\n const status = rowData.taskState?.status;\n\n if (status === 'idle') {\n return (\n <StatusDisplay icon={<NightsStay fontSize=\"small\" />} text=\"Idle\" />\n );\n }\n\n if (status === 'running') {\n return (\n <StatusDisplay\n icon={<CircularProgress color=\"inherit\" size=\"30px\" />}\n text=\"Running\"\n />\n );\n }\n\n return <Typography variant=\"body2\">{status || 'N/A'}</Typography>;\n },\n },\n {\n title: 'Last Run',\n field: 'taskState.lastRunEndedAt',\n width: '25%',\n render: (rowData: TaskApiTasksResponse) =>\n rowData.taskState?.lastRunEndedAt\n ? new Date(rowData.taskState.lastRunEndedAt).toLocaleString()\n : 'N/A',\n },\n {\n title: 'Next Run',\n width: '15%',\n render: (rowData: TaskApiTasksResponse) =>\n rowData.taskState?.status === 'idle' && rowData.taskState.startsAt\n ? new Date(rowData.taskState.startsAt).toLocaleString()\n : 'N/A',\n },\n {\n title: 'Actions',\n render: (rowData: TaskApiTasksResponse) => (\n <RequirePermission\n permission={devToolsTaskSchedulerCreatePermission}\n errorPage={<CreateNotAllowed />}\n >\n <Box display=\"flex\" justifyContent=\"center\">\n <Tooltip title=\"Run Task\">\n <IconButton\n aria-label=\"Trigger\"\n disabled={isLoading}\n onClick={async () => {\n try {\n await triggerTask(selectedPlugin, rowData.taskId);\n toastApi.post({\n title: `Successfully triggered task ${rowData.taskId}`,\n status: 'success',\n });\n } catch (e) {\n toastApi.post({\n title: `Error triggering task ${rowData.taskId}: ${e.message}`,\n status: 'danger',\n });\n } finally {\n refresh();\n }\n }}\n >\n <RefreshIcon />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Cancel Task\">\n <IconButton\n aria-label=\"Cancel\"\n disabled={isLoading}\n onClick={async () => {\n try {\n await cancelTask(selectedPlugin, rowData.taskId);\n toastApi.post({\n title: `Successfully cancelled task ${rowData.taskId}`,\n status: 'success',\n });\n } catch (e) {\n toastApi.post({\n title: `Error cancelling task ${rowData.taskId}: ${e.message}`,\n status: 'danger',\n });\n } finally {\n refresh();\n }\n }}\n >\n <StopIcon />\n </IconButton>\n </Tooltip>\n </Box>\n </RequirePermission>\n ),\n sorting: false,\n width: '10%',\n align: 'center',\n },\n ];\n\n return (\n <Box>\n <Autocomplete\n className={classes.formControl}\n classes={{ root: classes.formControl }}\n freeSolo\n options={plugins}\n value={selectedPlugin}\n inputValue={inputValue}\n onChange={handleAutocompleteChange}\n onInputChange={(_event, newInputValue) => {\n setInputValue(newInputValue);\n }}\n renderInput={params => (\n <TextField\n {...params}\n label=\"Select Plugin\"\n variant=\"outlined\"\n onKeyDown={handleKeyDown}\n onBlur={handleCommitChange}\n />\n )}\n />\n\n {loading && !scheduledTasks && <Progress />}\n\n {error && (\n <ErrorPanel\n error={new Error(`No scheduled tasks found for \"${selectedPlugin}\"`)}\n title=\"No Scheduled Tasks Found\"\n >\n <Typography variant=\"body2\">\n The plugin ID \"{selectedPlugin}\" doesn't have any scheduled tasks or\n may contain a typo.\n </Typography>\n <Typography variant=\"body2\" style={{ marginTop: 8 }}>\n Please verify:\n </Typography>\n <ul>\n <li>\n <Typography variant=\"body2\">\n The plugin ID is spelled correctly\n </Typography>\n </li>\n <li>\n <Typography variant=\"body2\">\n The plugin has registered scheduled tasks\n </Typography>\n </li>\n </ul>\n </ErrorPanel>\n )}\n\n {scheduledTasks && (\n <Table\n title={`Scheduled Tasks (${selectedPlugin})`}\n options={{\n paging: true,\n search: true,\n sorting: true,\n searchFieldAlignment: 'right',\n padding: 'dense',\n }}\n columns={columns}\n data={scheduledTasks || []}\n emptyContent={\n <Alert severity=\"info\">\n No scheduled tasks found for {selectedPlugin}.\n </Alert>\n }\n detailPanel={({ rowData }) => {\n return <ScheduledTaskDetailPanel rowData={rowData} />;\n }}\n />\n )}\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,MAAM,SAAA,GAAY,UAAA;AAAA,EAAW,CAAC,UAC5B,YAAA,CAAa;AAAA,IACX,UAAA,EAAY;AAAA,MACV,OAAA,EAAS,MAAA;AAAA,MACT,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,KAC/B;AAAA,IACA,aAAA,EAAe;AAAA,MACb,OAAA,EAAS,MAAA;AAAA,MACT,aAAA,EAAe,KAAA;AAAA,MACf,OAAA,EAAS;AAAA,KACX;AAAA,IACA,WAAA,EAAa;AAAA,MACX,QAAA,EAAU,GAAA;AAAA,MACV,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,KAC/B;AAAA,IACA,WAAA,EAAa;AAAA,MACX,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MACxB,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,UAAA,CAAW;AAAA,KAC5C;AAAA,IACA,WAAA,EAAa;AAAA,MACX,UAAA,EAAY,MAAA;AAAA,MACZ,WAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,KAC9B;AAAA,IACA,SAAA,EAAW;AAAA,MACT,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,IAAA;AAAA,MAC3B,WAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MAC5B,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,gBAAA,EAAkB;AAAA,MAChB,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA;AAC/B,GACD;AACH,CAAA;AAEA,MAAM,gBAAgB,CAAC;AAAA,EACrB,IAAA;AAAA,EACA;AACF,CAAA,qBAIE,IAAA,CAAC,GAAA,EAAA,EAAI,OAAA,EAAQ,MAAA,EAAO,YAAW,QAAA,EAC5B,QAAA,EAAA;AAAA,EAAA,IAAA;AAAA,kBACD,GAAA,CAAC,cAAW,OAAA,EAAQ,OAAA,EAAQ,OAAO,EAAE,UAAA,EAAY,CAAA,EAAE,EAChD,QAAA,EAAA,IAAA,EACH;AAAA,CAAA,EACF,CAAA;AAGF,MAAM,gBAAA,GAAmB,sBACvB,GAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAM,8CACb,QAAA,kBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAM,UAAA,EAAW,CAAA,EAC9B,CAAA;AAIK,MAAM,wBAAwB,MAAM;AACzC,EAAA,MAAM,UAAU,SAAA,EAAU;AAC1B,EAAA,MAAM,SAAA,GAAY,OAAO,YAAY,CAAA;AACrC,EAAA,MAAM,QAAA,GAAW,OAAO,WAAW,CAAA;AACnC,EAAA,MAAM,OAAA,GACJ,SAAA,CAAU,sBAAA,CAAuB,iCAAiC,KAAK,EAAC;AAC1E,EAAA,MAAM,CAAC,gBAAgB,iBAAiB,CAAA,GAAI,SAAS,OAAA,CAAQ,CAAC,KAAK,EAAE,CAAA;AACrE,EAAA,MAAM,EAAE,cAAA,EAAgB,OAAA,EAAS,OAAO,OAAA,EAAQ,GAC9C,kBAAkB,cAAc,CAAA;AAClC,EAAA,MAAM,EAAE,WAAA,EAAa,UAAA,EAAY,SAAA,KAAc,2BAAA,EAA4B;AAE3E,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,EAAE,CAAA;AAE/C,EAAA,MAAM,wBAAA,GAA2B,CAAC,MAAA,EAAa,QAAA,KAA4B;AACzE,IAAA,iBAAA,CAAkB,YAAY,EAAE,CAAA;AAAA,EAClC,CAAA;AAEA,EAAA,MAAM,qBAAqB,MAAM;AAC/B,IAAA,IAAI,eAAe,cAAA,EAAgB;AACjC,MAAA,iBAAA,CAAkB,UAAU,CAAA;AAAA,IAC9B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA+B;AACpD,IAAA,IAAI,KAAA,CAAM,QAAQ,OAAA,EAAS;AACzB,MAAA,kBAAA,EAAmB;AAEnB,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,KAAA,CAAM,eAAA,EAAgB;AAAA,IACxB;AAAA,EACF,CAAA;AAEA,EAAA,IAAI,CAAC,OAAA,IAAW,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG;AACpC,IAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAM,QAAA,EAAS,MAAA,EAAO,QAAA,EAAA,mHAAA,EAGvB,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,OAAA,GAA+C;AAAA,IACnD;AAAA,MACE,KAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO,QAAA;AAAA,MACP,KAAA,EAAO,KAAA;AAAA,MACP,MAAA,EAAQ,CAAC,OAAA,KAAkC;AACzC,QAAA,MAAM,cAAA,GAAsC;AAAA,UAC1C,KAAA,EAAO,SAAA;AAAA,UACP,WAAA,EAAa,KAAA;AAAA,UACb,QAAA,EAAU,QAAA;AAAA,UACV,aAAA,EAAe;AAAA,SACjB;AAEA,QAAA,uBACE,IAAA,CAAC,GAAA,EAAA,EAAI,OAAA,EAAQ,MAAA,EAAO,YAAW,QAAA,EAC5B,QAAA,EAAA;AAAA,UAAA,OAAA,CAAQ,SAAA,EAAW,YAAA,oBAClB,GAAA,CAAC,SAAA,EAAA,EAAU,OAAO,cAAA,EAAgB,CAAA;AAAA,0BAEpC,GAAA,CAAC,UAAA,EAAA,EAAY,QAAA,EAAA,OAAA,CAAQ,MAAA,EAAO;AAAA,SAAA,EAC9B,CAAA;AAAA,MAEJ;AAAA,KACF;AAAA,IACA;AAAA,MACE,KAAA,EAAO,QAAA;AAAA,MACP,KAAA,EAAO,kBAAA;AAAA,MACP,KAAA,EAAO,KAAA;AAAA,MACP,MAAA,EAAQ,CAAC,OAAA,KAAkC;AACzC,QAAA,MAAM,MAAA,GAAS,QAAQ,SAAA,EAAW,MAAA;AAElC,QAAA,IAAI,WAAW,MAAA,EAAQ;AACrB,UAAA,uBACE,GAAA,CAAC,iBAAc,IAAA,kBAAM,GAAA,CAAC,cAAW,QAAA,EAAS,OAAA,EAAQ,CAAA,EAAI,IAAA,EAAK,MAAA,EAAO,CAAA;AAAA,QAEtE;AAEA,QAAA,IAAI,WAAW,SAAA,EAAW;AACxB,UAAA,uBACE,GAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cACC,sBAAM,GAAA,CAAC,gBAAA,EAAA,EAAiB,KAAA,EAAM,SAAA,EAAU,MAAK,MAAA,EAAO,CAAA;AAAA,cACpD,IAAA,EAAK;AAAA;AAAA,WACP;AAAA,QAEJ;AAEA,QAAA,uBAAO,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,OAAA,EAAS,oBAAU,KAAA,EAAM,CAAA;AAAA,MACtD;AAAA,KACF;AAAA,IACA;AAAA,MACE,KAAA,EAAO,UAAA;AAAA,MACP,KAAA,EAAO,0BAAA;AAAA,MACP,KAAA,EAAO,KAAA;AAAA,MACP,MAAA,EAAQ,CAAC,OAAA,KACP,OAAA,CAAQ,SAAA,EAAW,cAAA,GACf,IAAI,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,cAAc,CAAA,CAAE,gBAAe,GAC1D;AAAA,KACR;AAAA,IACA;AAAA,MACE,KAAA,EAAO,UAAA;AAAA,MACP,KAAA,EAAO,KAAA;AAAA,MACP,QAAQ,CAAC,OAAA,KACP,OAAA,CAAQ,SAAA,EAAW,WAAW,MAAA,IAAU,OAAA,CAAQ,SAAA,CAAU,QAAA,GACtD,IAAI,IAAA,CAAK,OAAA,CAAQ,UAAU,QAAQ,CAAA,CAAE,gBAAe,GACpD;AAAA,KACR;AAAA,IACA;AAAA,MACE,KAAA,EAAO,SAAA;AAAA,MACP,MAAA,EAAQ,CAAC,OAAA,qBACP,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,UAAA,EAAY,qCAAA;AAAA,UACZ,SAAA,sBAAY,gBAAA,EAAA,EAAiB,CAAA;AAAA,UAE7B,QAAA,kBAAA,IAAA,CAAC,GAAA,EAAA,EAAI,OAAA,EAAQ,MAAA,EAAO,gBAAe,QAAA,EACjC,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,OAAM,UAAA,EACb,QAAA,kBAAA,GAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,YAAA,EAAW,SAAA;AAAA,gBACX,QAAA,EAAU,SAAA;AAAA,gBACV,SAAS,YAAY;AACnB,kBAAA,IAAI;AACF,oBAAA,MAAM,WAAA,CAAY,cAAA,EAAgB,OAAA,CAAQ,MAAM,CAAA;AAChD,oBAAA,QAAA,CAAS,IAAA,CAAK;AAAA,sBACZ,KAAA,EAAO,CAAA,4BAAA,EAA+B,OAAA,CAAQ,MAAM,CAAA,CAAA;AAAA,sBACpD,MAAA,EAAQ;AAAA,qBACT,CAAA;AAAA,kBACH,SAAS,CAAA,EAAG;AACV,oBAAA,QAAA,CAAS,IAAA,CAAK;AAAA,sBACZ,OAAO,CAAA,sBAAA,EAAyB,OAAA,CAAQ,MAAM,CAAA,EAAA,EAAK,EAAE,OAAO,CAAA,CAAA;AAAA,sBAC5D,MAAA,EAAQ;AAAA,qBACT,CAAA;AAAA,kBACH,CAAA,SAAE;AACA,oBAAA,OAAA,EAAQ;AAAA,kBACV;AAAA,gBACF,CAAA;AAAA,gBAEA,8BAAC,WAAA,EAAA,EAAY;AAAA;AAAA,aACf,EACF,CAAA;AAAA,4BACA,GAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAM,aAAA,EACb,QAAA,kBAAA,GAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,YAAA,EAAW,QAAA;AAAA,gBACX,QAAA,EAAU,SAAA;AAAA,gBACV,SAAS,YAAY;AACnB,kBAAA,IAAI;AACF,oBAAA,MAAM,UAAA,CAAW,cAAA,EAAgB,OAAA,CAAQ,MAAM,CAAA;AAC/C,oBAAA,QAAA,CAAS,IAAA,CAAK;AAAA,sBACZ,KAAA,EAAO,CAAA,4BAAA,EAA+B,OAAA,CAAQ,MAAM,CAAA,CAAA;AAAA,sBACpD,MAAA,EAAQ;AAAA,qBACT,CAAA;AAAA,kBACH,SAAS,CAAA,EAAG;AACV,oBAAA,QAAA,CAAS,IAAA,CAAK;AAAA,sBACZ,OAAO,CAAA,sBAAA,EAAyB,OAAA,CAAQ,MAAM,CAAA,EAAA,EAAK,EAAE,OAAO,CAAA,CAAA;AAAA,sBAC5D,MAAA,EAAQ;AAAA,qBACT,CAAA;AAAA,kBACH,CAAA,SAAE;AACA,oBAAA,OAAA,EAAQ;AAAA,kBACV;AAAA,gBACF,CAAA;AAAA,gBAEA,8BAAC,QAAA,EAAA,EAAS;AAAA;AAAA,aACZ,EACF;AAAA,WAAA,EACF;AAAA;AAAA,OACF;AAAA,MAEF,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO,KAAA;AAAA,MACP,KAAA,EAAO;AAAA;AACT,GACF;AAEA,EAAA,4BACG,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,WAAW,OAAA,CAAQ,WAAA;AAAA,QACnB,OAAA,EAAS,EAAE,IAAA,EAAM,OAAA,CAAQ,WAAA,EAAY;AAAA,QACrC,QAAA,EAAQ,IAAA;AAAA,QACR,OAAA,EAAS,OAAA;AAAA,QACT,KAAA,EAAO,cAAA;AAAA,QACP,UAAA;AAAA,QACA,QAAA,EAAU,wBAAA;AAAA,QACV,aAAA,EAAe,CAAC,MAAA,EAAQ,aAAA,KAAkB;AACxC,UAAA,aAAA,CAAc,aAAa,CAAA;AAAA,QAC7B,CAAA;AAAA,QACA,aAAa,CAAA,MAAA,qBACX,GAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACE,GAAG,MAAA;AAAA,YACJ,KAAA,EAAM,eAAA;AAAA,YACN,OAAA,EAAQ,UAAA;AAAA,YACR,SAAA,EAAW,aAAA;AAAA,YACX,MAAA,EAAQ;AAAA;AAAA;AACV;AAAA,KAEJ;AAAA,IAEC,OAAA,IAAW,CAAC,cAAA,oBAAkB,GAAA,CAAC,QAAA,EAAA,EAAS,CAAA;AAAA,IAExC,KAAA,oBACC,IAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiC,cAAc,CAAA,CAAA,CAAG,CAAA;AAAA,QACnE,KAAA,EAAM,0BAAA;AAAA,QAEN,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,UAAA,EAAA,EAAW,SAAQ,OAAA,EAAQ,QAAA,EAAA;AAAA,YAAA,iBAAA;AAAA,YACV,cAAA;AAAA,YAAe,CAAA,yDAAA;AAAA,WAAA,EAEjC,CAAA;AAAA,0BACA,GAAA,CAAC,cAAW,OAAA,EAAQ,OAAA,EAAQ,OAAO,EAAE,SAAA,EAAW,CAAA,EAAE,EAAG,QAAA,EAAA,gBAAA,EAErD,CAAA;AAAA,+BACC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,QACC,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,OAAA,EAAQ,gDAE5B,CAAA,EACF,CAAA;AAAA,gCACC,IAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,cAAW,OAAA,EAAQ,OAAA,EAAQ,uDAE5B,CAAA,EACF;AAAA,WAAA,EACF;AAAA;AAAA;AAAA,KACF;AAAA,IAGD,cAAA,oBACC,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,oBAAoB,cAAc,CAAA,CAAA,CAAA;AAAA,QACzC,OAAA,EAAS;AAAA,UACP,MAAA,EAAQ,IAAA;AAAA,UACR,MAAA,EAAQ,IAAA;AAAA,UACR,OAAA,EAAS,IAAA;AAAA,UACT,oBAAA,EAAsB,OAAA;AAAA,UACtB,OAAA,EAAS;AAAA,SACX;AAAA,QACA,OAAA;AAAA,QACA,IAAA,EAAM,kBAAkB,EAAC;AAAA,QACzB,YAAA,kBACE,IAAA,CAAC,KAAA,EAAA,EAAM,QAAA,EAAS,MAAA,EAAO,QAAA,EAAA;AAAA,UAAA,+BAAA;AAAA,UACS,cAAA;AAAA,UAAe;AAAA,SAAA,EAC/C,CAAA;AAAA,QAEF,WAAA,EAAa,CAAC,EAAE,OAAA,EAAQ,KAAM;AAC5B,UAAA,uBAAO,GAAA,CAAC,4BAAyB,OAAA,EAAkB,CAAA;AAAA,QACrD;AAAA;AAAA;AACF,GAAA,EAEJ,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"ScheduledTasksContent.esm.js","sources":["../../../../src/components/Content/ScheduledTasksContent/ScheduledTasksContent.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 { useState } from 'react';\nimport Box from '@material-ui/core/Box';\nimport Typography from '@material-ui/core/Typography';\nimport IconButton from '@material-ui/core/IconButton';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport TextField from '@material-ui/core/TextField';\nimport { createStyles, makeStyles, Theme } from '@material-ui/core/styles';\nimport {\n ErrorPanel,\n Progress,\n Table,\n TableColumn,\n} from '@backstage/core-components';\nimport Alert from '@material-ui/lab/Alert';\nimport { useScheduledTasks, useScheduledTasksOperations } from '../../../hooks';\nimport {\n devToolsTaskSchedulerCreatePermission,\n TaskApiTasksResponse,\n} from '@backstage/plugin-devtools-common/alpha';\nimport { configApiRef, useApi } from '@backstage/core-plugin-api';\nimport RefreshIcon from '@material-ui/icons/Refresh';\nimport StopIcon from '@material-ui/icons/Stop';\nimport NightsStay from '@material-ui/icons/NightsStay';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport BlockIcon from '@material-ui/icons/Block';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { ScheduledTaskDetailPanel } from './ScheduledTaskDetailedPanel';\nimport { RequirePermission } from '@backstage/plugin-permission-react';\nimport { toastApiRef } from '@backstage/frontend-plugin-api';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paperStyle: {\n display: 'flex',\n marginBottom: theme.spacing(2),\n },\n flexContainer: {\n display: 'flex',\n flexDirection: 'row',\n padding: 0,\n },\n formControl: {\n minWidth: 240,\n marginBottom: theme.spacing(2),\n },\n detailPanel: {\n padding: theme.spacing(2),\n backgroundColor: theme.palette.background.default,\n },\n detailLabel: {\n fontWeight: 'bold',\n marginRight: theme.spacing(1),\n },\n errorIcon: {\n color: theme.palette.error.main,\n marginRight: theme.spacing(1),\n fontSize: '1.2rem',\n },\n detailPanelAlert: {\n marginBottom: theme.spacing(2),\n },\n }),\n);\n\nconst StatusDisplay = ({\n icon,\n text,\n}: {\n icon: React.ReactNode;\n text: string;\n}) => (\n <Box display=\"flex\" alignItems=\"center\">\n {icon}\n <Typography variant=\"body2\" style={{ marginLeft: 8 }}>\n {text}\n </Typography>\n </Box>\n);\n\nconst CreateNotAllowed = () => (\n <Tooltip title=\"You are not allowed to perform this action\">\n <BlockIcon color=\"disabled\" />\n </Tooltip>\n);\n\n/** @public */\nexport const ScheduledTasksContent = () => {\n const classes = useStyles();\n const configApi = useApi(configApiRef);\n const toastApi = useApi(toastApiRef);\n const plugins =\n configApi.getOptionalStringArray('devTools.scheduledTasks.plugins') || [];\n const [selectedPlugin, setSelectedPlugin] = useState(plugins[0] || '');\n const { scheduledTasks, loading, error, refresh } =\n useScheduledTasks(selectedPlugin);\n const { triggerTask, cancelTask, isLoading } = useScheduledTasksOperations();\n\n const [inputValue, setInputValue] = useState('');\n\n const handleAutocompleteChange = (_event: any, newValue: string | null) => {\n setSelectedPlugin(newValue || '');\n };\n\n const handleCommitChange = () => {\n if (inputValue !== selectedPlugin) {\n setSelectedPlugin(inputValue);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'Enter') {\n handleCommitChange();\n // Prevent Autocomplete's default behavior (which might select a filtered item)\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n if (!plugins || plugins.length === 0) {\n return (\n <Alert severity=\"info\">\n No plugins configured for scheduled tasks. Please configure\n `devTools.scheduledTasks.plugins` in app-config.yaml.\n </Alert>\n );\n }\n\n const columns: TableColumn<TaskApiTasksResponse>[] = [\n {\n title: 'Task ID',\n field: 'taskId',\n width: '35%',\n render: (rowData: TaskApiTasksResponse) => {\n const errorIconStyle: React.CSSProperties = {\n color: '#f44336',\n marginRight: '8px',\n fontSize: '1.2rem',\n verticalAlign: 'middle',\n };\n\n return (\n <Box display=\"flex\" alignItems=\"center\">\n {rowData.taskState?.lastRunError && (\n <ErrorIcon style={errorIconStyle} />\n )}\n <Typography>{rowData.taskId}</Typography>\n </Box>\n );\n },\n },\n {\n title: 'Status',\n field: 'taskState.status',\n width: '15%',\n render: (rowData: TaskApiTasksResponse) => {\n const status = rowData.taskState?.status;\n\n if (status === 'idle') {\n return (\n <StatusDisplay icon={<NightsStay fontSize=\"small\" />} text=\"Idle\" />\n );\n }\n\n if (status === 'running') {\n return (\n <StatusDisplay\n icon={<CircularProgress color=\"inherit\" size=\"30px\" />}\n text=\"Running\"\n />\n );\n }\n\n return <Typography variant=\"body2\">{status || 'N/A'}</Typography>;\n },\n },\n {\n title: 'Last Run',\n field: 'taskState.lastRunEndedAt',\n width: '25%',\n render: (rowData: TaskApiTasksResponse) =>\n rowData.taskState?.lastRunEndedAt\n ? new Date(rowData.taskState.lastRunEndedAt).toLocaleString()\n : 'N/A',\n },\n {\n title: 'Next Run',\n width: '15%',\n render: (rowData: TaskApiTasksResponse) =>\n rowData.taskState?.status === 'idle' && rowData.taskState.startsAt\n ? new Date(rowData.taskState.startsAt).toLocaleString()\n : 'N/A',\n },\n {\n title: 'Actions',\n render: (rowData: TaskApiTasksResponse) => (\n <RequirePermission\n permission={devToolsTaskSchedulerCreatePermission}\n errorPage={<CreateNotAllowed />}\n >\n <Box display=\"flex\" justifyContent=\"center\">\n <Tooltip title=\"Run Task\">\n <IconButton\n aria-label=\"Trigger\"\n disabled={isLoading}\n onClick={async () => {\n try {\n await triggerTask(selectedPlugin, rowData.taskId);\n toastApi.post({\n title: `Successfully triggered task ${rowData.taskId}`,\n status: 'success',\n });\n } catch (e) {\n toastApi.post({\n title: `Error triggering task ${rowData.taskId}: ${e.message}`,\n status: 'danger',\n });\n } finally {\n refresh();\n }\n }}\n >\n <RefreshIcon />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Cancel Task\">\n <IconButton\n aria-label=\"Cancel\"\n disabled={isLoading}\n onClick={async () => {\n try {\n await cancelTask(selectedPlugin, rowData.taskId);\n toastApi.post({\n title: `Successfully cancelled task ${rowData.taskId}`,\n status: 'success',\n });\n } catch (e) {\n toastApi.post({\n title: `Error cancelling task ${rowData.taskId}: ${e.message}`,\n status: 'danger',\n });\n } finally {\n refresh();\n }\n }}\n >\n <StopIcon />\n </IconButton>\n </Tooltip>\n </Box>\n </RequirePermission>\n ),\n sorting: false,\n width: '10%',\n align: 'center',\n },\n ];\n\n return (\n <Box>\n <Autocomplete\n className={classes.formControl}\n classes={{ root: classes.formControl }}\n freeSolo\n options={plugins}\n value={selectedPlugin}\n inputValue={inputValue}\n onChange={handleAutocompleteChange}\n onInputChange={(_event, newInputValue) => {\n setInputValue(newInputValue);\n }}\n renderInput={params => (\n <TextField\n {...params}\n label=\"Select Plugin\"\n variant=\"outlined\"\n onKeyDown={handleKeyDown}\n onBlur={handleCommitChange}\n />\n )}\n />\n\n {loading && !scheduledTasks && <Progress />}\n\n {error && (\n <ErrorPanel\n error={new Error(`No scheduled tasks found for \"${selectedPlugin}\"`)}\n title=\"No Scheduled Tasks Found\"\n >\n <Typography variant=\"body2\">\n The plugin ID \"{selectedPlugin}\" doesn't have any scheduled tasks or\n may contain a typo.\n </Typography>\n <Typography variant=\"body2\" style={{ marginTop: 8 }}>\n Please verify:\n </Typography>\n <ul>\n <li>\n <Typography variant=\"body2\">\n The plugin ID is spelled correctly\n </Typography>\n </li>\n <li>\n <Typography variant=\"body2\">\n The plugin has registered scheduled tasks\n </Typography>\n </li>\n </ul>\n </ErrorPanel>\n )}\n\n {scheduledTasks && (\n <Table\n title={`Scheduled Tasks (${selectedPlugin})`}\n options={{\n paging: true,\n search: true,\n sorting: true,\n searchFieldAlignment: 'right',\n padding: 'dense',\n }}\n columns={columns}\n data={scheduledTasks || []}\n emptyContent={\n <Alert severity=\"info\">\n No scheduled tasks found for {selectedPlugin}.\n </Alert>\n }\n detailPanel={({ rowData }) => {\n return <ScheduledTaskDetailPanel rowData={rowData} />;\n }}\n />\n )}\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultDevToolsPage.esm.js","sources":["../../../src/components/DefaultDevToolsPage/DefaultDevToolsPage.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 devToolsConfigReadPermission,\n devToolsInfoReadPermission,\n} from '@backstage/plugin-devtools-common';\n\nimport { ConfigContent } from '../Content';\nimport { devToolsTaskSchedulerReadPermission } from '@backstage/plugin-devtools-common/alpha';\nimport { DevToolsLayout } from '../DevToolsLayout/DevToolsLayout';\nimport { InfoContent } from '../Content';\nimport { RequirePermission } from '@backstage/plugin-permission-react';\nimport { ScheduledTasksContent } from '../Content/ScheduledTasksContent';\nimport { DevToolsPageProps } from '../DevToolsPage';\n\n/** @public */\nexport const DefaultDevToolsPage = ({ contents }: DevToolsPageProps) => (\n <DevToolsLayout>\n <DevToolsLayout.Route path=\"info\" title=\"Info\">\n <RequirePermission permission={devToolsInfoReadPermission}>\n <InfoContent />\n </RequirePermission>\n </DevToolsLayout.Route>\n <DevToolsLayout.Route path=\"config\" title=\"Config\">\n <RequirePermission permission={devToolsConfigReadPermission}>\n <ConfigContent />\n </RequirePermission>\n </DevToolsLayout.Route>\n <DevToolsLayout.Route path=\"scheduled-tasks\" title=\"Scheduled Tasks\">\n <RequirePermission permission={devToolsTaskSchedulerReadPermission}>\n <ScheduledTasksContent />\n </RequirePermission>\n </DevToolsLayout.Route>\n {contents?.map((content, index) => (\n <DevToolsLayout.Route\n key={`extension-${index}`}\n path={content.path}\n title={content.title}\n >\n {content.children}\n </DevToolsLayout.Route>\n ))}\n </DevToolsLayout>\n);\n"],"names":[],"mappings":";;;;;;;;;;;AA8BO,MAAM,sBAAsB,CAAC,EAAE,QAAA,EAAS,0BAC5C,cAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAA,GAAA,CAAC,cAAA,CAAe,KAAA,EAAf,EAAqB,IAAA,EAAK,QAAO,KAAA,EAAM,MAAA,EACtC,QAAA,kBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,UAAA,EAAY,0BAAA,EAC7B,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,GACf,CAAA,EACF,CAAA;AAAA,kBACA,GAAA,CAAC,cAAA,CAAe,KAAA,EAAf,EAAqB,MAAK,QAAA,EAAS,KAAA,EAAM,QAAA,EACxC,QAAA,kBAAA,GAAA,CAAC,qBAAkB,UAAA,EAAY,4BAAA,EAC7B,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,GACjB,CAAA,EACF,CAAA;AAAA,kBACA,GAAA,CAAC,cAAA,CAAe,KAAA,EAAf,EAAqB,MAAK,iBAAA,EAAkB,KAAA,EAAM,iBAAA,EACjD,QAAA,kBAAA,GAAA,CAAC,qBAAkB,UAAA,EAAY,mCAAA,EAC7B,QAAA,kBAAA,GAAA,CAAC,qBAAA,EAAA,EAAsB,GACzB,CAAA,EACF,CAAA;AAAA,EACC,QAAA,EAAU,GAAA,CAAI,CAAC,OAAA,EAAS,KAAA,qBACvB,GAAA;AAAA,IAAC,cAAA,CAAe,KAAA;AAAA,IAAf;AAAA,MAEC,MAAM,OAAA,CAAQ,IAAA;AAAA,MACd,OAAO,OAAA,CAAQ,KAAA;AAAA,MAEd,QAAA,EAAA,OAAA,CAAQ;AAAA,KAAA;AAAA,IAJJ,aAAa,KAAK,CAAA;AAAA,GAM1B;AAAA,CAAA,EACH;;;;"}
1
+ {"version":3,"file":"DefaultDevToolsPage.esm.js","sources":["../../../src/components/DefaultDevToolsPage/DefaultDevToolsPage.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 devToolsConfigReadPermission,\n devToolsInfoReadPermission,\n} from '@backstage/plugin-devtools-common';\n\nimport { ConfigContent } from '../Content';\nimport { devToolsTaskSchedulerReadPermission } from '@backstage/plugin-devtools-common/alpha';\nimport { DevToolsLayout } from '../DevToolsLayout/DevToolsLayout';\nimport { InfoContent } from '../Content';\nimport { RequirePermission } from '@backstage/plugin-permission-react';\nimport { ScheduledTasksContent } from '../Content/ScheduledTasksContent';\nimport { DevToolsPageProps } from '../DevToolsPage';\n\n/** @public */\nexport const DefaultDevToolsPage = ({ contents }: DevToolsPageProps) => (\n <DevToolsLayout>\n <DevToolsLayout.Route path=\"info\" title=\"Info\">\n <RequirePermission permission={devToolsInfoReadPermission}>\n <InfoContent />\n </RequirePermission>\n </DevToolsLayout.Route>\n <DevToolsLayout.Route path=\"config\" title=\"Config\">\n <RequirePermission permission={devToolsConfigReadPermission}>\n <ConfigContent />\n </RequirePermission>\n </DevToolsLayout.Route>\n <DevToolsLayout.Route path=\"scheduled-tasks\" title=\"Scheduled Tasks\">\n <RequirePermission permission={devToolsTaskSchedulerReadPermission}>\n <ScheduledTasksContent />\n </RequirePermission>\n </DevToolsLayout.Route>\n {contents?.map((content, index) => (\n <DevToolsLayout.Route\n key={`extension-${index}`}\n path={content.path}\n title={content.title}\n >\n {content.children}\n </DevToolsLayout.Route>\n ))}\n </DevToolsLayout>\n);\n"],"names":[],"mappings":";;;;;;;;;;;AA8BO,MAAM,sBAAsB,CAAC,EAAE,QAAA,EAAS,0BAC5C,cAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAA,GAAA,CAAC,cAAA,CAAe,KAAA,EAAf,EAAqB,IAAA,EAAK,QAAO,KAAA,EAAM,MAAA,EACtC,QAAA,kBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,UAAA,EAAY,0BAAA,EAC7B,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,GACf,CAAA,EACF,CAAA;AAAA,kBACA,GAAA,CAAC,cAAA,CAAe,KAAA,EAAf,EAAqB,MAAK,QAAA,EAAS,KAAA,EAAM,QAAA,EACxC,QAAA,kBAAA,GAAA,CAAC,qBAAkB,UAAA,EAAY,4BAAA,EAC7B,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,GACjB,CAAA,EACF,CAAA;AAAA,kBACA,GAAA,CAAC,cAAA,CAAe,KAAA,EAAf,EAAqB,MAAK,iBAAA,EAAkB,KAAA,EAAM,iBAAA,EACjD,QAAA,kBAAA,GAAA,CAAC,qBAAkB,UAAA,EAAY,mCAAA,EAC7B,QAAA,kBAAA,GAAA,CAAC,qBAAA,EAAA,EAAsB,GACzB,CAAA,EACF,CAAA;AAAA,EACC,QAAA,EAAU,GAAA,CAAI,CAAC,OAAA,EAAS,KAAA,qBACvB,GAAA;AAAA,IAAC,cAAA,CAAe,KAAA;AAAA,IAAf;AAAA,MAEC,MAAM,OAAA,CAAQ,IAAA;AAAA,MACd,OAAO,OAAA,CAAQ,KAAA;AAAA,MAEd,QAAA,EAAA,OAAA,CAAQ;AAAA,KAAA;AAAA,IAJJ,aAAa,KAAK,CAAA;AAAA,GAM1B;AAAA,CAAA,EACH;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DevToolsLayout.esm.js","sources":["../../../src/components/DevToolsLayout/DevToolsLayout.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 { Header, Page, RoutedTabs } from '@backstage/core-components';\nimport {\n attachComponentData,\n useElementFilter,\n} from '@backstage/core-plugin-api';\nimport { TabProps } from '@material-ui/core/Tab';\nimport { ElementType, ReactNode } from 'react';\n\n/** @public */\nexport type SubRoute = {\n path: string;\n title: string;\n children: JSX.Element;\n tabProps?: TabProps<ElementType, { component?: ElementType }>;\n};\n\nconst dataKey = 'plugin.devtools.devtoolsLayoutRoute';\n\nconst Route: (props: SubRoute) => null = () => null;\nattachComponentData(Route, dataKey, true);\n\n// This causes all mount points that are discovered within this route to use the path of the route itself\nattachComponentData(Route, 'core.gatherMountPoints', true);\n\n/** @public */\nexport type DevToolsLayoutProps = {\n title?: string;\n subtitle?: string;\n children?: ReactNode;\n};\n\n/**\n * DevTools is a compound component, which allows you to define a custom layout\n *\n * @example\n * ```jsx\n * <DevToolsLayout>\n * <DevToolsLayout.Route path=\"/example\" title=\"Example tab\">\n * <div>This is rendered under /example/anything-here route</div>\n * </DevToolsLayout.Route>\n * </DevToolsLayout>\n * ```\n * @public\n */\nexport const DevToolsLayout = ({\n children,\n title,\n subtitle,\n}: DevToolsLayoutProps) => {\n const routes = useElementFilter(children, elements =>\n elements\n .selectByComponentData({\n key: dataKey,\n withStrictError:\n 'Child of DevToolsLayout must be an DevToolsLayout.Route',\n })\n .getElements<SubRoute>()\n .map(child => child.props),\n );\n\n return (\n <Page themeId=\"home\">\n <Header title={title ?? 'Backstage DevTools'} subtitle={subtitle} />\n <RoutedTabs routes={routes} />\n </Page>\n );\n};\n\nDevToolsLayout.Route = Route;\n"],"names":[],"mappings":";;;;AAgCA,MAAM,OAAA,GAAU,qCAAA;AAEhB,MAAM,QAAmC,MAAM,IAAA;AAC/C,mBAAA,CAAoB,KAAA,EAAO,SAAS,IAAI,CAAA;AAGxC,mBAAA,CAAoB,KAAA,EAAO,0BAA0B,IAAI,CAAA;AAsBlD,MAAM,iBAAiB,CAAC;AAAA,EAC7B,QAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,KAA2B;AACzB,EAAA,MAAM,MAAA,GAAS,gBAAA;AAAA,IAAiB,QAAA;AAAA,IAAU,CAAA,QAAA,KACxC,SACG,qBAAA,CAAsB;AAAA,MACrB,GAAA,EAAK,OAAA;AAAA,MACL,eAAA,EACE;AAAA,KACH,CAAA,CACA,WAAA,GACA,GAAA,CAAI,CAAA,KAAA,KAAS,MAAM,KAAK;AAAA,GAC7B;AAEA,EAAA,uBACE,IAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,MAAA,EACZ,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,KAAA,EAAO,KAAA,IAAS,oBAAA,EAAsB,QAAA,EAAoB,CAAA;AAAA,oBAClE,GAAA,CAAC,cAAW,MAAA,EAAgB;AAAA,GAAA,EAC9B,CAAA;AAEJ;AAEA,cAAA,CAAe,KAAA,GAAQ,KAAA;;;;"}
1
+ {"version":3,"file":"DevToolsLayout.esm.js","sources":["../../../src/components/DevToolsLayout/DevToolsLayout.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 { Header, Page, RoutedTabs } from '@backstage/core-components';\nimport {\n attachComponentData,\n useElementFilter,\n} from '@backstage/core-plugin-api';\nimport { TabProps } from '@material-ui/core/Tab';\nimport { ElementType, ReactNode } from 'react';\n\n/** @public */\nexport type SubRoute = {\n path: string;\n title: string;\n children: JSX.Element;\n tabProps?: TabProps<ElementType, { component?: ElementType }>;\n};\n\nconst dataKey = 'plugin.devtools.devtoolsLayoutRoute';\n\nconst Route: (props: SubRoute) => null = () => null;\nattachComponentData(Route, dataKey, true);\n\n// This causes all mount points that are discovered within this route to use the path of the route itself\nattachComponentData(Route, 'core.gatherMountPoints', true);\n\n/** @public */\nexport type DevToolsLayoutProps = {\n title?: string;\n subtitle?: string;\n children?: ReactNode;\n};\n\n/**\n * DevTools is a compound component, which allows you to define a custom layout\n *\n * @example\n * ```jsx\n * <DevToolsLayout>\n * <DevToolsLayout.Route path=\"/example\" title=\"Example tab\">\n * <div>This is rendered under /example/anything-here route</div>\n * </DevToolsLayout.Route>\n * </DevToolsLayout>\n * ```\n * @public\n */\nexport const DevToolsLayout = ({\n children,\n title,\n subtitle,\n}: DevToolsLayoutProps) => {\n const routes = useElementFilter(children, elements =>\n elements\n .selectByComponentData({\n key: dataKey,\n withStrictError:\n 'Child of DevToolsLayout must be an DevToolsLayout.Route',\n })\n .getElements<SubRoute>()\n .map(child => child.props),\n );\n\n return (\n <Page themeId=\"home\">\n <Header title={title ?? 'Backstage DevTools'} subtitle={subtitle} />\n <RoutedTabs routes={routes} />\n </Page>\n );\n};\n\nDevToolsLayout.Route = Route;\n"],"names":[],"mappings":";;;;AAgCA,MAAM,OAAA,GAAU,qCAAA;AAEhB,MAAM,QAAmC,MAAM,IAAA;AAC/C,mBAAA,CAAoB,KAAA,EAAO,SAAS,IAAI,CAAA;AAGxC,mBAAA,CAAoB,KAAA,EAAO,0BAA0B,IAAI,CAAA;AAsBlD,MAAM,iBAAiB,CAAC;AAAA,EAC7B,QAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,KAA2B;AACzB,EAAA,MAAM,MAAA,GAAS,gBAAA;AAAA,IAAiB,QAAA;AAAA,IAAU,CAAA,QAAA,KACxC,SACG,qBAAA,CAAsB;AAAA,MACrB,GAAA,EAAK,OAAA;AAAA,MACL,eAAA,EACE;AAAA,KACH,CAAA,CACA,WAAA,GACA,GAAA,CAAI,CAAA,KAAA,KAAS,MAAM,KAAK;AAAA,GAC7B;AAEA,EAAA,uBACE,IAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,MAAA,EACZ,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,KAAA,EAAO,KAAA,IAAS,oBAAA,EAAsB,QAAA,EAAoB,CAAA;AAAA,oBAClE,GAAA,CAAC,cAAW,MAAA,EAAgB;AAAA,GAAA,EAC9B,CAAA;AAEJ;AAEA,cAAA,CAAe,KAAA,GAAQ,KAAA;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DevToolsPage.esm.js","sources":["../../../src/components/DevToolsPage/DevToolsPage.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 { useOutlet } from 'react-router-dom';\nimport { DefaultDevToolsPage } from '../DefaultDevToolsPage';\nimport { ReactElement } from 'react';\n\n/**\n @public\n */\nexport interface DevToolsPageProps {\n contents?: DevToolsPageContent[];\n}\n\n/**\n @public\n */\nexport interface DevToolsPageContent {\n title: string;\n path: string;\n children: ReactElement;\n}\n\nexport const DevToolsPage = ({ contents }: DevToolsPageProps) => {\n const outlet = useOutlet();\n\n return <>{outlet || <DefaultDevToolsPage contents={contents} />}</>;\n};\n"],"names":[],"mappings":";;;;AAoCO,MAAM,YAAA,GAAe,CAAC,EAAE,QAAA,EAAS,KAAyB;AAC/D,EAAA,MAAM,SAAS,SAAA,EAAU;AAEzB,EAAA,uBAAO,GAAA,CAAA,QAAA,EAAA,EAAG,QAAA,EAAA,MAAA,oBAAU,GAAA,CAAC,mBAAA,EAAA,EAAoB,UAAoB,CAAA,EAAG,CAAA;AAClE;;;;"}
1
+ {"version":3,"file":"DevToolsPage.esm.js","sources":["../../../src/components/DevToolsPage/DevToolsPage.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 { useOutlet } from 'react-router-dom';\nimport { DefaultDevToolsPage } from '../DefaultDevToolsPage';\nimport { ReactElement } from 'react';\n\n/**\n @public\n */\nexport interface DevToolsPageProps {\n contents?: DevToolsPageContent[];\n}\n\n/**\n @public\n */\nexport interface DevToolsPageContent {\n title: string;\n path: string;\n children: ReactElement;\n}\n\nexport const DevToolsPage = ({ contents }: DevToolsPageProps) => {\n const outlet = useOutlet();\n\n return <>{outlet || <DefaultDevToolsPage contents={contents} />}</>;\n};\n"],"names":[],"mappings":";;;;AAoCO,MAAM,YAAA,GAAe,CAAC,EAAE,QAAA,EAAS,KAAyB;AAC/D,EAAA,MAAM,SAAS,SAAA,EAAU;AAEzB,EAAA,uBAAO,GAAA,CAAA,QAAA,EAAA,EAAG,QAAA,EAAA,MAAA,oBAAU,GAAA,CAAC,mBAAA,EAAA,EAAoB,UAAoB,CAAA,EAAG,CAAA;AAClE;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useConfig.esm.js","sources":["../../src/hooks/useConfig.ts"],"sourcesContent":["/*\n * Copyright 2022 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 { devToolsApiRef } from '../api';\nimport { useApi } from '@backstage/core-plugin-api';\nimport useAsync from 'react-use/esm/useAsync';\nimport { ConfigInfo } from '@backstage/plugin-devtools-common';\n\nexport function useConfig(): {\n configInfo?: ConfigInfo;\n loading: boolean;\n error?: Error;\n} {\n const api = useApi(devToolsApiRef);\n const { value, loading, error } = useAsync(() => {\n return api.getConfig();\n }, [api]);\n\n return {\n configInfo: value,\n loading,\n error,\n };\n}\n"],"names":[],"mappings":";;;;;AAqBO,SAAS,SAAA,GAId;AACA,EAAA,MAAM,GAAA,GAAM,OAAO,cAAc,CAAA;AACjC,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAM,GAAI,SAAS,MAAM;AAC/C,IAAA,OAAO,IAAI,SAAA,EAAU;AAAA,EACvB,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAA,OAAO;AAAA,IACL,UAAA,EAAY,KAAA;AAAA,IACZ,OAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"useConfig.esm.js","sources":["../../src/hooks/useConfig.ts"],"sourcesContent":["/*\n * Copyright 2022 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 { devToolsApiRef } from '../api';\nimport { useApi } from '@backstage/core-plugin-api';\nimport useAsync from 'react-use/esm/useAsync';\nimport { ConfigInfo } from '@backstage/plugin-devtools-common';\n\nexport function useConfig(): {\n configInfo?: ConfigInfo;\n loading: boolean;\n error?: Error;\n} {\n const api = useApi(devToolsApiRef);\n const { value, loading, error } = useAsync(() => {\n return api.getConfig();\n }, [api]);\n\n return {\n configInfo: value,\n loading,\n error,\n };\n}\n"],"names":[],"mappings":";;;;;AAqBO,SAAS,SAAA,GAId;AACA,EAAA,MAAM,GAAA,GAAM,OAAO,cAAc,CAAA;AACjC,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAM,GAAI,SAAS,MAAM;AAC/C,IAAA,OAAO,IAAI,SAAA,EAAU;AAAA,EACvB,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAA,OAAO;AAAA,IACL,UAAA,EAAY,KAAA;AAAA,IACZ,OAAA;AAAA,IACA;AAAA,GACF;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useExternalDependencies.esm.js","sources":["../../src/hooks/useExternalDependencies.ts"],"sourcesContent":["/*\n * Copyright 2022 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 { devToolsApiRef } from '../api';\nimport { useApi } from '@backstage/core-plugin-api';\nimport useAsync from 'react-use/esm/useAsync';\nimport { ExternalDependency } from '@backstage/plugin-devtools-common';\n\nexport function useExternalDependencies(): {\n externalDependencies?: ExternalDependency[];\n loading: boolean;\n error?: Error;\n} {\n const api = useApi(devToolsApiRef);\n const { value, loading, error } = useAsync(() => {\n return api.getExternalDependencies();\n }, [api]);\n\n return {\n externalDependencies: value,\n loading,\n error,\n };\n}\n"],"names":[],"mappings":";;;;;AAqBO,SAAS,uBAAA,GAId;AACA,EAAA,MAAM,GAAA,GAAM,OAAO,cAAc,CAAA;AACjC,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAM,GAAI,SAAS,MAAM;AAC/C,IAAA,OAAO,IAAI,uBAAA,EAAwB;AAAA,EACrC,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAA,OAAO;AAAA,IACL,oBAAA,EAAsB,KAAA;AAAA,IACtB,OAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"useExternalDependencies.esm.js","sources":["../../src/hooks/useExternalDependencies.ts"],"sourcesContent":["/*\n * Copyright 2022 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 { devToolsApiRef } from '../api';\nimport { useApi } from '@backstage/core-plugin-api';\nimport useAsync from 'react-use/esm/useAsync';\nimport { ExternalDependency } from '@backstage/plugin-devtools-common';\n\nexport function useExternalDependencies(): {\n externalDependencies?: ExternalDependency[];\n loading: boolean;\n error?: Error;\n} {\n const api = useApi(devToolsApiRef);\n const { value, loading, error } = useAsync(() => {\n return api.getExternalDependencies();\n }, [api]);\n\n return {\n externalDependencies: value,\n loading,\n error,\n };\n}\n"],"names":[],"mappings":";;;;;AAqBO,SAAS,uBAAA,GAId;AACA,EAAA,MAAM,GAAA,GAAM,OAAO,cAAc,CAAA;AACjC,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAM,GAAI,SAAS,MAAM;AAC/C,IAAA,OAAO,IAAI,uBAAA,EAAwB;AAAA,EACrC,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAA,OAAO;AAAA,IACL,oBAAA,EAAsB,KAAA;AAAA,IACtB,OAAA;AAAA,IACA;AAAA,GACF;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useInfo.esm.js","sources":["../../src/hooks/useInfo.ts"],"sourcesContent":["/*\n * Copyright 2022 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 { devToolsApiRef } from '../api';\nimport { useApi } from '@backstage/core-plugin-api';\nimport useAsync from 'react-use/esm/useAsync';\nimport { DevToolsInfo } from '@backstage/plugin-devtools-common';\n\nexport function useInfo(): {\n about?: DevToolsInfo;\n loading: boolean;\n error?: Error;\n} {\n const api = useApi(devToolsApiRef);\n const { value, loading, error } = useAsync(() => {\n return api.getInfo();\n }, [api]);\n\n return {\n about: value,\n loading,\n error,\n };\n}\n"],"names":[],"mappings":";;;;;AAqBO,SAAS,OAAA,GAId;AACA,EAAA,MAAM,GAAA,GAAM,OAAO,cAAc,CAAA;AACjC,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAM,GAAI,SAAS,MAAM;AAC/C,IAAA,OAAO,IAAI,OAAA,EAAQ;AAAA,EACrB,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,KAAA;AAAA,IACP,OAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"useInfo.esm.js","sources":["../../src/hooks/useInfo.ts"],"sourcesContent":["/*\n * Copyright 2022 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 { devToolsApiRef } from '../api';\nimport { useApi } from '@backstage/core-plugin-api';\nimport useAsync from 'react-use/esm/useAsync';\nimport { DevToolsInfo } from '@backstage/plugin-devtools-common';\n\nexport function useInfo(): {\n about?: DevToolsInfo;\n loading: boolean;\n error?: Error;\n} {\n const api = useApi(devToolsApiRef);\n const { value, loading, error } = useAsync(() => {\n return api.getInfo();\n }, [api]);\n\n return {\n about: value,\n loading,\n error,\n };\n}\n"],"names":[],"mappings":";;;;;AAqBO,SAAS,OAAA,GAId;AACA,EAAA,MAAM,GAAA,GAAM,OAAO,cAAc,CAAA;AACjC,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAM,GAAI,SAAS,MAAM;AAC/C,IAAA,OAAO,IAAI,OAAA,EAAQ;AAAA,EACrB,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,KAAA;AAAA,IACP,OAAA;AAAA,IACA;AAAA,GACF;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useScheduledTasks.esm.js","sources":["../../src/hooks/useScheduledTasks.ts"],"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 */\nimport { devToolsApiRef } from '../api';\nimport { useApi } from '@backstage/core-plugin-api';\nimport useAsyncRetry from 'react-use/esm/useAsyncRetry';\n\nexport const useScheduledTasks = (plugin: string) => {\n const api = useApi(devToolsApiRef);\n\n const {\n value,\n loading,\n error: asyncError,\n retry: refresh,\n } = useAsyncRetry(async () => {\n return api.getScheduledTasksByPlugin(plugin);\n }, [api, plugin]);\n\n if (asyncError) {\n return {\n scheduledTasks: undefined,\n loading: false,\n error: asyncError.message,\n refresh,\n };\n }\n\n return {\n scheduledTasks: value?.scheduledTasks,\n loading,\n error: value?.error,\n refresh,\n };\n};\n"],"names":[],"mappings":";;;;;AAmBO,MAAM,iBAAA,GAAoB,CAAC,MAAA,KAAmB;AACnD,EAAA,MAAM,GAAA,GAAM,OAAO,cAAc,CAAA;AAEjC,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA,EAAO,UAAA;AAAA,IACP,KAAA,EAAO;AAAA,GACT,GAAI,cAAc,YAAY;AAC5B,IAAA,OAAO,GAAA,CAAI,0BAA0B,MAAM,CAAA;AAAA,EAC7C,CAAA,EAAG,CAAC,GAAA,EAAK,MAAM,CAAC,CAAA;AAEhB,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,OAAO;AAAA,MACL,cAAA,EAAgB,MAAA;AAAA,MAChB,OAAA,EAAS,KAAA;AAAA,MACT,OAAO,UAAA,CAAW,OAAA;AAAA,MAClB;AAAA,KACF;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,gBAAgB,KAAA,EAAO,cAAA;AAAA,IACvB,OAAA;AAAA,IACA,OAAO,KAAA,EAAO,KAAA;AAAA,IACd;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"useScheduledTasks.esm.js","sources":["../../src/hooks/useScheduledTasks.ts"],"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 */\nimport { devToolsApiRef } from '../api';\nimport { useApi } from '@backstage/core-plugin-api';\nimport useAsyncRetry from 'react-use/esm/useAsyncRetry';\n\nexport const useScheduledTasks = (plugin: string) => {\n const api = useApi(devToolsApiRef);\n\n const {\n value,\n loading,\n error: asyncError,\n retry: refresh,\n } = useAsyncRetry(async () => {\n return api.getScheduledTasksByPlugin(plugin);\n }, [api, plugin]);\n\n if (asyncError) {\n return {\n scheduledTasks: undefined,\n loading: false,\n error: asyncError.message,\n refresh,\n };\n }\n\n return {\n scheduledTasks: value?.scheduledTasks,\n loading,\n error: value?.error,\n refresh,\n };\n};\n"],"names":[],"mappings":";;;;;AAmBO,MAAM,iBAAA,GAAoB,CAAC,MAAA,KAAmB;AACnD,EAAA,MAAM,GAAA,GAAM,OAAO,cAAc,CAAA;AAEjC,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA,EAAO,UAAA;AAAA,IACP,KAAA,EAAO;AAAA,GACT,GAAI,cAAc,YAAY;AAC5B,IAAA,OAAO,GAAA,CAAI,0BAA0B,MAAM,CAAA;AAAA,EAC7C,CAAA,EAAG,CAAC,GAAA,EAAK,MAAM,CAAC,CAAA;AAEhB,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,OAAO;AAAA,MACL,cAAA,EAAgB,MAAA;AAAA,MAChB,OAAA,EAAS,KAAA;AAAA,MACT,OAAO,UAAA,CAAW,OAAA;AAAA,MAClB;AAAA,KACF;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,gBAAgB,KAAA,EAAO,cAAA;AAAA,IACvB,OAAA;AAAA,IACA,OAAO,KAAA,EAAO,KAAA;AAAA,IACd;AAAA,GACF;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useScheduledTasksOperations.esm.js","sources":["../../src/hooks/useScheduledTasksOperations.ts"],"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 */\nimport { useState, useCallback } from 'react';\nimport { devToolsApiRef } from '../api';\nimport { useApi } from '@backstage/core-plugin-api';\n\nexport const useScheduledTasksOperations = () => {\n const api = useApi(devToolsApiRef);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const triggerTask = useCallback(\n async (plugin: string, taskId: string) => {\n setIsLoading(true);\n setError(undefined);\n\n try {\n await api.triggerScheduledTask(plugin, taskId);\n } catch (e) {\n setError(e);\n throw e;\n } finally {\n setIsLoading(false);\n }\n },\n [api],\n );\n\n const cancelTask = useCallback(\n async (plugin: string, taskId: string) => {\n setIsLoading(true);\n setError(undefined);\n\n try {\n await api.cancelScheduledTask(plugin, taskId);\n } catch (e) {\n setError(e);\n throw e;\n } finally {\n setIsLoading(false);\n }\n },\n [api],\n );\n\n return {\n triggerTask,\n cancelTask,\n isLoading,\n error: error?.message,\n };\n};\n"],"names":[],"mappings":";;;;;AAmBO,MAAM,8BAA8B,MAAM;AAC/C,EAAA,MAAM,GAAA,GAAM,OAAO,cAAc,CAAA;AACjC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,QAAA,EAA4B;AAEtD,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IAClB,OAAO,QAAgB,MAAA,KAAmB;AACxC,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,QAAA,CAAS,MAAS,CAAA;AAElB,MAAA,IAAI;AACF,QAAA,MAAM,GAAA,CAAI,oBAAA,CAAqB,MAAA,EAAQ,MAAM,CAAA;AAAA,MAC/C,SAAS,CAAA,EAAG;AACV,QAAA,QAAA,CAAS,CAAC,CAAA;AACV,QAAA,MAAM,CAAA;AAAA,MACR,CAAA,SAAE;AACA,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACpB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,GAAG;AAAA,GACN;AAEA,EAAA,MAAM,UAAA,GAAa,WAAA;AAAA,IACjB,OAAO,QAAgB,MAAA,KAAmB;AACxC,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,QAAA,CAAS,MAAS,CAAA;AAElB,MAAA,IAAI;AACF,QAAA,MAAM,GAAA,CAAI,mBAAA,CAAoB,MAAA,EAAQ,MAAM,CAAA;AAAA,MAC9C,SAAS,CAAA,EAAG;AACV,QAAA,QAAA,CAAS,CAAC,CAAA;AACV,QAAA,MAAM,CAAA;AAAA,MACR,CAAA,SAAE;AACA,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACpB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,GAAG;AAAA,GACN;AAEA,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAO,KAAA,EAAO;AAAA,GAChB;AACF;;;;"}
1
+ {"version":3,"file":"useScheduledTasksOperations.esm.js","sources":["../../src/hooks/useScheduledTasksOperations.ts"],"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 */\nimport { useState, useCallback } from 'react';\nimport { devToolsApiRef } from '../api';\nimport { useApi } from '@backstage/core-plugin-api';\n\nexport const useScheduledTasksOperations = () => {\n const api = useApi(devToolsApiRef);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n const triggerTask = useCallback(\n async (plugin: string, taskId: string) => {\n setIsLoading(true);\n setError(undefined);\n\n try {\n await api.triggerScheduledTask(plugin, taskId);\n } catch (e) {\n setError(e);\n throw e;\n } finally {\n setIsLoading(false);\n }\n },\n [api],\n );\n\n const cancelTask = useCallback(\n async (plugin: string, taskId: string) => {\n setIsLoading(true);\n setError(undefined);\n\n try {\n await api.cancelScheduledTask(plugin, taskId);\n } catch (e) {\n setError(e);\n throw e;\n } finally {\n setIsLoading(false);\n }\n },\n [api],\n );\n\n return {\n triggerTask,\n cancelTask,\n isLoading,\n error: error?.message,\n };\n};\n"],"names":[],"mappings":";;;;;AAmBO,MAAM,8BAA8B,MAAM;AAC/C,EAAA,MAAM,GAAA,GAAM,OAAO,cAAc,CAAA;AACjC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,QAAA,EAA4B;AAEtD,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IAClB,OAAO,QAAgB,MAAA,KAAmB;AACxC,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,QAAA,CAAS,MAAS,CAAA;AAElB,MAAA,IAAI;AACF,QAAA,MAAM,GAAA,CAAI,oBAAA,CAAqB,MAAA,EAAQ,MAAM,CAAA;AAAA,MAC/C,SAAS,CAAA,EAAG;AACV,QAAA,QAAA,CAAS,CAAC,CAAA;AACV,QAAA,MAAM,CAAA;AAAA,MACR,CAAA,SAAE;AACA,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACpB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,GAAG;AAAA,GACN;AAEA,EAAA,MAAM,UAAA,GAAa,WAAA;AAAA,IACjB,OAAO,QAAgB,MAAA,KAAmB;AACxC,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,QAAA,CAAS,MAAS,CAAA;AAElB,MAAA,IAAI;AACF,QAAA,MAAM,GAAA,CAAI,mBAAA,CAAoB,MAAA,EAAQ,MAAM,CAAA;AAAA,MAC9C,SAAS,CAAA,EAAG;AACV,QAAA,QAAA,CAAS,CAAC,CAAA;AACV,QAAA,MAAM,CAAA;AAAA,MACR,CAAA,SAAE;AACA,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACpB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,GAAG;AAAA,GACN;AAEA,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAO,KAAA,EAAO;AAAA,GAChB;AACF;;"}
@@ -1,5 +1,5 @@
1
1
  var name = "@backstage/plugin-devtools";
2
- var version = "0.0.0-nightly-20260918023200";
2
+ var version = "0.0.0-nightly-20260920023043";
3
3
  var backstage = {
4
4
  role: "frontend-plugin",
5
5
  pluginId: "devtools",
@@ -1 +1 @@
1
- {"version":3,"file":"package.json.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"package.json.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.esm.js","sources":["../src/plugin.ts"],"sourcesContent":["/*\n * Copyright 2022 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 createApiFactory,\n createPlugin,\n createRoutableExtension,\n discoveryApiRef,\n fetchApiRef,\n} from '@backstage/core-plugin-api';\nimport { devToolsApiRef, DevToolsClient } from './api';\n\nimport { rootRouteRef } from './routes';\n\n/** @public */\nexport const devToolsPlugin = createPlugin({\n id: 'devtools',\n apis: [\n createApiFactory({\n api: devToolsApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ discoveryApi, fetchApi }) =>\n new DevToolsClient({ discoveryApi, fetchApi }),\n }),\n ],\n routes: {\n root: rootRouteRef,\n },\n});\n\n/** @public */\nexport const DevToolsPage = devToolsPlugin.provide(\n createRoutableExtension({\n name: 'DevToolsPage',\n component: () =>\n import('./components/DevToolsPage').then(m => m.DevToolsPage),\n mountPoint: rootRouteRef,\n }),\n);\n"],"names":[],"mappings":";;;;;AA4BO,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,wCAA2B,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,YAAY,CAAA;AAAA,IAC9D,UAAA,EAAY;AAAA,GACb;AACH;;;;"}
1
+ {"version":3,"file":"plugin.esm.js","sources":["../src/plugin.ts"],"sourcesContent":["/*\n * Copyright 2022 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 createApiFactory,\n createPlugin,\n createRoutableExtension,\n discoveryApiRef,\n fetchApiRef,\n} from '@backstage/core-plugin-api';\nimport { devToolsApiRef, DevToolsClient } from './api';\n\nimport { rootRouteRef } from './routes';\n\n/** @public */\nexport const devToolsPlugin = createPlugin({\n id: 'devtools',\n apis: [\n createApiFactory({\n api: devToolsApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ discoveryApi, fetchApi }) =>\n new DevToolsClient({ discoveryApi, fetchApi }),\n }),\n ],\n routes: {\n root: rootRouteRef,\n },\n});\n\n/** @public */\nexport const DevToolsPage = devToolsPlugin.provide(\n createRoutableExtension({\n name: 'DevToolsPage',\n component: () =>\n import('./components/DevToolsPage').then(m => m.DevToolsPage),\n mountPoint: rootRouteRef,\n }),\n);\n"],"names":[],"mappings":";;;;;AA4BO,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,wCAA2B,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,YAAY,CAAA;AAAA,IAC9D,UAAA,EAAY;AAAA,GACb;AACH;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"routes.esm.js","sources":["../src/routes.ts"],"sourcesContent":["/*\n * Copyright 2022 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 { createRouteRef } from '@backstage/core-plugin-api';\n\nexport const rootRouteRef = createRouteRef({\n id: 'devtools',\n});\n"],"names":[],"mappings":";;AAkBO,MAAM,eAAe,cAAA,CAAe;AAAA,EACzC,EAAA,EAAI;AACN,CAAC;;;;"}
1
+ {"version":3,"file":"routes.esm.js","sources":["../src/routes.ts"],"sourcesContent":["/*\n * Copyright 2022 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 { createRouteRef } from '@backstage/core-plugin-api';\n\nexport const rootRouteRef = createRouteRef({\n id: 'devtools',\n});\n"],"names":[],"mappings":";;AAkBO,MAAM,eAAe,cAAA,CAAe;AAAA,EACzC,EAAA,EAAI;AACN,CAAC;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-devtools",
3
- "version": "0.0.0-nightly-20260918023200",
3
+ "version": "0.0.0-nightly-20260920023043",
4
4
  "backstage": {
5
5
  "role": "frontend-plugin",
6
6
  "pluginId": "devtools",
@@ -65,13 +65,13 @@
65
65
  "test": "backstage-cli package test"
66
66
  },
67
67
  "dependencies": {
68
- "@backstage/core-compat-api": "0.0.0-nightly-20260918023200",
69
- "@backstage/core-components": "0.18.14",
70
- "@backstage/core-plugin-api": "1.12.10",
71
- "@backstage/errors": "1.3.1",
72
- "@backstage/frontend-plugin-api": "0.18.1",
73
- "@backstage/plugin-devtools-common": "0.1.26",
74
- "@backstage/plugin-permission-react": "0.5.5",
68
+ "@backstage/core-compat-api": "0.0.0-nightly-20260920023043",
69
+ "@backstage/core-components": "0.0.0-nightly-20260920023043",
70
+ "@backstage/core-plugin-api": "0.0.0-nightly-20260920023043",
71
+ "@backstage/errors": "0.0.0-nightly-20260920023043",
72
+ "@backstage/frontend-plugin-api": "0.0.0-nightly-20260920023043",
73
+ "@backstage/plugin-devtools-common": "0.0.0-nightly-20260920023043",
74
+ "@backstage/plugin-permission-react": "0.0.0-nightly-20260920023043",
75
75
  "@backstage/ui": "0.18.0",
76
76
  "@material-ui/core": "^4.9.13",
77
77
  "@material-ui/icons": "^4.9.1",
@@ -81,8 +81,8 @@
81
81
  "react-use": "^17.2.4"
82
82
  },
83
83
  "devDependencies": {
84
- "@backstage/cli": "0.0.0-nightly-20260918023200",
85
- "@backstage/dev-utils": "0.0.0-nightly-20260918023200",
84
+ "@backstage/cli": "0.0.0-nightly-20260920023043",
85
+ "@backstage/dev-utils": "0.0.0-nightly-20260920023043",
86
86
  "@testing-library/jest-dom": "^6.0.0",
87
87
  "@types/lodash": "^4.14.151",
88
88
  "@types/react": "^18.0.0",