@backstage-community/plugin-tech-insights 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @backstage-community/plugin-tech-insights
2
2
 
3
+ ## 0.8.0
4
+
5
+ ### Minor Changes
6
+
7
+ - b5f45fd: The plugin now supports the new frontend system by importing from `@backstage-community/plugin-tech-insights/alpha`.
8
+
9
+ ### Patch Changes
10
+
11
+ - 450c5aa: The new frontend system plugin now includes a tech insights navigation extension by default
12
+
3
13
  ## 0.7.0
4
14
 
5
15
  ### Minor Changes
package/README.md CHANGED
@@ -16,7 +16,20 @@ Main areas covered by this plugin currently are:
16
16
  yarn --cwd packages/app add @backstage-community/plugin-tech-insights
17
17
  ```
18
18
 
19
- ### Add boolean checks overview (Scorecards) page to the EntityPage
19
+ ### Integrating with the New Frontend System
20
+
21
+ If you are using Backstage's [new frontend system](https://backstage.io/docs/frontend-system/), the plugin will be auto-discovered and automatically register:
22
+
23
+ - The Tech Insights API
24
+ - The Scorecards page at `/tech-insights`
25
+ - Entity content for displaying scorecards on entity pages
26
+ - Entity cards for displaying scorecards in entity overview
27
+
28
+ ### Integrating with the Legacy Frontend System
29
+
30
+ The following sections describe how to integrate the plugin with the legacy frontend system.
31
+
32
+ #### Add boolean checks overview (Scorecards) page to the EntityPage
20
33
 
21
34
  ```tsx
22
35
  // packages/app/src/components/catalog/EntityPage.tsx
