@backstage-community/plugin-entity-feedback 0.10.0 → 0.11.1
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 +17 -0
- package/README.md +93 -0
- package/dist/alpha/apis.esm.js +17 -0
- package/dist/alpha/apis.esm.js.map +1 -0
- package/dist/alpha/entityCards.esm.js +83 -0
- package/dist/alpha/entityCards.esm.js.map +1 -0
- package/dist/alpha/entityContents.esm.js +32 -0
- package/dist/alpha/entityContents.esm.js.map +1 -0
- package/dist/alpha/entityPredicates.esm.js +32 -0
- package/dist/alpha/entityPredicates.esm.js.map +1 -0
- package/dist/alpha/plugin.esm.js +23 -0
- package/dist/alpha/plugin.esm.js.map +1 -0
- package/dist/alpha.d.ts +154 -0
- package/dist/alpha.esm.js +2 -0
- package/dist/alpha.esm.js.map +1 -0
- package/dist/package.json.esm.js +109 -0
- package/dist/package.json.esm.js.map +1 -0
- package/package.json +43 -21
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @backstage-community/plugin-entity-feedback
|
|
2
2
|
|
|
3
|
+
## 0.11.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- d5b74e9: Migrate the `entity-feedback` plugin to the new frontend system.
|
|
8
|
+
|
|
9
|
+
## 0.11.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- f652e7b: Backstage version bump to v1.43.2
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- Updated dependencies [f652e7b]
|
|
18
|
+
- @backstage-community/plugin-entity-feedback-common@0.9.0
|
|
19
|
+
|
|
3
20
|
## 0.10.0
|
|
4
21
|
|
|
5
22
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -139,6 +139,99 @@ const groupPage = (
|
|
|
139
139
|
|
|
140
140
|
Note: For a full example of this you can look at [this EntityPage](../../packages/app/src/components/catalog/EntityPage.tsx).
|
|
141
141
|
|
|
142
|
+
## New Frontend System
|
|
143
|
+
|
|
144
|
+
Follow these steps to detect and configure the Entity Feedback plugin if you'd like to use it in an application that supports the new Backstage frontend system.
|
|
145
|
+
|
|
146
|
+
### Package detection
|
|
147
|
+
|
|
148
|
+
Once you install the `@backstage-community/plugin-entity-feedback` package using your preferred package manager, you have to choose how the package should be detected by the app. The package can be automatically discovered when the feature discovery config is set, or it can be manually enabled via code (for more granular package customization cases, such as extension overrides).
|
|
149
|
+
|
|
150
|
+
<table>
|
|
151
|
+
<tr>
|
|
152
|
+
<td>Via config</td>
|
|
153
|
+
<td>Via code</td>
|
|
154
|
+
</tr>
|
|
155
|
+
<tr>
|
|
156
|
+
<td>
|
|
157
|
+
<pre lang="yaml">
|
|
158
|
+
<code>
|
|
159
|
+
# app-config.yaml
|
|
160
|
+
app:
|
|
161
|
+
# Enable package discovery for all plugins
|
|
162
|
+
packages: 'all'
|
|
163
|
+
---
|
|
164
|
+
app:
|
|
165
|
+
# Enable package discovery only for Entity Feedback
|
|
166
|
+
packages:
|
|
167
|
+
include:
|
|
168
|
+
- '@backstage-community/plugin-entity-feedback'
|
|
169
|
+
</code>
|
|
170
|
+
</pre>
|
|
171
|
+
</td>
|
|
172
|
+
<td>
|
|
173
|
+
<pre lang="javascript">
|
|
174
|
+
<code>
|
|
175
|
+
// packages/app/src/App.tsx
|
|
176
|
+
import { createApp } from '@backstage/frontend-defaults';
|
|
177
|
+
import entityFeedbackPlugin from '@backstage-community/plugin-entity-feedback/alpha';
|
|
178
|
+
//...
|
|
179
|
+
const app = createApp({
|
|
180
|
+
// ...
|
|
181
|
+
features: [
|
|
182
|
+
//...
|
|
183
|
+
entityFeedbackPlugin,
|
|
184
|
+
],
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
//...
|
|
188
|
+
</code>
|
|
189
|
+
|
|
190
|
+
</pre>
|
|
191
|
+
</td>
|
|
192
|
+
|
|
193
|
+
</tr>
|
|
194
|
+
</table>
|
|
195
|
+
|
|
196
|
+
## Extensions config
|
|
197
|
+
|
|
198
|
+
Currently, the plugin installs 4 extensions: 1 api, 2 entity cards (buttons and table ratings) and 1 entity page content (also known as entity page tab), see below examples of how to configure the available extensions.
|
|
199
|
+
|
|
200
|
+
```yml
|
|
201
|
+
# app-config.yaml
|
|
202
|
+
app:
|
|
203
|
+
extensions:
|
|
204
|
+
# Example disabling the "buttons" rating entity card
|
|
205
|
+
- 'entity-card:entity-feedback/ratings-buttons': false
|
|
206
|
+
# Example customizing the "buttons" rating entity card
|
|
207
|
+
- 'entity-card:entity-feedback/ratings-buttons':
|
|
208
|
+
config:
|
|
209
|
+
variant: 'starred' # (Optional) defaults to "like-dislike"
|
|
210
|
+
title: 'Rating Buttons' # (Optional) defaults to "Rate this entity"
|
|
211
|
+
requireResponse: false # (Optional) defaults to "true"
|
|
212
|
+
dialogTitle: 'What could be better?' # (Optional) defaults to "Tell us what could be better"
|
|
213
|
+
dialogResponses: # (Optional) defaults to "Incorrect info, Missing info and Other"
|
|
214
|
+
- id: 'inaccurate'
|
|
215
|
+
label: 'Inaccurate'
|
|
216
|
+
- id: 'other'
|
|
217
|
+
label: 'Other'
|
|
218
|
+
# Example disabling the "table" rating entity card
|
|
219
|
+
- 'entity-card:entity-feedback/ratings-table': false
|
|
220
|
+
# Example customizing the "table" rating entity card
|
|
221
|
+
- 'entity-card:entity-feedback/ratings-table':
|
|
222
|
+
config:
|
|
223
|
+
variant: 'starred' # (Optional) defaults to "like-dislike"
|
|
224
|
+
title: 'Rating Table' # (Optional) defaults to "Entity Ratings"
|
|
225
|
+
allEntities: true # (Optional) defaults to "false"
|
|
226
|
+
# Example disabling the entity feedback content
|
|
227
|
+
- 'entity-content:entity-feedback': false
|
|
228
|
+
# Example customizing the entity feedback content
|
|
229
|
+
- 'entity-content:entity-feedback':
|
|
230
|
+
config:
|
|
231
|
+
path: '/feedbacks'
|
|
232
|
+
title: 'Feedbacks'
|
|
233
|
+
```
|
|
234
|
+
|
|
142
235
|
## Local Development
|
|
143
236
|
|
|
144
237
|
To start the mocked example you need to run the front and backend.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ApiBlueprint, discoveryApiRef, fetchApiRef } from '@backstage/frontend-plugin-api';
|
|
2
|
+
import { EntityFeedbackClient } from '../api/EntityFeedbackClient.esm.js';
|
|
3
|
+
import { entityFeedbackApiRef } from '../api/EntityFeedbackApi.esm.js';
|
|
4
|
+
|
|
5
|
+
const entityFeedbackApi = ApiBlueprint.make({
|
|
6
|
+
params: (definedParams) => definedParams({
|
|
7
|
+
api: entityFeedbackApiRef,
|
|
8
|
+
deps: {
|
|
9
|
+
discoveryApi: discoveryApiRef,
|
|
10
|
+
fetchApi: fetchApiRef
|
|
11
|
+
},
|
|
12
|
+
factory: ({ discoveryApi, fetchApi }) => new EntityFeedbackClient({ discoveryApi, fetchApi })
|
|
13
|
+
})
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
export { entityFeedbackApi };
|
|
17
|
+
//# sourceMappingURL=apis.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apis.esm.js","sources":["../../src/alpha/apis.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 */\n\nimport {\n ApiBlueprint,\n discoveryApiRef,\n fetchApiRef,\n} from '@backstage/frontend-plugin-api';\nimport { EntityFeedbackClient } from '../api/EntityFeedbackClient';\nimport { entityFeedbackApiRef } from '../api/EntityFeedbackApi';\n\n/**\n * @alpha\n */\nexport const entityFeedbackApi = ApiBlueprint.make({\n params: definedParams =>\n definedParams({\n api: entityFeedbackApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ discoveryApi, fetchApi }) =>\n new EntityFeedbackClient({ discoveryApi, fetchApi }),\n }),\n});\n"],"names":[],"mappings":";;;;AA2Ba,MAAA,iBAAA,GAAoB,aAAa,IAAK,CAAA;AAAA,EACjD,MAAA,EAAQ,mBACN,aAAc,CAAA;AAAA,IACZ,GAAK,EAAA,oBAAA;AAAA,IACL,IAAM,EAAA;AAAA,MACJ,YAAc,EAAA,eAAA;AAAA,MACd,QAAU,EAAA;AAAA,KACZ;AAAA,IACA,OAAA,EAAS,CAAC,EAAE,YAAc,EAAA,QAAA,EACxB,KAAA,IAAI,oBAAqB,CAAA,EAAE,YAAc,EAAA,QAAA,EAAU;AAAA,GACtD;AACL,CAAC;;;;"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { InfoCard } from '@backstage/core-components';
|
|
3
|
+
import { compatWrapper } from '@backstage/core-compat-api';
|
|
4
|
+
import { stringifyEntityRef } from '@backstage/catalog-model';
|
|
5
|
+
import { useAsyncEntity } from '@backstage/plugin-catalog-react';
|
|
6
|
+
import { EntityCardBlueprint } from '@backstage/plugin-catalog-react/alpha';
|
|
7
|
+
import { entityFeedbackAllPredicate, entityFeedbackOwnerPredicate } from './entityPredicates.esm.js';
|
|
8
|
+
|
|
9
|
+
const entityRatingsButtonsCard = EntityCardBlueprint.makeWithOverrides({
|
|
10
|
+
name: "ratings-buttons",
|
|
11
|
+
config: {
|
|
12
|
+
schema: {
|
|
13
|
+
title: (z) => z.string().default("Rate this entity"),
|
|
14
|
+
variant: (z) => z.enum(["like-dislike", "starred"]).default("like-dislike"),
|
|
15
|
+
requestResponse: (z) => z.boolean().optional(),
|
|
16
|
+
dialogTitle: (z) => z.string().optional(),
|
|
17
|
+
dialogResponses: (z) => z.array(
|
|
18
|
+
z.object({
|
|
19
|
+
id: z.string(),
|
|
20
|
+
label: z.string()
|
|
21
|
+
})
|
|
22
|
+
).optional()
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
factory(originalFactory, { config }) {
|
|
26
|
+
const { variant, title, requestResponse, dialogTitle, dialogResponses } = config;
|
|
27
|
+
return originalFactory({
|
|
28
|
+
filter: entityFeedbackAllPredicate,
|
|
29
|
+
async loader() {
|
|
30
|
+
const { LikeDislikeButtons } = await import('../components/LikeDislikeButtons/index.esm.js');
|
|
31
|
+
const { StarredRatingButtons } = await import('../components/StarredRatingButtons/index.esm.js');
|
|
32
|
+
const Buttons = variant === "like-dislike" ? LikeDislikeButtons : StarredRatingButtons;
|
|
33
|
+
return compatWrapper(
|
|
34
|
+
/* @__PURE__ */ jsx(InfoCard, { title, children: /* @__PURE__ */ jsx(
|
|
35
|
+
Buttons,
|
|
36
|
+
{
|
|
37
|
+
requestResponse,
|
|
38
|
+
feedbackDialogTitle: dialogTitle,
|
|
39
|
+
feedbackDialogResponses: dialogResponses
|
|
40
|
+
}
|
|
41
|
+
) })
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
const entityRatingsTableCard = EntityCardBlueprint.makeWithOverrides({
|
|
48
|
+
name: "ratings-table",
|
|
49
|
+
config: {
|
|
50
|
+
schema: {
|
|
51
|
+
title: (z) => z.string().optional(),
|
|
52
|
+
allEntities: (z) => z.boolean().optional(),
|
|
53
|
+
variant: (z) => z.enum(["like-dislike", "starred"]).default("like-dislike")
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
factory(originalFactory, { config }) {
|
|
57
|
+
const { variant, title, allEntities } = config;
|
|
58
|
+
return originalFactory({
|
|
59
|
+
filter: entityFeedbackOwnerPredicate,
|
|
60
|
+
async loader() {
|
|
61
|
+
const { LikeDislikeRatingsTable } = await import('../components/LikeDislikeRatingsTable/index.esm.js');
|
|
62
|
+
const { StarredRatingsTable } = await import('../components/StarredRatingsTable/index.esm.js');
|
|
63
|
+
const Table = variant === "like-dislike" ? LikeDislikeRatingsTable : StarredRatingsTable;
|
|
64
|
+
function Component() {
|
|
65
|
+
const { entity } = useAsyncEntity();
|
|
66
|
+
const ownerRef = entity ? stringifyEntityRef(entity) : "";
|
|
67
|
+
return /* @__PURE__ */ jsx(
|
|
68
|
+
Table,
|
|
69
|
+
{
|
|
70
|
+
title,
|
|
71
|
+
allEntities,
|
|
72
|
+
ownerRef
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
return compatWrapper(/* @__PURE__ */ jsx(Component, {}));
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
export { entityRatingsButtonsCard, entityRatingsTableCard };
|
|
83
|
+
//# sourceMappingURL=entityCards.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityCards.esm.js","sources":["../../src/alpha/entityCards.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 { InfoCard } from '@backstage/core-components';\nimport { compatWrapper } from '@backstage/core-compat-api';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\nimport { useAsyncEntity } from '@backstage/plugin-catalog-react';\nimport { EntityCardBlueprint } from '@backstage/plugin-catalog-react/alpha';\nimport {\n entityFeedbackAllPredicate,\n entityFeedbackOwnerPredicate,\n} from './entityPredicates';\n\n/**\n * @alpha\n */\nexport const entityRatingsButtonsCard = EntityCardBlueprint.makeWithOverrides({\n name: 'ratings-buttons',\n config: {\n schema: {\n title: z => z.string().default('Rate this entity'),\n variant: z => z.enum(['like-dislike', 'starred']).default('like-dislike'),\n requestResponse: z => z.boolean().optional(),\n dialogTitle: z => z.string().optional(),\n dialogResponses: z =>\n z\n .array(\n z.object({\n id: z.string(),\n label: z.string(),\n }),\n )\n .optional(),\n },\n },\n factory(originalFactory, { config }) {\n const { variant, title, requestResponse, dialogTitle, dialogResponses } =\n config;\n return originalFactory({\n filter: entityFeedbackAllPredicate,\n async loader() {\n const { LikeDislikeButtons } = await import(\n '../components/LikeDislikeButtons'\n );\n const { StarredRatingButtons } = await import(\n '../components/StarredRatingButtons'\n );\n const Buttons =\n variant === 'like-dislike'\n ? LikeDislikeButtons\n : StarredRatingButtons;\n return compatWrapper(\n <InfoCard title={title}>\n <Buttons\n requestResponse={requestResponse}\n feedbackDialogTitle={dialogTitle}\n feedbackDialogResponses={dialogResponses}\n />\n </InfoCard>,\n );\n },\n });\n },\n});\n\n/**\n * @alpha\n */\nexport const entityRatingsTableCard = EntityCardBlueprint.makeWithOverrides({\n name: 'ratings-table',\n config: {\n schema: {\n title: z => z.string().optional(),\n allEntities: z => z.boolean().optional(),\n variant: z => z.enum(['like-dislike', 'starred']).default('like-dislike'),\n },\n },\n factory(originalFactory, { config }) {\n const { variant, title, allEntities } = config;\n return originalFactory({\n filter: entityFeedbackOwnerPredicate,\n async loader() {\n const { LikeDislikeRatingsTable } = await import(\n '../components/LikeDislikeRatingsTable'\n );\n const { StarredRatingsTable } = await import(\n '../components/StarredRatingsTable'\n );\n const Table =\n variant === 'like-dislike'\n ? LikeDislikeRatingsTable\n : StarredRatingsTable;\n function Component() {\n const { entity } = useAsyncEntity();\n const ownerRef = entity ? stringifyEntityRef(entity) : '';\n return (\n <Table\n title={title}\n allEntities={allEntities}\n ownerRef={ownerRef}\n />\n );\n }\n return compatWrapper(<Component />);\n },\n });\n },\n});\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { stringifyEntityRef } from '@backstage/catalog-model';
|
|
3
|
+
import { useAsyncEntity } from '@backstage/plugin-catalog-react';
|
|
4
|
+
import { convertLegacyRouteRef, compatWrapper } from '@backstage/core-compat-api';
|
|
5
|
+
import { EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';
|
|
6
|
+
import { rootRouteRef } from '../routes.esm.js';
|
|
7
|
+
import { entityFeedbackAllPredicate } from './entityPredicates.esm.js';
|
|
8
|
+
|
|
9
|
+
const entityFeedbackEntityContent = EntityContentBlueprint.make({
|
|
10
|
+
params: {
|
|
11
|
+
path: "/feedback",
|
|
12
|
+
title: "Feedback",
|
|
13
|
+
routeRef: convertLegacyRouteRef(rootRouteRef),
|
|
14
|
+
filter: entityFeedbackAllPredicate,
|
|
15
|
+
async loader() {
|
|
16
|
+
const { FeedbackResponseTable } = await import('../components/FeedbackResponseTable/index.esm.js');
|
|
17
|
+
function Component() {
|
|
18
|
+
const { entity } = useAsyncEntity();
|
|
19
|
+
return /* @__PURE__ */ jsx(
|
|
20
|
+
FeedbackResponseTable,
|
|
21
|
+
{
|
|
22
|
+
entityRef: entity ? stringifyEntityRef(entity) : ""
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
return compatWrapper(/* @__PURE__ */ jsx(Component, {}));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
export { entityFeedbackEntityContent };
|
|
32
|
+
//# sourceMappingURL=entityContents.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityContents.esm.js","sources":["../../src/alpha/entityContents.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 { stringifyEntityRef } from '@backstage/catalog-model';\nimport { useAsyncEntity } from '@backstage/plugin-catalog-react';\nimport {\n compatWrapper,\n convertLegacyRouteRef,\n} from '@backstage/core-compat-api';\nimport { EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';\nimport { rootRouteRef } from '../routes';\nimport { entityFeedbackAllPredicate } from './entityPredicates';\n\n/**\n * @alpha\n */\nexport const entityFeedbackEntityContent = EntityContentBlueprint.make({\n params: {\n path: '/feedback',\n title: 'Feedback',\n routeRef: convertLegacyRouteRef(rootRouteRef),\n filter: entityFeedbackAllPredicate,\n async loader() {\n const { FeedbackResponseTable } = await import(\n '../components/FeedbackResponseTable'\n );\n function Component() {\n const { entity } = useAsyncEntity();\n return (\n <FeedbackResponseTable\n entityRef={entity ? stringifyEntityRef(entity) : ''}\n />\n );\n }\n return compatWrapper(<Component />);\n },\n },\n});\n"],"names":[],"mappings":";;;;;;;;AA6Ba,MAAA,2BAAA,GAA8B,uBAAuB,IAAK,CAAA;AAAA,EACrE,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,WAAA;AAAA,IACN,KAAO,EAAA,UAAA;AAAA,IACP,QAAA,EAAU,sBAAsB,YAAY,CAAA;AAAA,IAC5C,MAAQ,EAAA,0BAAA;AAAA,IACR,MAAM,MAAS,GAAA;AACb,MAAA,MAAM,EAAE,qBAAA,EAA0B,GAAA,MAAM,OACtC,kDACF,CAAA;AACA,MAAA,SAAS,SAAY,GAAA;AACnB,QAAM,MAAA,EAAE,MAAO,EAAA,GAAI,cAAe,EAAA;AAClC,QACE,uBAAA,GAAA;AAAA,UAAC,qBAAA;AAAA,UAAA;AAAA,YACC,SAAW,EAAA,MAAA,GAAS,kBAAmB,CAAA,MAAM,CAAI,GAAA;AAAA;AAAA,SACnD;AAAA;AAGJ,MAAO,OAAA,aAAA,iBAAe,GAAA,CAAA,SAAA,EAAA,EAAU,CAAE,CAAA;AAAA;AACpC;AAEJ,CAAC;;;;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const entityFeedbackAllPredicate = {
|
|
2
|
+
$all: [
|
|
3
|
+
{
|
|
4
|
+
$not: {
|
|
5
|
+
kind: "location"
|
|
6
|
+
}
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
$not: {
|
|
10
|
+
kind: "user"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
$not: {
|
|
15
|
+
kind: "group"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
};
|
|
20
|
+
const entityFeedbackOwnerPredicate = {
|
|
21
|
+
$any: [
|
|
22
|
+
{
|
|
23
|
+
kind: "user"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
kind: "group"
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export { entityFeedbackAllPredicate, entityFeedbackOwnerPredicate };
|
|
32
|
+
//# sourceMappingURL=entityPredicates.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityPredicates.esm.js","sources":["../../src/alpha/entityPredicates.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 */\n\nimport { EntityPredicate } from '@backstage/plugin-catalog-react/alpha';\n\n/**\n * @alpha\n */\nexport const entityFeedbackAllPredicate: EntityPredicate = {\n $all: [\n {\n $not: {\n kind: 'location',\n },\n },\n {\n $not: {\n kind: 'user',\n },\n },\n {\n $not: {\n kind: 'group',\n },\n },\n ],\n};\n\nexport const entityFeedbackOwnerPredicate: EntityPredicate = {\n $any: [\n {\n kind: 'user',\n },\n {\n kind: 'group',\n },\n ],\n};\n"],"names":[],"mappings":"AAqBO,MAAM,0BAA8C,GAAA;AAAA,EACzD,IAAM,EAAA;AAAA,IACJ;AAAA,MACE,IAAM,EAAA;AAAA,QACJ,IAAM,EAAA;AAAA;AACR,KACF;AAAA,IACA;AAAA,MACE,IAAM,EAAA;AAAA,QACJ,IAAM,EAAA;AAAA;AACR,KACF;AAAA,IACA;AAAA,MACE,IAAM,EAAA;AAAA,QACJ,IAAM,EAAA;AAAA;AACR;AACF;AAEJ;AAEO,MAAM,4BAAgD,GAAA;AAAA,EAC3D,IAAM,EAAA;AAAA,IACJ;AAAA,MACE,IAAM,EAAA;AAAA,KACR;AAAA,IACA;AAAA,MACE,IAAM,EAAA;AAAA;AACR;AAEJ;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { convertLegacyRouteRefs } from '@backstage/core-compat-api';
|
|
2
|
+
import { createFrontendPlugin } from '@backstage/frontend-plugin-api';
|
|
3
|
+
import { entityFeedbackApi } from './apis.esm.js';
|
|
4
|
+
import { entityRatingsButtonsCard, entityRatingsTableCard } from './entityCards.esm.js';
|
|
5
|
+
import { entityFeedbackEntityContent } from './entityContents.esm.js';
|
|
6
|
+
import { rootRouteRef } from '../routes.esm.js';
|
|
7
|
+
|
|
8
|
+
const entityFeedbackPlugin = createFrontendPlugin({
|
|
9
|
+
pluginId: "entity-feedback",
|
|
10
|
+
info: { packageJson: () => import('../package.json.esm.js') },
|
|
11
|
+
extensions: [
|
|
12
|
+
entityFeedbackApi,
|
|
13
|
+
entityRatingsButtonsCard,
|
|
14
|
+
entityRatingsTableCard,
|
|
15
|
+
entityFeedbackEntityContent
|
|
16
|
+
],
|
|
17
|
+
routes: convertLegacyRouteRefs({
|
|
18
|
+
root: rootRouteRef
|
|
19
|
+
})
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
export { entityFeedbackPlugin };
|
|
23
|
+
//# sourceMappingURL=plugin.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.esm.js","sources":["../../src/alpha/plugin.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 */\n\nimport { convertLegacyRouteRefs } from '@backstage/core-compat-api';\nimport { createFrontendPlugin } from '@backstage/frontend-plugin-api';\nimport { entityFeedbackApi } from './apis';\nimport {\n entityRatingsButtonsCard,\n entityRatingsTableCard,\n} from './entityCards';\nimport { entityFeedbackEntityContent } from './entityContents';\nimport { rootRouteRef } from '../routes';\n\n/**\n * @alpha\n */\nexport const entityFeedbackPlugin = createFrontendPlugin({\n pluginId: 'entity-feedback',\n info: { packageJson: () => import('../../package.json') },\n extensions: [\n entityFeedbackApi,\n entityRatingsButtonsCard,\n entityRatingsTableCard,\n entityFeedbackEntityContent,\n ],\n routes: convertLegacyRouteRefs({\n root: rootRouteRef,\n }),\n});\n"],"names":[],"mappings":";;;;;;;AA6BO,MAAM,uBAAuB,oBAAqB,CAAA;AAAA,EACvD,QAAU,EAAA,iBAAA;AAAA,EACV,MAAM,EAAE,WAAA,EAAa,MAAM,OAAO,wBAAoB,CAAE,EAAA;AAAA,EACxD,UAAY,EAAA;AAAA,IACV,iBAAA;AAAA,IACA,wBAAA;AAAA,IACA,sBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAQ,sBAAuB,CAAA;AAAA,IAC7B,IAAM,EAAA;AAAA,GACP;AACH,CAAC;;;;"}
|
package/dist/alpha.d.ts
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
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_core_plugin_api from '@backstage/core-plugin-api';
|
|
6
|
+
import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @alpha
|
|
10
|
+
*/
|
|
11
|
+
declare const entityFeedbackPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugin<{
|
|
12
|
+
root: _backstage_frontend_plugin_api.RouteRef<undefined>;
|
|
13
|
+
}, {}, {
|
|
14
|
+
"api:entity-feedback": _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
15
|
+
kind: "api";
|
|
16
|
+
name: undefined;
|
|
17
|
+
config: {};
|
|
18
|
+
configInput: {};
|
|
19
|
+
output: _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_core_plugin_api.AnyApiFactory, "core.api.factory", {}>;
|
|
20
|
+
inputs: {};
|
|
21
|
+
params: <TApi, TImpl extends TApi, TDeps extends {
|
|
22
|
+
[x: string]: unknown;
|
|
23
|
+
}>(params: _backstage_core_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_core_plugin_api.AnyApiFactory>;
|
|
24
|
+
}>;
|
|
25
|
+
"entity-card:entity-feedback/ratings-buttons": _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
26
|
+
config: {
|
|
27
|
+
title: string;
|
|
28
|
+
variant: "starred" | "like-dislike";
|
|
29
|
+
requestResponse: boolean | undefined;
|
|
30
|
+
dialogTitle: string | undefined;
|
|
31
|
+
dialogResponses: {
|
|
32
|
+
id: string;
|
|
33
|
+
label: string;
|
|
34
|
+
}[] | undefined;
|
|
35
|
+
} & {
|
|
36
|
+
filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
|
|
37
|
+
type: "content" | "summary" | "info" | undefined;
|
|
38
|
+
};
|
|
39
|
+
configInput: {
|
|
40
|
+
title?: string | undefined;
|
|
41
|
+
variant?: "starred" | "like-dislike" | undefined;
|
|
42
|
+
requestResponse?: boolean | undefined;
|
|
43
|
+
dialogTitle?: string | undefined;
|
|
44
|
+
dialogResponses?: {
|
|
45
|
+
id: string;
|
|
46
|
+
label: string;
|
|
47
|
+
}[] | undefined;
|
|
48
|
+
} & {
|
|
49
|
+
filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
|
|
50
|
+
type?: "content" | "summary" | "info" | undefined;
|
|
51
|
+
};
|
|
52
|
+
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", {
|
|
53
|
+
optional: true;
|
|
54
|
+
}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-filter-expression", {
|
|
55
|
+
optional: true;
|
|
56
|
+
}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_plugin_catalog_react_alpha.EntityCardType, "catalog.entity-card-type", {
|
|
57
|
+
optional: true;
|
|
58
|
+
}>;
|
|
59
|
+
inputs: {
|
|
60
|
+
[x: string]: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ExtensionDataRef<unknown, string, {
|
|
61
|
+
optional?: true | undefined;
|
|
62
|
+
}>, {
|
|
63
|
+
optional: boolean;
|
|
64
|
+
singleton: boolean;
|
|
65
|
+
}>;
|
|
66
|
+
};
|
|
67
|
+
kind: "entity-card";
|
|
68
|
+
name: "ratings-buttons";
|
|
69
|
+
params: {
|
|
70
|
+
loader: () => Promise<JSX.Element>;
|
|
71
|
+
filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean) | undefined;
|
|
72
|
+
type?: _backstage_plugin_catalog_react_alpha.EntityCardType | undefined;
|
|
73
|
+
};
|
|
74
|
+
}>;
|
|
75
|
+
"entity-card:entity-feedback/ratings-table": _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
76
|
+
config: {
|
|
77
|
+
title: string | undefined;
|
|
78
|
+
allEntities: boolean | undefined;
|
|
79
|
+
variant: "starred" | "like-dislike";
|
|
80
|
+
} & {
|
|
81
|
+
filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
|
|
82
|
+
type: "content" | "summary" | "info" | undefined;
|
|
83
|
+
};
|
|
84
|
+
configInput: {
|
|
85
|
+
title?: string | undefined;
|
|
86
|
+
allEntities?: boolean | undefined;
|
|
87
|
+
variant?: "starred" | "like-dislike" | undefined;
|
|
88
|
+
} & {
|
|
89
|
+
filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
|
|
90
|
+
type?: "content" | "summary" | "info" | undefined;
|
|
91
|
+
};
|
|
92
|
+
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", {
|
|
93
|
+
optional: true;
|
|
94
|
+
}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-filter-expression", {
|
|
95
|
+
optional: true;
|
|
96
|
+
}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_plugin_catalog_react_alpha.EntityCardType, "catalog.entity-card-type", {
|
|
97
|
+
optional: true;
|
|
98
|
+
}>;
|
|
99
|
+
inputs: {
|
|
100
|
+
[x: string]: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ExtensionDataRef<unknown, string, {
|
|
101
|
+
optional?: true | undefined;
|
|
102
|
+
}>, {
|
|
103
|
+
optional: boolean;
|
|
104
|
+
singleton: boolean;
|
|
105
|
+
}>;
|
|
106
|
+
};
|
|
107
|
+
kind: "entity-card";
|
|
108
|
+
name: "ratings-table";
|
|
109
|
+
params: {
|
|
110
|
+
loader: () => Promise<JSX.Element>;
|
|
111
|
+
filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean) | undefined;
|
|
112
|
+
type?: _backstage_plugin_catalog_react_alpha.EntityCardType | undefined;
|
|
113
|
+
};
|
|
114
|
+
}>;
|
|
115
|
+
"entity-content:entity-feedback": _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
116
|
+
kind: "entity-content";
|
|
117
|
+
name: undefined;
|
|
118
|
+
config: {
|
|
119
|
+
path: string | undefined;
|
|
120
|
+
title: string | undefined;
|
|
121
|
+
filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
|
|
122
|
+
group: string | false | undefined;
|
|
123
|
+
};
|
|
124
|
+
configInput: {
|
|
125
|
+
filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
|
|
126
|
+
title?: string | undefined;
|
|
127
|
+
path?: string | undefined;
|
|
128
|
+
group?: string | false | undefined;
|
|
129
|
+
};
|
|
130
|
+
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", {
|
|
131
|
+
optional: true;
|
|
132
|
+
}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
|
|
133
|
+
optional: true;
|
|
134
|
+
}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-filter-expression", {
|
|
135
|
+
optional: true;
|
|
136
|
+
}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-group", {
|
|
137
|
+
optional: true;
|
|
138
|
+
}>;
|
|
139
|
+
inputs: {};
|
|
140
|
+
params: {
|
|
141
|
+
defaultPath?: [Error: "Use the 'path' param instead"] | undefined;
|
|
142
|
+
path: string;
|
|
143
|
+
defaultTitle?: [Error: "Use the 'title' param instead"] | undefined;
|
|
144
|
+
title: string;
|
|
145
|
+
defaultGroup?: [Error: "Use the 'group' param instead"] | undefined;
|
|
146
|
+
group?: (string & {}) | "development" | "deployment" | "overview" | "documentation" | "operation" | "observability" | undefined;
|
|
147
|
+
loader: () => Promise<JSX.Element>;
|
|
148
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams> | undefined;
|
|
149
|
+
filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean) | undefined;
|
|
150
|
+
};
|
|
151
|
+
}>;
|
|
152
|
+
}>;
|
|
153
|
+
|
|
154
|
+
export { entityFeedbackPlugin as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alpha.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
var name = "@backstage-community/plugin-entity-feedback";
|
|
2
|
+
var version = "0.11.1";
|
|
3
|
+
var backstage = {
|
|
4
|
+
role: "frontend-plugin",
|
|
5
|
+
pluginId: "entity-feedback",
|
|
6
|
+
pluginPackages: [
|
|
7
|
+
"@backstage-community/plugin-entity-feedback",
|
|
8
|
+
"@backstage-community/plugin-entity-feedback-backend",
|
|
9
|
+
"@backstage-community/plugin-entity-feedback-common"
|
|
10
|
+
]
|
|
11
|
+
};
|
|
12
|
+
var publishConfig = {
|
|
13
|
+
access: "public"
|
|
14
|
+
};
|
|
15
|
+
var exports = {
|
|
16
|
+
".": "./src/index.ts",
|
|
17
|
+
"./alpha": "./src/alpha/index.ts",
|
|
18
|
+
"./package.json": "./package.json"
|
|
19
|
+
};
|
|
20
|
+
var typesVersions = {
|
|
21
|
+
"*": {
|
|
22
|
+
alpha: [
|
|
23
|
+
"src/alpha/index.ts"
|
|
24
|
+
],
|
|
25
|
+
"package.json": [
|
|
26
|
+
"package.json"
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
var homepage = "https://backstage.io";
|
|
31
|
+
var repository = {
|
|
32
|
+
type: "git",
|
|
33
|
+
url: "https://github.com/backstage/community-plugins",
|
|
34
|
+
directory: "workspaces/entity-feedback/plugins/entity-feedback"
|
|
35
|
+
};
|
|
36
|
+
var license = "Apache-2.0";
|
|
37
|
+
var sideEffects = false;
|
|
38
|
+
var main = "src/index.ts";
|
|
39
|
+
var types = "src/index.ts";
|
|
40
|
+
var files = [
|
|
41
|
+
"dist"
|
|
42
|
+
];
|
|
43
|
+
var scripts = {
|
|
44
|
+
build: "backstage-cli package build",
|
|
45
|
+
clean: "backstage-cli package clean",
|
|
46
|
+
lint: "backstage-cli package lint",
|
|
47
|
+
prepack: "backstage-cli package prepack",
|
|
48
|
+
postpack: "backstage-cli package postpack",
|
|
49
|
+
start: "backstage-cli package start",
|
|
50
|
+
"start:alpha": "backstage-cli package start --entry-dir dev/alpha --config dev/alpha/app-config.yaml",
|
|
51
|
+
test: "backstage-cli package test"
|
|
52
|
+
};
|
|
53
|
+
var dependencies = {
|
|
54
|
+
"@backstage-community/plugin-entity-feedback-common": "workspace:^",
|
|
55
|
+
"@backstage/catalog-model": "^1.7.5",
|
|
56
|
+
"@backstage/core-compat-api": "^0.5.2",
|
|
57
|
+
"@backstage/core-components": "^0.18.1",
|
|
58
|
+
"@backstage/core-plugin-api": "^1.11.0",
|
|
59
|
+
"@backstage/errors": "^1.2.7",
|
|
60
|
+
"@backstage/frontend-plugin-api": "^0.12.0",
|
|
61
|
+
"@backstage/plugin-catalog-react": "^1.21.1",
|
|
62
|
+
"@material-ui/core": "^4.9.13",
|
|
63
|
+
"@material-ui/icons": "^4.9.1",
|
|
64
|
+
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
|
|
65
|
+
"react-use": "^17.2.4"
|
|
66
|
+
};
|
|
67
|
+
var devDependencies = {
|
|
68
|
+
"@backstage/cli": "patch:@backstage/cli@npm%3A0.34.3#~/.yarn/patches/@backstage-cli-npm-0.34.3-2b0ecb658a.patch",
|
|
69
|
+
"@backstage/dev-utils": "^1.1.14",
|
|
70
|
+
"@backstage/frontend-defaults": "^0.3.1",
|
|
71
|
+
"@backstage/plugin-catalog": "^1.31.3",
|
|
72
|
+
"@backstage/test-utils": "^1.7.11",
|
|
73
|
+
"@testing-library/dom": "^10.0.0",
|
|
74
|
+
"@testing-library/jest-dom": "^6.0.0",
|
|
75
|
+
"@testing-library/react": "^15.0.0",
|
|
76
|
+
"@testing-library/user-event": "^14.0.0",
|
|
77
|
+
"@types/react-dom": "^18.2.19",
|
|
78
|
+
msw: "^1.0.0",
|
|
79
|
+
react: "^16.13.1 || ^17.0.0 || ^18.0.0",
|
|
80
|
+
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
|
|
81
|
+
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
|
|
82
|
+
};
|
|
83
|
+
var peerDependencies = {
|
|
84
|
+
react: "^16.13.1 || ^17.0.0 || ^18.0.0",
|
|
85
|
+
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
|
|
86
|
+
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
|
|
87
|
+
};
|
|
88
|
+
var _package = {
|
|
89
|
+
name: name,
|
|
90
|
+
version: version,
|
|
91
|
+
backstage: backstage,
|
|
92
|
+
publishConfig: publishConfig,
|
|
93
|
+
exports: exports,
|
|
94
|
+
typesVersions: typesVersions,
|
|
95
|
+
homepage: homepage,
|
|
96
|
+
repository: repository,
|
|
97
|
+
license: license,
|
|
98
|
+
sideEffects: sideEffects,
|
|
99
|
+
main: main,
|
|
100
|
+
types: types,
|
|
101
|
+
files: files,
|
|
102
|
+
scripts: scripts,
|
|
103
|
+
dependencies: dependencies,
|
|
104
|
+
devDependencies: devDependencies,
|
|
105
|
+
peerDependencies: peerDependencies
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
export { backstage, _package as default, dependencies, devDependencies, exports, files, homepage, license, main, name, peerDependencies, publishConfig, repository, scripts, sideEffects, types, typesVersions, version };
|
|
109
|
+
//# sourceMappingURL=package.json.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package.json.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage-community/plugin-entity-feedback",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"backstage": {
|
|
5
5
|
"role": "frontend-plugin",
|
|
6
6
|
"pluginId": "entity-feedback",
|
|
@@ -8,12 +8,37 @@
|
|
|
8
8
|
"@backstage-community/plugin-entity-feedback",
|
|
9
9
|
"@backstage-community/plugin-entity-feedback-backend",
|
|
10
10
|
"@backstage-community/plugin-entity-feedback-common"
|
|
11
|
-
]
|
|
11
|
+
],
|
|
12
|
+
"features": {
|
|
13
|
+
"./alpha": "@backstage/FrontendPlugin"
|
|
14
|
+
}
|
|
12
15
|
},
|
|
13
16
|
"publishConfig": {
|
|
14
|
-
"access": "public"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
+
"access": "public"
|
|
18
|
+
},
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"import": "./dist/index.esm.js",
|
|
22
|
+
"types": "./dist/index.d.ts",
|
|
23
|
+
"default": "./dist/index.esm.js"
|
|
24
|
+
},
|
|
25
|
+
"./alpha": {
|
|
26
|
+
"backstage": "@backstage/FrontendPlugin",
|
|
27
|
+
"import": "./dist/alpha.esm.js",
|
|
28
|
+
"types": "./dist/alpha.d.ts",
|
|
29
|
+
"default": "./dist/alpha.esm.js"
|
|
30
|
+
},
|
|
31
|
+
"./package.json": "./package.json"
|
|
32
|
+
},
|
|
33
|
+
"typesVersions": {
|
|
34
|
+
"*": {
|
|
35
|
+
"alpha": [
|
|
36
|
+
"dist/alpha.d.ts"
|
|
37
|
+
],
|
|
38
|
+
"package.json": [
|
|
39
|
+
"package.json"
|
|
40
|
+
]
|
|
41
|
+
}
|
|
17
42
|
},
|
|
18
43
|
"homepage": "https://backstage.io",
|
|
19
44
|
"repository": {
|
|
@@ -23,8 +48,8 @@
|
|
|
23
48
|
},
|
|
24
49
|
"license": "Apache-2.0",
|
|
25
50
|
"sideEffects": false,
|
|
26
|
-
"main": "dist/index.esm.js",
|
|
27
|
-
"types": "dist/index.d.ts",
|
|
51
|
+
"main": "./dist/index.esm.js",
|
|
52
|
+
"types": "./dist/index.d.ts",
|
|
28
53
|
"files": [
|
|
29
54
|
"dist"
|
|
30
55
|
],
|
|
@@ -35,24 +60,28 @@
|
|
|
35
60
|
"prepack": "backstage-cli package prepack",
|
|
36
61
|
"postpack": "backstage-cli package postpack",
|
|
37
62
|
"start": "backstage-cli package start",
|
|
63
|
+
"start:alpha": "backstage-cli package start --entry-dir dev/alpha --config dev/alpha/app-config.yaml",
|
|
38
64
|
"test": "backstage-cli package test"
|
|
39
65
|
},
|
|
40
66
|
"dependencies": {
|
|
41
|
-
"@backstage-community/plugin-entity-feedback-common": "^0.
|
|
67
|
+
"@backstage-community/plugin-entity-feedback-common": "^0.9.0",
|
|
42
68
|
"@backstage/catalog-model": "^1.7.5",
|
|
43
|
-
"@backstage/core-
|
|
44
|
-
"@backstage/core-
|
|
69
|
+
"@backstage/core-compat-api": "^0.5.2",
|
|
70
|
+
"@backstage/core-components": "^0.18.1",
|
|
71
|
+
"@backstage/core-plugin-api": "^1.11.0",
|
|
45
72
|
"@backstage/errors": "^1.2.7",
|
|
46
|
-
"@backstage/plugin-
|
|
73
|
+
"@backstage/frontend-plugin-api": "^0.12.0",
|
|
74
|
+
"@backstage/plugin-catalog-react": "^1.21.1",
|
|
47
75
|
"@material-ui/core": "^4.9.13",
|
|
48
76
|
"@material-ui/icons": "^4.9.1",
|
|
49
77
|
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
|
|
50
78
|
"react-use": "^17.2.4"
|
|
51
79
|
},
|
|
52
80
|
"devDependencies": {
|
|
53
|
-
"@backstage/cli": "
|
|
54
|
-
"@backstage/dev-utils": "^1.1.
|
|
55
|
-
"@backstage/
|
|
81
|
+
"@backstage/cli": "patch:@backstage/cli@npm%3A0.34.3#~/.yarn/patches/@backstage-cli-npm-0.34.3-2b0ecb658a.patch",
|
|
82
|
+
"@backstage/dev-utils": "^1.1.14",
|
|
83
|
+
"@backstage/frontend-defaults": "^0.3.1",
|
|
84
|
+
"@backstage/plugin-catalog": "^1.31.3",
|
|
56
85
|
"@backstage/test-utils": "^1.7.11",
|
|
57
86
|
"@testing-library/dom": "^10.0.0",
|
|
58
87
|
"@testing-library/jest-dom": "^6.0.0",
|
|
@@ -69,12 +98,5 @@
|
|
|
69
98
|
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
|
|
70
99
|
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
|
|
71
100
|
},
|
|
72
|
-
"typesVersions": {
|
|
73
|
-
"*": {
|
|
74
|
-
"package.json": [
|
|
75
|
-
"package.json"
|
|
76
|
-
]
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
101
|
"module": "./dist/index.esm.js"
|
|
80
102
|
}
|