@backstage/plugin-devtools 0.1.35-next.0 → 0.1.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @backstage/plugin-devtools
2
2
 
3
+ ## 0.1.35
4
+
5
+ ### Patch Changes
6
+
7
+ - be6cef5: Add support for adding `unprocessed-entities` and other tabs to `devtools` when using the New Frontend system
8
+ - Updated dependencies
9
+ - @backstage/frontend-plugin-api@0.13.3
10
+ - @backstage/core-components@0.18.5
11
+ - @backstage/plugin-devtools-react@0.1.0
12
+ - @backstage/plugin-devtools-common@0.1.21
13
+ - @backstage/core-compat-api@0.5.6
14
+
15
+ ## 0.1.35-next.1
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies
20
+ - @backstage/core-components@0.18.5-next.0
21
+
3
22
  ## 0.1.35-next.0
4
23
 
5
24
  ### Patch Changes
package/README.md CHANGED
@@ -166,6 +166,39 @@ You can also add tabs to show content from other plugins that fit well with the
166
166
 
167
167
  #### Catalog Unprocessed Entities Tab
168
168
 
169
+ ##### New Frontend System
170
+
171
+ Create an extension and/or load a 3rd party extension to add additional tabs.
172
+
173
+ ```shell
174
+ yarn --cwd plugins/<your-plugin> add @backstage/plugin-devtools-react
175
+ ```
176
+
177
+ ```tsx
178
+ import { DevToolsContentBlueprint } from '@backstage/plugin-devtools-react';
179
+
180
+ export const unprocessedEntitiesDevToolsContent = DevToolsContentBlueprint.make(
181
+ {
182
+ disabled: true,
183
+ params: {
184
+ path: 'unprocessed-entities',
185
+ title: 'Unprocessed Entities',
186
+ loader: () =>
187
+ import('../components/UnprocessedEntities').then(m => (
188
+ <m.UnprocessedEntitiesContent />
189
+ )),
190
+ },
191
+ },
192
+ );
193
+
194
+ const appFeature = createFrontendModule({
195
+ pluginId: 'catalog-unprocessed-entities',
196
+ extensions: [unprocessedEntitiesDevToolsContent],
197
+ });
198
+ ```
199
+
200
+ ##### Old System
201
+
169
202
  Here's how to add the Catalog Unprocessed Entities tab:
170
203
 
171
204
  1. Install and setup the [Catalog Unprocessed Entities plugin](https://github.com/backstage/backstage/tree/master/plugins/catalog-unprocessed-entities) as per its documentation
@@ -1,5 +1,5 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { ApiBlueprint, fetchApiRef, discoveryApiRef, PageBlueprint, NavItemBlueprint, createFrontendPlugin } from '@backstage/frontend-plugin-api';
2
+ import { ApiBlueprint, fetchApiRef, discoveryApiRef, PageBlueprint, createExtensionInput, coreExtensionData, NavItemBlueprint, createFrontendPlugin } from '@backstage/frontend-plugin-api';
3
3
  import { devToolsApiRef } from '../api/DevToolsApi.esm.js';
4
4
  import { DevToolsClient } from '../api/DevToolsClient.esm.js';
5
5
  import BuildIcon from '@material-ui/icons/Build';
@@ -15,11 +15,33 @@ const devToolsApi = ApiBlueprint.make({
15
15
  factory: ({ discoveryApi, fetchApi }) => new DevToolsClient({ discoveryApi, fetchApi })
16
16
  })
17
17
  });