@@ -119,7 +132,7 @@ If you follow the [Backend Example](../tech-insights-backend#backend-example), o
119
132
 
120
133
  ![Boolean Scorecard Example](./docs/boolean-scorecard-example.png)
121
134
 
122
- ### Add overview (Scorecards) page
135
+ #### Add overview (Scorecards) page
123
136
 
124
137
  ![Scorecard Overview](./docs/scorecard-overview.png)
125
138
 
@@ -0,0 +1,16 @@
1
+ import { ApiBlueprint, discoveryApiRef, identityApiRef } from '@backstage/frontend-plugin-api';
2
+ import { techInsightsApiRef, TechInsightsClient } from '@backstage-community/plugin-tech-insights-react';
3
+
4
+ const techInsightsApi = ApiBlueprint.make({
5
+ params: (defineParams) => defineParams({
6
+ api: techInsightsApiRef,
7
+ deps: {
8
+ discoveryApi: discoveryApiRef,
9
+ identityApi: identityApiRef
10
+ },
11
+ factory: ({ discoveryApi, identityApi }) => new TechInsightsClient({ discoveryApi, identityApi })
12
+ })
13
+ });
14
+
15
+ export { techInsightsApi };
16
+ //# sourceMappingURL=apis.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apis.esm.js","sources":["../../src/alpha/apis.ts"],"sourcesContent":["/*\n * Copyright 2026 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 {\n ApiBlueprint,\n discoveryApiRef,\n identityApiRef,\n} from '@backstage/frontend-plugin-api';\nimport {\n techInsightsApiRef,\n TechInsightsClient,\n} from '@backstage-community/plugin-tech-insights-react';\n\n/**\n * @alpha\n */\nexport const techInsightsApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: techInsightsApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n identityApi: identityApiRef,\n },\n factory: ({ discoveryApi, identityApi }) =>\n new TechInsightsClient({ discoveryApi, identityApi }),\n }),\n});\n"],"names":[],"mappings":";;;AA4Ba,MAAA,eAAA,GAAkB,aAAa,IAAK,CAAA;AAAA,EAC/C,MAAA,EAAQ,kBACN,YAAa,CAAA;AAAA,IACX,GAAK,EAAA,kBAAA;AAAA,IACL,IAAM,EAAA;AAAA,MACJ,YAAc,EAAA,eAAA;AAAA,MACd,WAAa,EAAA;AAAA,KACf;AAAA,IACA,OAAA,EAAS,CAAC,EAAE,YAAc,EAAA,WAAA,EACxB,KAAA,IAAI,kBAAmB,CAAA,EAAE,YAAc,EAAA,WAAA,EAAa;AAAA,GACvD;AACL,CAAC;;;;"}
@@ -0,0 +1,15 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { compatWrapper } from '@backstage/core-compat-api';
3
+ import { EntityCardBlueprint } from '@backstage/plugin-catalog-react/alpha';
4
+
5
+ const entityTechInsightsScorecardCard = EntityCardBlueprint.make({
6
+ name: "scorecards",
7
+ params: {
8
+ loader: () => import('../components/ScorecardsCard/index.esm.js').then(
9
+ (m) => compatWrapper(/* @__PURE__ */ jsx(m.ScorecardsCard, { title: "Scorecards" }))
10
+ )
11
+ }
12
+ });
13
+
14
+ export { entityTechInsightsScorecardCard };
15
+ //# sourceMappingURL=entityCards.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityCards.esm.js","sources":["../../src/alpha/entityCards.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 { compatWrapper } from '@backstage/core-compat-api';\nimport { EntityCardBlueprint } from '@backstage/plugin-catalog-react/alpha';\n\n/**\n * Entity card extension that displays Tech Insights scorecards for an entity.\n *\n * @alpha\n */\nexport const entityTechInsightsScorecardCard = EntityCardBlueprint.make({\n name: 'scorecards',\n params: {\n loader: () =>\n import('../components/ScorecardsCard').then(m =>\n compatWrapper(<m.ScorecardsCard title=\"Scorecards\" />),\n ),\n },\n});\n"],"names":[],"mappings":";;;;AAuBa,MAAA,+BAAA,GAAkC,oBAAoB,IAAK,CAAA;AAAA,EACtE,IAAM,EAAA,YAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACN,MAAQ,EAAA,MACN,OAAO,2CAA8B,CAAE,CAAA,IAAA;AAAA,MAAK,CAAA,CAAA,KAC1C,8BAAe,GAAA,CAAA,CAAA,CAAE,gBAAF,EAAiB,KAAA,EAAM,cAAa,CAAE;AAAA;AACvD;AAEN,CAAC;;;;"}
@@ -0,0 +1,17 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { compatWrapper } from '@backstage/core-compat-api';
3
+ import { EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';
4
+
5
+ const entityTechInsightsScorecardContent = EntityContentBlueprint.make({
6
+ name: "scorecards",
7
+ params: {
8
+ path: "/tech-insights",
9
+ title: "Scorecards",
10
+ loader: () => import('../components/ScorecardsContent/index.esm.js').then(
11
+ (m) => compatWrapper(/* @__PURE__ */ jsx(m.ScorecardsContent, { title: "Scorecards" }))
12
+ )
13
+ }
14
+ });
15
+
16
+ export { entityTechInsightsScorecardContent };
17
+ //# sourceMappingURL=entityContent.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityContent.esm.js","sources":["../../src/alpha/entityContent.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 { compatWrapper } from '@backstage/core-compat-api';\nimport { EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';\n\n/**\n * Entity content extension that displays Tech Insights scorecards for an entity.\n *\n * @alpha\n */\nexport const entityTechInsightsScorecardContent = EntityContentBlueprint.make({\n name: 'scorecards',\n params: {\n path: '/tech-insights',\n title: 'Scorecards',\n loader: () =>\n import('../components/ScorecardsContent').then(m =>\n compatWrapper(<m.ScorecardsContent title=\"Scorecards\" />),\n ),\n },\n});\n"],"names":[],"mappings":";;;;AAuBa,MAAA,kCAAA,GAAqC,uBAAuB,IAAK,CAAA;AAAA,EAC5E,IAAM,EAAA,YAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,gBAAA;AAAA,IACN,KAAO,EAAA,YAAA;AAAA,IACP,MAAQ,EAAA,MACN,OAAO,8CAAiC,CAAE,CAAA,IAAA;AAAA,MAAK,CAAA,CAAA,KAC7C,8BAAe,GAAA,CAAA,CAAA,CAAE,mBAAF,EAAoB,KAAA,EAAM,cAAa,CAAE;AAAA;AAC1D;AAEN,CAAC;;;;"}
@@ -0,0 +1,14 @@
1
+ import { NavItemBlueprint } from '@backstage/frontend-plugin-api';
2
+ import EmojiObjectsIcon from '@material-ui/icons/EmojiObjects';
3
+ import { rootRouteRef } from '../routes.esm.js';
4
+
5
+ const techInsightsNavItem = NavItemBlueprint.make({
6
+ params: {
7
+ title: "Tech Insights",
8
+ icon: EmojiObjectsIcon,
9
+ routeRef: rootRouteRef
10
+ }
11
+ });
12
+
13
+ export { techInsightsNavItem };
14
+ //# sourceMappingURL=navItems.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navItems.esm.js","sources":["../../src/alpha/navItems.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 { NavItemBlueprint } from '@backstage/frontend-plugin-api';\nimport EmojiObjectsIcon from '@material-ui/icons/EmojiObjects';\nimport { rootRouteRef } from '../routes';\n\n/**\n * @alpha\n */\nexport const techInsightsNavItem = NavItemBlueprint.make({\n params: {\n title: 'Tech Insights',\n icon: EmojiObjectsIcon,\n routeRef: rootRouteRef,\n },\n});\n\nexport default [techInsightsNavItem];\n"],"names":[],"mappings":";;;;AAsBa,MAAA,mBAAA,GAAsB,iBAAiB,IAAK,CAAA;AAAA,EACvD,MAAQ,EAAA;AAAA,IACN,KAAO,EAAA,eAAA;AAAA,IACP,IAAM,EAAA,gBAAA;AAAA,IACN,QAAU,EAAA;AAAA;AAEd,CAAC;;;;"}
@@ -0,0 +1,15 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { compatWrapper } from '@backstage/core-compat-api';
3
+ import { PageBlueprint } from '@backstage/frontend-plugin-api';
4
+
5
+ const techInsightsScorecardPage = PageBlueprint.make({
6
+ params: {
7
+ path: "/tech-insights",
8
+ loader: () => import('../components/ScorecardsPage/index.esm.js').then(
9
+ (m) => compatWrapper(/* @__PURE__ */ jsx(m.ScorecardsPage, {}))
10
+ )
11
+ }
12
+ });
13
+
14
+ export { techInsightsScorecardPage };
15
+ //# sourceMappingURL=pages.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.esm.js","sources":["../../src/alpha/pages.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 { compatWrapper } from '@backstage/core-compat-api';\nimport { PageBlueprint } from '@backstage/frontend-plugin-api';\n\n/**\n * Page extension that displays the Tech Insights scorecards overview page.\n *\n * @alpha\n */\nexport const techInsightsScorecardPage = PageBlueprint.make({\n params: {\n path: '/tech-insights',\n loader: () =>\n import('../components/ScorecardsPage').then(m =>\n compatWrapper(<m.ScorecardsPage />),\n ),\n },\n});\n"],"names":[],"mappings":";;;;AAuBa,MAAA,yBAAA,GAA4B,cAAc,IAAK,CAAA;AAAA,EAC1D,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,gBAAA;AAAA,IACN,MAAQ,EAAA,MACN,OAAO,2CAA8B,CAAE,CAAA,IAAA;AAAA,MAAK,OAC1C,aAAc,iBAAA,GAAA,CAAC,CAAE,CAAA,cAAA,EAAF,EAAiB,CAAE;AAAA;AACpC;AAEN,CAAC;;;;"}
@@ -0,0 +1,20 @@
1
+ import { createFrontendPlugin } from '@backstage/frontend-plugin-api';
2
+ import { techInsightsApi } from './apis.esm.js';
3
+ import { entityTechInsightsScorecardContent } from './entityContent.esm.js';
4
+ import { entityTechInsightsScorecardCard } from './entityCards.esm.js';
5
+ import { techInsightsScorecardPage } from './pages.esm.js';
6
+ import { techInsightsNavItem } from './navItems.esm.js';
7
+
8
+ const techInsightsPlugin = createFrontendPlugin({
9
+ pluginId: "tech-insights",
10
+ extensions: [
11
+ techInsightsApi,
12
+ techInsightsScorecardPage,
13
+ entityTechInsightsScorecardContent,
14
+ entityTechInsightsScorecardCard,
15
+ techInsightsNavItem
16
+ ]
17
+ });
18
+
19
+ export { techInsightsPlugin as default };
20
+ //# sourceMappingURL=plugin.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.esm.js","sources":["../../src/alpha/plugin.ts"],"sourcesContent":["/*\n * Copyright 2026 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 { createFrontendPlugin } from '@backstage/frontend-plugin-api';\nimport { techInsightsApi } from './apis';\nimport { entityTechInsightsScorecardContent } from './entityContent';\nimport { entityTechInsightsScorecardCard } from './entityCards';\nimport { techInsightsScorecardPage } from './pages';\nimport { techInsightsNavItem } from './navItems';\n\n/**\n * The Tech Insights frontend plugin for the new Backstage frontend system.\n *\n * @alpha\n */\nconst techInsightsPlugin = createFrontendPlugin({\n pluginId: 'tech-insights',\n extensions: [\n techInsightsApi,\n techInsightsScorecardPage,\n entityTechInsightsScorecardContent,\n entityTechInsightsScorecardCard,\n techInsightsNavItem,\n ],\n});\n\nexport default techInsightsPlugin;\n"],"names":[],"mappings":";;;;;;;AA2BA,MAAM,qBAAqB,oBAAqB,CAAA;AAAA,EAC9C,QAAU,EAAA,eAAA;AAAA,EACV,UAAY,EAAA;AAAA,IACV,eAAA;AAAA,IACA,yBAAA;AAAA,IACA,kCAAA;AAAA,IACA,+BAAA;AAAA,IACA;AAAA;AAEJ,CAAC;;;;"}
@@ -0,0 +1,125 @@
1
+ /// <reference types="react" />
2
+ import * as _backstage_catalog_model from '@backstage/catalog-model';
3
+ import * as react from 'react';
4
+ import * as _backstage_plugin_catalog_react_alpha from '@backstage/plugin-catalog-react/alpha';
5
+ import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
6
+
7
+ /**
8
+ * The Tech Insights frontend plugin for the new Backstage frontend system.
9
+ *
10
+ * @alpha
11
+ */
12
+ declare const techInsightsPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugin<{}, {}, {
13
+ "api:tech-insights": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
14
+ kind: "api";
15
+ name: undefined;
16
+ config: {};
17
+ configInput: {};
18
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.AnyApiFactory, "core.api.factory", {}>;
19
+ inputs: {};
20
+ params: <TApi, TImpl extends TApi, TDeps extends {
21
+ [x: string]: unknown;
22
+ }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
23
+ }>;
24
+ "entity-card:tech-insights/scorecards": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
25
+ kind: "entity-card";
26
+ name: "scorecards";
27
+ config: {
28
+ filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
29
+ type: "content" | "summary" | "info" | undefined;
30
+ };
31
+ configInput: {
32
+ filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
33
+ type?: "content" | "summary" | "info" | undefined;
34
+ };
35
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
36
+ optional: true;
37
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-filter-expression", {
38
+ optional: true;
39
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_plugin_catalog_react_alpha.EntityCardType, "catalog.entity-card-type", {
40
+ optional: true;
41
+ }>;
42
+ inputs: {};
43
+ params: {
44
+ loader: () => Promise<JSX.Element>;
45
+ filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean) | undefined;
46
+ type?: _backstage_plugin_catalog_react_alpha.EntityCardType | undefined;
47
+ };
48
+ }>;
49
+ "entity-content:tech-insights/scorecards": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
50
+ kind: "entity-content";
51
+ name: "scorecards";
52
+ config: {
53
+ path: string | undefined;
54
+ title: string | undefined;
55
+ filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
56
+ group: string | false | undefined;
57
+ };
58
+ configInput: {
59
+ filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
60
+ title?: string | undefined;
61
+ path?: string | undefined;
62
+ group?: string | false | undefined;
63
+ };
64
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
65
+ optional: true;
66
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
67
+ optional: true;
68
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-filter-expression", {
69
+ optional: true;
70
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-group", {
71
+ optional: true;
72
+ }>;
73
+ inputs: {};
74
+ params: {
75
+ defaultPath?: [Error: "Use the 'path' param instead"] | undefined;
76
+ path: string;
77
+ defaultTitle?: [Error: "Use the 'title' param instead"] | undefined;
78
+ title: string;
79
+ defaultGroup?: [Error: "Use the 'group' param instead"] | undefined;
80
+ group?: (string & {}) | "development" | "deployment" | "overview" | "documentation" | "operation" | "observability" | undefined;
81
+ loader: () => Promise<JSX.Element>;
82
+ routeRef?: _backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams> | undefined;
83
+ filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean) | undefined;
84
+ };
85
+ }>;
86
+ "nav-item:tech-insights": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
87
+ kind: "nav-item";
88
+ name: undefined;
89
+ config: {};
90
+ configInput: {};
91
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<{
92
+ title: string;
93
+ icon: _backstage_frontend_plugin_api.IconComponent;
94
+ routeRef: _backstage_frontend_plugin_api.RouteRef<undefined>;
95
+ }, "core.nav-item.target", {}>;
96
+ inputs: {};
97
+ params: {
98
+ title: string;
99
+ icon: _backstage_frontend_plugin_api.IconComponent;
100
+ routeRef: _backstage_frontend_plugin_api.RouteRef<undefined>;
101
+ };
102
+ }>;
103
+ "page:tech-insights": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
104
+ kind: "page";
105
+ name: undefined;
106
+ config: {
107
+ path: string | undefined;
108
+ };
109
+ configInput: {
110
+ path?: string | undefined;
111
+ };
112
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
113
+ optional: true;
114
+ }>;
115
+ inputs: {};
116
+ params: {
117
+ defaultPath?: [Error: "Use the 'path' param instead"] | undefined;
118
+ path: string;
119
+ loader: () => Promise<JSX.Element>;
120
+ routeRef?: _backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams> | undefined;
121
+ };
122
+ }>;
123
+ }>;
124
+
125
+ export { techInsightsPlugin as default };
@@ -0,0 +1,2 @@
1
+ export { default } from './alpha/plugin.esm.js';
2
+ //# sourceMappingURL=alpha.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alpha.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage-community/plugin-tech-insights",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "backstage": {
5
5
  "role": "frontend-plugin",
6
6
  "pluginId": "tech-insights",
@@ -12,12 +12,37 @@
12
12
  "@backstage-community/plugin-tech-insights-maturity-common",
13
13
  "@backstage-community/plugin-tech-insights-node",
14
14
  "@backstage-community/plugin-tech-insights-react"
15
- ]
15
+ ],
16
+ "features": {
17
+ "./alpha": "@backstage/FrontendPlugin"
18
+ }
16
19
  },
17
20
  "publishConfig": {
18
- "access": "public",
19
- "main": "dist/index.esm.js",
20
- "types": "dist/index.d.ts"
21
+ "access": "public"
22
+ },
23
+ "exports": {
24
+ ".": {
25
+ "import": "./dist/index.esm.js",
26
+ "types": "./dist/index.d.ts",
27
+ "default": "./dist/index.esm.js"
28
+ },
29
+ "./alpha": {
30
+ "backstage": "@backstage/FrontendPlugin",
31
+ "import": "./dist/alpha.esm.js",
32
+ "types": "./dist/alpha.d.ts",
33
+ "default": "./dist/alpha.esm.js"
34
+ },
35
+ "./package.json": "./package.json"
36
+ },
37
+ "typesVersions": {
38
+ "*": {
39
+ "alpha": [
40
+ "dist/alpha.d.ts"
41
+ ],
42
+ "package.json": [
43
+ "package.json"
44
+ ]
45
+ }
21
46
  },