18
- const devToolsPage = PageBlueprint.make({
19
- params: {
20
- path: "/devtools",
21
- routeRef: rootRouteRef,
22
- loader: () => import('../components/DevToolsPage/index.esm.js').then((m) => /* @__PURE__ */ jsx(m.DevToolsPage, {}))
18
+ const devToolsPage = PageBlueprint.makeWithOverrides({
19
+ inputs: {
20
+ contents: createExtensionInput(
21
+ [
22
+ coreExtensionData.reactElement,
23
+ coreExtensionData.routePath,
24
+ coreExtensionData.routeRef.optional(),
25
+ coreExtensionData.title
26
+ ],
27
+ {
28
+ optional: true
29
+ }
30
+ )
31
+ },
32
+ factory(originalFactory, { inputs }) {
33
+ return originalFactory({
34
+ path: "/devtools",
35
+ routeRef: rootRouteRef,
36
+ loader: () => {
37
+ const contents = inputs.contents.map((content) => ({
38
+ path: content.get(coreExtensionData.routePath),
39
+ title: content.get(coreExtensionData.title),
40
+ children: content.get(coreExtensionData.reactElement)
41
+ }));
42
+ return import('../components/DevToolsPage/index.esm.js').then((m) => /* @__PURE__ */ jsx(m.DevToolsPage, { contents }));
43
+ }
44
+ });
23
45
  }
24
46
  });
25
47
  const devToolsNavItem = NavItemBlueprint.make({
@@ -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 discoveryApiRef,\n fetchApiRef,\n ApiBlueprint,\n PageBlueprint,\n NavItemBlueprint,\n} from '@backstage/frontend-plugin-api';\n\nimport { devToolsApiRef, DevToolsClient } from '../api';\nimport BuildIcon from '@material-ui/icons/Build';\nimport { rootRouteRef } from '../routes';\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.make({\n params: {\n path: '/devtools',\n routeRef: rootRouteRef,\n loader: () =>\n import('../components/DevToolsPage').then(m => <m.DevToolsPage />),\n },\n});\n\n/** @alpha */\nexport const devToolsNavItem = NavItemBlueprint.make({\n params: {\n title: 'DevTools',\n routeRef: rootRouteRef,\n icon: BuildIcon,\n },\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'devtools',\n info: { packageJson: () => import('../../package.json') },\n routes: {\n root: rootRouteRef,\n },\n extensions: [devToolsApi, devToolsPage, devToolsNavItem],\n});\n"],"names":[],"mappings":";;;;;;;AA8BO,MAAM,WAAA,GAAc,aAAa,IAAA,CAAK;AAAA,EAC3C,MAAA,EAAQ,kBACN,YAAA,CAAa;AAAA,IACX,GAAA,EAAK,cAAA;AAAA,IACL,IAAA,EAAM;AAAA,MACJ,YAAA,EAAc,eAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,QAAA,EAAS,KACjC,IAAI,cAAA,CAAe,EAAE,YAAA,EAAc,QAAA,EAAU;AAAA,GAChD;AACL,CAAC;AAGM,MAAM,YAAA,GAAe,cAAc,IAAA,CAAK;AAAA,EAC7C,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,WAAA;AAAA,IACN,QAAA,EAAU,YAAA;AAAA,IACV,MAAA,EAAQ,MACN,OAAO,yCAA4B,CAAA,CAAE,IAAA,CAAK,CAAA,CAAA,qBAAK,GAAA,CAAC,CAAA,CAAE,YAAA,EAAF,EAAe,CAAE;AAAA;AAEvE,CAAC;AAGM,MAAM,eAAA,GAAkB,iBAAiB,IAAA,CAAK;AAAA,EACnD,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,UAAA;AAAA,IACP,QAAA,EAAU,YAAA;AAAA,IACV,IAAA,EAAM;AAAA;AAEV,CAAC;AAGD,aAAe,oBAAA,CAAqB;AAAA,EAClC,QAAA,EAAU,UAAA;AAAA,EACV,MAAM,EAAE,WAAA,EAAa,MAAM,OAAO,wBAAoB,CAAA,EAAE;AAAA,EACxD,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA,UAAA,EAAY,CAAC,WAAA,EAAa,YAAA,EAAc,eAAe;AACzD,CAAC,CAAA;;;;"}
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 discoveryApiRef,\n fetchApiRef,\n ApiBlueprint,\n PageBlueprint,\n NavItemBlueprint,\n createExtensionInput,\n coreExtensionData,\n} from '@backstage/frontend-plugin-api';\n\nimport { devToolsApiRef, DevToolsClient } from '../api';\nimport BuildIcon from '@material-ui/icons/Build';\nimport { rootRouteRef } from '../routes';\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 inputs: {\n contents: createExtensionInput(\n [\n coreExtensionData.reactElement,\n coreExtensionData.routePath,\n coreExtensionData.routeRef.optional(),\n coreExtensionData.title,\n ],\n {\n optional: true,\n },\n ),\n },\n factory(originalFactory, { inputs }) {\n return originalFactory({\n path: '/devtools',\n routeRef: rootRouteRef,\n loader: () => {\n const contents = inputs.contents.map(content => ({\n path: content.get(coreExtensionData.routePath),\n title: content.get(coreExtensionData.title),\n children: content.get(coreExtensionData.reactElement),\n }));\n return import('../components/DevToolsPage').then(m => (\n <m.DevToolsPage contents={contents} />\n ));\n },\n });\n },\n});\n\n/** @alpha */\nexport const devToolsNavItem = NavItemBlueprint.make({\n params: {\n title: 'DevTools',\n routeRef: rootRouteRef,\n icon: BuildIcon,\n },\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'devtools',\n info: { packageJson: () => import('../../package.json') },\n routes: {\n root: rootRouteRef,\n },\n extensions: [devToolsApi, devToolsPage, devToolsNavItem],\n});\n"],"names":[],"mappings":";;;;;;;AAgCO,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,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,oBAAA;AAAA,MACR;AAAA,QACE,iBAAA,CAAkB,YAAA;AAAA,QAClB,iBAAA,CAAkB,SAAA;AAAA,QAClB,iBAAA,CAAkB,SAAS,QAAA,EAAS;AAAA,QACpC,iBAAA,CAAkB;AAAA,OACpB;AAAA,MACA;AAAA,QACE,QAAA,EAAU;AAAA;AACZ;AACF,GACF;AAAA,EACA,OAAA,CAAQ,eAAA,EAAiB,EAAE,MAAA,EAAO,EAAG;AACnC,IAAA,OAAO,eAAA,CAAgB;AAAA,MACrB,IAAA,EAAM,WAAA;AAAA,MACN,QAAA,EAAU,YAAA;AAAA,MACV,QAAQ,MAAM;AACZ,QAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,CAAA,OAAA,MAAY;AAAA,UAC/C,IAAA,EAAM,OAAA,CAAQ,GAAA,CAAI,iBAAA,CAAkB,SAAS,CAAA;AAAA,UAC7C,KAAA,EAAO,OAAA,CAAQ,GAAA,CAAI,iBAAA,CAAkB,KAAK,CAAA;AAAA,UAC1C,QAAA,EAAU,OAAA,CAAQ,GAAA,CAAI,iBAAA,CAAkB,YAAY;AAAA,SACtD,CAAE,CAAA;AACF,QAAA,OAAO,OAAO,yCAA4B,CAAA,CAAE,IAAA,CAAK,CAAA,CAAA,yBAC9C,CAAA,CAAE,YAAA,EAAF,EAAe,QAAA,EAAoB,CACrC,CAAA;AAAA,MACH;AAAA,KACD,CAAA;AAAA,EACH;AACF,CAAC;AAGM,MAAM,eAAA,GAAkB,iBAAiB,IAAA,CAAK;AAAA,EACnD,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,UAAA;AAAA,IACP,QAAA,EAAU,YAAA;AAAA,IACV,IAAA,EAAM;AAAA;AAEV,CAAC;AAGD,aAAe,oBAAA,CAAqB;AAAA,EAClC,QAAA,EAAU,UAAA;AAAA,EACV,MAAM,EAAE,WAAA,EAAa,MAAM,OAAO,wBAAoB,CAAA,EAAE;AAAA,EACxD,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA,UAAA,EAAY,CAAC,WAAA,EAAa,YAAA,EAAc,eAAe;AACzD,CAAC,CAAA;;;;"}
package/dist/alpha.d.ts CHANGED
@@ -33,8 +33,6 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
33
33
  };
34
34
  }>;
35
35
  "page:devtools": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
36
- kind: "page";
37
- name: undefined;
38
36
  config: {
39
37
  path: string | undefined;
40
38
  };
@@ -44,7 +42,16 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
44
42
  output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
45
43
  optional: true;
46
44
  }>;
47
- inputs: {};
45
+ inputs: {
46
+ contents: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.title", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
47
+ optional: true;
48
+ }>, {
49
+ singleton: false;
50
+ optional: true;
51
+ }>;
52
+ };
53
+ kind: "page";
54
+ name: undefined;
48
55
  params: {
49
56
  defaultPath?: [Error: `Use the 'path' param instead`];
50
57
  path: string;
@@ -1,17 +1,27 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { devToolsInfoReadPermission, devToolsConfigReadPermission } from '@backstage/plugin-devtools-common';
3
- import { devToolsTaskSchedulerReadPermission } from '@backstage/plugin-devtools-common/alpha';
4
3
  import { ConfigContent } from '../Content/ConfigContent/ConfigContent.esm.js';
5
- import { DevToolsLayout } from '../DevToolsLayout/DevToolsLayout.esm.js';
6
4
  import { InfoContent } from '../Content/InfoContent/InfoContent.esm.js';
7
- import { RequirePermission } from '@backstage/plugin-permission-react';
5
+ import '../Content/ExternalDependenciesContent/ExternalDependenciesContent.esm.js';
8
6
  import { ScheduledTasksContent } from '../Content/ScheduledTasksContent/ScheduledTasksContent.esm.js';
9
7
  import '../Content/ScheduledTasksContent/ScheduledTaskDetailedPanel.esm.js';
8
+ import { devToolsTaskSchedulerReadPermission } from '@backstage/plugin-devtools-common/alpha';
9
+ import { DevToolsLayout } from '../DevToolsLayout/DevToolsLayout.esm.js';
10
+ import { RequirePermission } from '@backstage/plugin-permission-react';
10
11
 
11
- const DefaultDevToolsPage = () => /* @__PURE__ */ jsxs(DevToolsLayout, { children: [
12
+ const DefaultDevToolsPage = ({ contents }) => /* @__PURE__ */ jsxs(DevToolsLayout, { children: [
12
13
  /* @__PURE__ */ jsx(DevToolsLayout.Route, { path: "info", title: "Info", children: /* @__PURE__ */ jsx(RequirePermission, { permission: devToolsInfoReadPermission, children: /* @__PURE__ */ jsx(InfoContent, {}) }) }),
13
14
  /* @__PURE__ */ jsx(DevToolsLayout.Route, { path: "config", title: "Config", children: /* @__PURE__ */ jsx(RequirePermission, { permission: devToolsConfigReadPermission, children: /* @__PURE__ */ jsx(ConfigContent, {}) }) }),
14
- /* @__PURE__ */ jsx(DevToolsLayout.Route, { path: "scheduled-tasks", title: "Scheduled Tasks", children: /* @__PURE__ */ jsx(RequirePermission, { permission: devToolsTaskSchedulerReadPermission, children: /* @__PURE__ */ jsx(ScheduledTasksContent, {}) }) })
15
+ /* @__PURE__ */ jsx(DevToolsLayout.Route, { path: "scheduled-tasks", title: "Scheduled Tasks", children: /* @__PURE__ */ jsx(RequirePermission, { permission: devToolsTaskSchedulerReadPermission, children: /* @__PURE__ */ jsx(ScheduledTasksContent, {}) }) }),
16
+ contents?.map((content, index) => /* @__PURE__ */ jsx(
17
+ DevToolsLayout.Route,
18
+ {
19
+ path: content.path,
20
+ title: content.title,
21
+ children: content.children
22
+ },
23
+ `extension-${index}`
24
+ ))
15
25
  ] });
16
26
 
17
27
  export { DefaultDevToolsPage };
@@ -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';\nimport { devToolsTaskSchedulerReadPermission } from '@backstage/plugin-devtools-common/alpha';\nimport { ConfigContent } from '../Content/ConfigContent';\nimport { DevToolsLayout } from '../DevToolsLayout';\nimport { InfoContent } from '../Content/InfoContent';\nimport { RequirePermission } from '@backstage/plugin-permission-react';\nimport { ScheduledTasksContent } from '../Content/ScheduledTasksContent';\n\n/** @public */\nexport const DefaultDevToolsPage = () => (\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 </DevToolsLayout>\n);\n"],"names":[],"mappings":";;;;;;;;;;AA4BO,MAAM,mBAAA,GAAsB,sBACjC,IAAA,CAAC,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;AAAA,CAAA,EACF;;;;"}
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';\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;;;;"}
@@ -2,9 +2,9 @@ import { jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { useOutlet } from 'react-router-dom';
3
3
  import { DefaultDevToolsPage } from '../DefaultDevToolsPage/DefaultDevToolsPage.esm.js';
4
4
 
5
- const DevToolsPage = () => {
5
+ const DevToolsPage = ({ contents }) => {
6
6
  const outlet = useOutlet();
7
- return /* @__PURE__ */ jsx(Fragment, { children: outlet || /* @__PURE__ */ jsx(DefaultDevToolsPage, {}) });
7
+ return /* @__PURE__ */ jsx(Fragment, { children: outlet || /* @__PURE__ */ jsx(DefaultDevToolsPage, { contents }) });
8
8
  };
9
9
 
10
10
  export { DevToolsPage };
@@ -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';\n\nexport const DevToolsPage = () => {\n const outlet = useOutlet();\n\n return <>{outlet || <DefaultDevToolsPage />}</>;\n};\n"],"names":[],"mappings":";;;;AAmBO,MAAM,eAAe,MAAM;AAChC,EAAA,MAAM,SAAS,SAAA,EAAU;AAEzB,EAAA,uBAAO,GAAA,CAAA,QAAA,EAAA,EAAG,QAAA,EAAA,MAAA,oBAAU,GAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA,EAAG,CAAA;AAC9C;;;;"}
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;;;;"}
package/dist/index.d.ts CHANGED
@@ -1,15 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode, ElementType, ReactElement } from 'react';
2
3
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
3
4
  import { TaskApiTasksResponse } from '@backstage/plugin-devtools-common/alpha';
4
5
  import { TabProps } from '@material-ui/core/Tab';
5
- import { ReactNode, ElementType } from 'react';
6
-
7
- /** @public */
8
- declare const devToolsPlugin: _backstage_core_plugin_api.BackstagePlugin<{
9
- root: _backstage_core_plugin_api.RouteRef<undefined>;
10
- }, {}>;
11
- /** @public */
12
- declare const DevToolsPage: () => react_jsx_runtime.JSX.Element;
13
6
 
14
7
  /** @public */
15
8
  declare const ConfigContent: () => react_jsx_runtime.JSX.Element;
@@ -61,5 +54,27 @@ declare const DevToolsLayout: {
61
54
  Route: (props: SubRoute) => null;
62
55
  };
63
56
 
57
+ /**
58
+ @public
59
+ */
60
+ interface DevToolsPageProps {
61
+ contents?: DevToolsPageContent[];
62
+ }
63
+ /**
64
+ @public
65
+ */
66
+ interface DevToolsPageContent {
67
+ title: string;
68
+ path: string;
69
+ children: ReactElement;
70
+ }
71
+
72
+ /** @public */
73
+ declare const devToolsPlugin: _backstage_core_plugin_api.BackstagePlugin<{
74
+ root: _backstage_core_plugin_api.RouteRef<undefined>;
75
+ }, {}>;
76
+ /** @public */
77
+ declare const DevToolsPage: ({ contents }: DevToolsPageProps) => react_jsx_runtime.JSX.Element;
78
+
64
79
  export { ConfigContent, DevToolsLayout, DevToolsPage, ExternalDependenciesContent, InfoContent, ScheduledTaskDetailPanel, ScheduledTasksContent, devToolsPlugin };
65
- export type { DevToolsLayoutProps, SubRoute };
80
+ export type { DevToolsLayoutProps, DevToolsPageContent, DevToolsPageProps, SubRoute };
@@ -1,12 +1,13 @@
1
1
  var name = "@backstage/plugin-devtools";
2
- var version = "0.1.35-next.0";
2
+ var version = "0.1.35";
3
3
  var backstage = {
4
4
  role: "frontend-plugin",
5
5
  pluginId: "devtools",
6
6
  pluginPackages: [
7
7
  "@backstage/plugin-devtools",
8
8
  "@backstage/plugin-devtools-backend",
9
- "@backstage/plugin-devtools-common"
9
+ "@backstage/plugin-devtools-common",
10
+ "@backstage/plugin-devtools-react"
10
11
  ]
11
12
  };
12
13
  var publishConfig = {
@@ -57,6 +58,7 @@ var dependencies = {
57
58
  "@backstage/errors": "workspace:^",
58
59
  "@backstage/frontend-plugin-api": "workspace:^",
59
60
  "@backstage/plugin-devtools-common": "workspace:^",
61
+ "@backstage/plugin-devtools-react": "workspace:^",
60
62
  "@backstage/plugin-permission-react": "workspace:^",
61
63
  "@material-ui/core": "^4.9.13",
62
64
  "@material-ui/icons": "^4.9.1",
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "@backstage/plugin-devtools",
3
- "version": "0.1.35-next.0",
3
+ "version": "0.1.35",
4
4
  "backstage": {
5
5
  "role": "frontend-plugin",
6
6
  "pluginId": "devtools",
7
7
  "pluginPackages": [
8
8
  "@backstage/plugin-devtools",
9
9
  "@backstage/plugin-devtools-backend",
10
- "@backstage/plugin-devtools-common"
10
+ "@backstage/plugin-devtools-common",
11
+ "@backstage/plugin-devtools-react"
11
12
  ],
12
13
  "features": {
13
14
  "./alpha": "@backstage/FrontendPlugin"
@@ -64,13 +65,14 @@
64
65
  "test": "backstage-cli package test"
65
66
  },
66
67
  "dependencies": {
67
- "@backstage/core-compat-api": "0.5.6-next.0",
68
- "@backstage/core-components": "0.18.4",
69
- "@backstage/core-plugin-api": "1.12.1",
70
- "@backstage/errors": "1.2.7",
71
- "@backstage/frontend-plugin-api": "0.13.2",
72
- "@backstage/plugin-devtools-common": "0.1.20",
73
- "@backstage/plugin-permission-react": "0.4.39",
68
+ "@backstage/core-compat-api": "^0.5.6",
69
+ "@backstage/core-components": "^0.18.5",
70
+ "@backstage/core-plugin-api": "^1.12.1",
71
+ "@backstage/errors": "^1.2.7",
72
+ "@backstage/frontend-plugin-api": "^0.13.3",
73
+ "@backstage/plugin-devtools-common": "^0.1.21",
74
+ "@backstage/plugin-devtools-react": "^0.1.0",
75
+ "@backstage/plugin-permission-react": "^0.4.39",
74
76
  "@material-ui/core": "^4.9.13",
75
77
  "@material-ui/icons": "^4.9.1",
76
78
  "@material-ui/lab": "^4.0.0-alpha.57",
@@ -79,8 +81,8 @@
79
81
  "react-use": "^17.2.4"
80
82
  },
81
83
  "devDependencies": {
82
- "@backstage/cli": "0.35.2-next.1",
83
- "@backstage/dev-utils": "1.1.19-next.1",
84
+ "@backstage/cli": "^0.35.2",
85
+ "@backstage/dev-utils": "^1.1.19",
84
86
  "@testing-library/jest-dom": "^6.0.0",
85
87
  "@types/lodash": "^4.14.151",
86
88
  "@types/react": "^18.0.0",