22
47
  "homepage": "https://backstage.io",
23
48
  "repository": {
@@ -27,8 +52,8 @@
27
52
  },
28
53
  "license": "Apache-2.0",
29
54
  "sideEffects": false,
30
- "main": "dist/index.esm.js",
31
- "types": "dist/index.d.ts",
55
+ "main": "./dist/index.esm.js",
56
+ "types": "./dist/index.d.ts",
32
57
  "files": [
33
58
  "dist"
34
59
  ],
@@ -45,9 +70,11 @@
45
70
  "@backstage-community/plugin-tech-insights-common": "^0.8.0",
46
71
  "@backstage-community/plugin-tech-insights-react": "^1.3.0",
47
72
  "@backstage/catalog-model": "^1.7.6",
73
+ "@backstage/core-compat-api": "^0.5.5",
48
74
  "@backstage/core-components": "^0.18.4",
49
75
  "@backstage/core-plugin-api": "^1.12.1",
50
76
  "@backstage/errors": "^1.2.7",
77
+ "@backstage/frontend-plugin-api": "^0.13.2",
51
78
  "@backstage/plugin-catalog-react": "^1.21.4",
52
79
  "@backstage/types": "^1.2.2",
53
80
  "@material-table/exporters": "^1.2.19",
@@ -73,12 +100,5 @@
73
100
  "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
74
101
  "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
75
102
  },
76
- "typesVersions": {
77
- "*": {
78
- "package.json": [
79
- "package.json"
80
- ]
81
- }
82
- },
83
103
  "module": "./dist/index.esm.js"
84
104
  }