@drodil/backstage-plugin-qeta 3.59.7 → 3.59.10

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.
@@ -0,0 +1,152 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "qeta": {
6
+ "type": "object",
7
+ "properties": {
8
+ "allowAnonymous": {
9
+ "type": "boolean",
10
+ "description": "Allow anonymous questions",
11
+ "visibility": "frontend"
12
+ },
13
+ "permissions": {
14
+ "type": "boolean",
15
+ "visibility": "frontend"
16
+ },
17
+ "entityKinds": {
18
+ "type": "array",
19
+ "items": {
20
+ "type": "string"
21
+ },
22
+ "description": "Determine what kind of entities can be attached to questions. For example [System, Component, API, Location, Template]. Default is [Component, System].",
23
+ "visibility": "frontend",
24
+ "deprecated": "use `entities` config instead"
25
+ },
26
+ "entities": {
27
+ "type": "object",
28
+ "properties": {
29
+ "kinds": {
30
+ "type": "array",
31
+ "items": {
32
+ "type": "string"
33
+ },
34
+ "description": "Determine what kind of entities can be attached to posts. For example [System, Component, API, Location, Template]. Default is [Component, System].",
35
+ "visibility": "frontend"
36
+ },
37
+ "max": {
38
+ "type": "number",
39
+ "description": "Maximum entities to attach to posts.",
40
+ "visibility": "frontend"
41
+ },
42
+ "min": {
43
+ "type": "number",
44
+ "description": "Minimum entities required to attach to post.",
45
+ "visibility": "frontend"
46
+ }
47
+ },
48
+ "description": "Entities configuration for posts.",
49
+ "visibility": "frontend"
50
+ },
51
+ "tags": {
52
+ "type": "object",
53
+ "properties": {
54
+ "allowCreation": {
55
+ "type": "boolean",
56
+ "description": "Allow creation of new tags. Default: true",
57
+ "visibility": "frontend"
58
+ },
59
+ "allowedTags": {
60
+ "type": "array",
61
+ "items": {
62
+ "type": "string"
63
+ },
64
+ "description": "Allowed tags to be used with posts. Only valid if allowCreation is false.",
65
+ "visibility": "frontend"
66
+ },
67
+ "max": {
68
+ "type": "number",
69
+ "description": "Maximum number of tags per post. Default: 5",
70
+ "visibility": "frontend"
71
+ },
72
+ "min": {
73
+ "type": "number",
74
+ "description": "Minimum number of tags required per post.",
75
+ "visibility": "frontend"
76
+ }
77
+ },
78
+ "description": "Posts tags specific configuration",
79
+ "visibility": "frontend"
80
+ },
81
+ "mentions": {
82
+ "type": "object",
83
+ "properties": {
84
+ "supportedKinds": {
85
+ "type": "array",
86
+ "items": {
87
+ "type": "string"
88
+ },
89
+ "description": "List of types of mentions that can be used in posts.\n\nCurrently supported types are:\n- `user`: Mention a user\n- `group`: Mention a group",
90
+ "visibility": "frontend"
91
+ }
92
+ },
93
+ "description": "Posts mentions specific configuration",
94
+ "visibility": "frontend"
95
+ },
96
+ "moderators": {
97
+ "type": "array",
98
+ "items": {
99
+ "type": "string"
100
+ },
101
+ "description": "List of users/groups that can moderate questions and answers in case permission framework is not in use. In case permission framework is in use, this list is used to determine if user can access the moderator panel",
102
+ "visibility": "frontend"
103
+ },
104
+ "storage": {
105
+ "type": "object",
106
+ "properties": {
107
+ "disabled": {
108
+ "type": "boolean",
109
+ "description": "If desire to disable image upload.",
110
+ "visibility": "frontend"
111
+ },
112
+ "allowedMimeTypes": {
113
+ "type": "array",
114
+ "items": {
115
+ "type": "string"
116
+ },
117
+ "description": "Allowed mime types for images.",
118
+ "visibility": "frontend"
119
+ }
120
+ },
121
+ "description": "If desire to disable image upload.",
122
+ "visibility": "frontend"
123
+ },
124
+ "aiBotName": {
125
+ "type": "string",
126
+ "description": "Name of the AI bot that responds to users questions. Defaults to 'AI'",
127
+ "visibility": "frontend"
128
+ },
129
+ "history": {
130
+ "type": "object",
131
+ "properties": {
132
+ "enabled": {
133
+ "type": "boolean",
134
+ "description": "Enable or disable revision tracking. Default: false",
135
+ "visibility": "frontend"
136
+ },
137
+ "enabledContent": {
138
+ "type": "array",
139
+ "items": {
140
+ "type": "string"
141
+ },
142
+ "description": "Content types that should have revision tracking enabled. Possible values: 'article', 'question', 'link' Default: ['article']",
143
+ "visibility": "frontend"
144
+ }
145
+ },
146
+ "description": "Post history / revision tracking configuration",
147
+ "visibility": "frontend"
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
package/dist/alpha.d.ts CHANGED
@@ -160,27 +160,6 @@ declare const qetaPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlug
160
160
  inputs: {};
161
161
  params: _backstage_plugin_home_react_alpha.HomePageWidgetBlueprintParams;
162
162
  }>;
163
- "nav-item:qeta": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
164
- kind: "nav-item";
165
- name: undefined;
166
- config: {
167
- title: string | undefined;
168
- };
169
- configInput: {
170
- title?: string | undefined;
171
- };
172
- output: _backstage_frontend_plugin_api.ExtensionDataRef<{
173
- title: string;
174
- icon: _backstage_frontend_plugin_api.IconComponent;
175
- routeRef: _backstage_frontend_plugin_api.RouteRef<undefined>;
176
- }, "core.nav-item.target", {}>;
177
- inputs: {};
178
- params: {
179
- title: string;
180
- icon: _backstage_frontend_plugin_api.IconComponent;
181
- routeRef: _backstage_frontend_plugin_api.RouteRef<undefined>;
182
- };
183
- }>;
184
163
  "page:qeta": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
185
164
  config: {
186
165
  subtitle: string | undefined;
package/dist/alpha.esm.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { ApiBlueprint, createExtensionInput, PageBlueprint, coreExtensionData, NavItemBlueprint, createFrontendPlugin } from '@backstage/frontend-plugin-api';
2
+ import { ApiBlueprint, createExtensionInput, PageBlueprint, coreExtensionData, createFrontendPlugin } from '@backstage/frontend-plugin-api';
3
3
  import { compatWrapper, convertLegacyRouteRef, convertLegacyRouteRefs } from '@backstage/core-compat-api';
4
4
  import { qetaApiRef, qetaRouteRef } from '@drodil/backstage-plugin-qeta-react';
5
5
  export { qetaTranslationRef } from '@drodil/backstage-plugin-qeta-react';
@@ -87,6 +87,8 @@ const qetaPage = PageBlueprint.makeWithOverrides({
87
87
  const rehypePlugins = pluginsApi?.getRehypePlugins();
88
88
  return originalFactory({
89
89
  path: config.path ?? "/qeta",
90
+ title: config.title ?? "Q&A",
91
+ icon: /* @__PURE__ */ jsx(ContactSupportIcon, {}),
90
92
  routeRef: convertLegacyRouteRef(qetaRouteRef),
91
93
  loader: () => import('./components/QetaPage/index.esm.js').then(
92
94
  (m) => compatWrapper(
@@ -152,13 +154,6 @@ const EntityPostsContent = EntityContentBlueprint.makeWithOverrides({
152
154
  });
153
155
  }
154
156
  });
155
- const qetaNavItem = NavItemBlueprint.make({
156
- params: {
157
- title: "Q&A",
158
- routeRef: convertLegacyRouteRef(qetaRouteRef),
159
- icon: ContactSupportIcon
160
- }
161
- });
162
157
  const qetaSearchResultItem = SearchResultListItemBlueprint.make({
163
158
  params: {
164
159
  predicate: (result) => result.type === "qeta",
@@ -230,7 +225,6 @@ const qetaPlugin = createFrontendPlugin({
230
225
  qetaApi,
231
226
  qetaPage,
232
227
  EntityPostsContent,
233
- qetaNavItem,
234
228
  qetaSearchResultItem,
235
229
  qetaPostSearchFilterType,
236
230
  techDocsAskQuestionAddon,
@@ -1 +1 @@
1
- {"version":3,"file":"alpha.esm.js","sources":["../src/alpha.tsx"],"sourcesContent":["import {\n ApiBlueprint,\n coreExtensionData,\n createExtensionInput,\n createFrontendPlugin,\n NavItemBlueprint,\n PageBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport {\n compatWrapper,\n convertLegacyRouteRef,\n convertLegacyRouteRefs,\n} from '@backstage/core-compat-api';\nimport { qetaApiRef, qetaRouteRef } from '@drodil/backstage-plugin-qeta-react';\nimport {\n configApiRef,\n createApiRef,\n discoveryApiRef,\n fetchApiRef,\n} from '@backstage/core-plugin-api';\nimport {\n getSupportedEntityKinds,\n QetaClient,\n} from '@drodil/backstage-plugin-qeta-common';\nimport ContactSupportIcon from '@material-ui/icons/ContactSupport';\nimport { EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';\nimport { Entity } from '@backstage/catalog-model';\nimport {\n SearchFilterResultTypeBlueprint,\n SearchResultListItemBlueprint,\n} from '@backstage/plugin-search-react/alpha';\nimport { TechDocsAddonLocations } from '@backstage/plugin-techdocs-react';\nimport { AddonBlueprint } from '@backstage/plugin-techdocs-react/alpha';\nimport { TechDocsAskQuestionAddon } from './components/TechDocsAskQuestionAddon';\nimport { Pluggable } from 'unified';\nimport { markdownPlugin } from '@drodil/backstage-plugin-qeta-react/alpha';\nimport { HomePageWidgetBlueprint } from '@backstage/plugin-home-react/alpha';\n\ninterface QetaMarkdownPluginsApi {\n getRehypePlugins(): Pluggable[];\n getRemarkPlugins(): Pluggable[];\n}\n\nexport const qetaMarkdownPluginsApiRef = createApiRef<QetaMarkdownPluginsApi>({\n id: 'plugin.qeta.addons',\n});\n\nexport const qetaMarkdownPluginsApiExtension = ApiBlueprint.makeWithOverrides({\n name: 'addons',\n inputs: {\n rehypePlugins: createExtensionInput([markdownPlugin]),\n remarkPlugins: createExtensionInput([markdownPlugin]),\n },\n factory(originalFactory, { inputs }) {\n const rehypePlugins = inputs.rehypePlugins.map(output =>\n output.get(markdownPlugin),\n );\n const remarkPlugins = inputs.remarkPlugins.map(output =>\n output.get(markdownPlugin),\n );\n return originalFactory(defineParams =>\n defineParams({\n api: qetaMarkdownPluginsApiRef,\n deps: {},\n factory: () => ({\n getRehypePlugins: () => rehypePlugins,\n getRemarkPlugins: () => remarkPlugins,\n }),\n }),\n );\n },\n});\n\nconst qetaApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: qetaApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory({ discoveryApi, fetchApi }) {\n return new QetaClient({ discoveryApi, fetchApi });\n },\n }),\n});\n\nconst qetaPage = PageBlueprint.makeWithOverrides({\n config: {\n schema: {\n subtitle: z => z.string().optional(),\n themeId: z => z.string().optional(),\n headerTooltip: z => z.string().optional(),\n headerType: z => z.string().optional(),\n headerTypeLink: z => z.string().optional(),\n },\n },\n inputs: {\n introElement: createExtensionInput([coreExtensionData.reactElement], {\n singleton: true,\n optional: true,\n }),\n headerElements: createExtensionInput([coreExtensionData.reactElement], {\n singleton: false,\n optional: true,\n }),\n },\n factory: (originalFactory, { config, inputs, apis }) => {\n const introElement = inputs.introElement?.get(\n coreExtensionData.reactElement,\n );\n const headerElements = inputs.headerElements.map(e =>\n e.get(coreExtensionData.reactElement),\n );\n const pluginsApi = apis.get(qetaMarkdownPluginsApiRef);\n const remarkPlugins = pluginsApi?.getRemarkPlugins();\n const rehypePlugins = pluginsApi?.getRehypePlugins();\n return originalFactory({\n path: config.path ?? '/qeta',\n routeRef: convertLegacyRouteRef(qetaRouteRef),\n loader: () =>\n import('./components/QetaPage').then(m =>\n compatWrapper(\n <m.QetaPage\n {...config}\n introElement={introElement}\n headerElements={headerElements}\n remarkPlugins={remarkPlugins}\n rehypePlugins={rehypePlugins}\n />,\n ),\n ),\n });\n },\n});\n\nconst EntityPostsContent = EntityContentBlueprint.makeWithOverrides({\n name: 'entity-posts-content',\n config: {\n schema: {\n showFilters: z => z.boolean().optional(),\n showTitle: z => z.boolean().optional(),\n showAskButton: z => z.boolean().optional(),\n showWriteButton: z => z.boolean().optional(),\n showLinkButton: z => z.boolean().optional(),\n showNoQuestionsBtn: z => z.boolean().optional(),\n initialPageSize: z => z.number().optional(),\n type: z => z.enum(['question', 'article', 'link']).optional(),\n view: z => z.enum(['list', 'grid']).optional(),\n relations: z => z.array(z.string()).optional(),\n },\n },\n inputs: {},\n factory: (originalFactory, { config, apis }) => {\n return originalFactory({\n path: config.path ?? '/qeta',\n title: config.title ?? 'Q&A',\n filter: (entity: Entity) => {\n const configApi = apis.get(configApiRef);\n const supportedKinds = getSupportedEntityKinds(configApi);\n const entityKind = entity.kind.toLowerCase();\n return supportedKinds?.includes(entityKind);\n },\n loader: async () => {\n const pluginsApi = apis.get(qetaMarkdownPluginsApiRef);\n const remarkPlugins = pluginsApi?.getRemarkPlugins();\n const rehypePlugins = pluginsApi?.getRehypePlugins();\n return import('./components/EntityPostsContent/EntityPostsContent.tsx').then(\n m =>\n compatWrapper(\n <m.EntityPostsContent\n {...config}\n remarkPlugins={remarkPlugins}\n rehypePlugins={rehypePlugins}\n />,\n ),\n );\n },\n });\n },\n});\n\nconst qetaNavItem = NavItemBlueprint.make({\n params: {\n title: 'Q&A',\n routeRef: convertLegacyRouteRef(qetaRouteRef),\n icon: ContactSupportIcon,\n },\n});\n\nconst qetaSearchResultItem = SearchResultListItemBlueprint.make({\n params: {\n predicate: result => result.type === 'qeta',\n component: () =>\n import('./components/QetaSearchResultListItem').then(\n m => m.QetaSearchResultListItem,\n ),\n },\n});\n\nconst qetaPostSearchFilterType = SearchFilterResultTypeBlueprint.make({\n name: 'qeta',\n params: {\n value: 'qeta',\n name: 'Q&A',\n icon: <ContactSupportIcon />,\n },\n});\n\nconst techDocsAskQuestionAddon = AddonBlueprint.make({\n name: 'ask-question',\n params: {\n name: 'AskQuestion',\n location: TechDocsAddonLocations.Content,\n component: TechDocsAskQuestionAddon,\n },\n});\n\nconst homePageTable = HomePageWidgetBlueprint.make({\n name: 'home-posts-table',\n params: {\n title: 'Q&A posts',\n description: 'Shows latest Q&A posts',\n components: () =>\n import('../src/components/PostsTableCard').then(m => ({\n Content: m.Content,\n })),\n settings: {\n schema: {\n title: 'Post settings',\n type: 'object',\n properties: {\n rowsPerPage: {\n title: 'Rows per page',\n type: 'number',\n },\n postType: {\n title: 'Post type',\n type: 'string',\n enum: ['all', 'question', 'article', 'link'],\n },\n },\n },\n },\n },\n});\n\nconst homeTimeline = HomePageWidgetBlueprint.make({\n name: 'home-posts-timeline',\n params: {\n title: 'Q&A timeline',\n description: 'Shows Q&A latest events',\n components: () =>\n import('../src/components/HomeTimeline').then(m => ({\n Content: m.HomeTimeline,\n })),\n },\n});\n\n/**\n * Backstage frontend plugin.\n *\n * @alpha\n */\nconst qetaPlugin = createFrontendPlugin({\n pluginId: 'qeta',\n info: { packageJson: () => import('../package.json') },\n routes: convertLegacyRouteRefs({\n root: qetaRouteRef,\n }),\n extensions: [\n qetaApi,\n qetaPage,\n EntityPostsContent,\n qetaNavItem,\n qetaSearchResultItem,\n qetaPostSearchFilterType,\n techDocsAskQuestionAddon,\n qetaMarkdownPluginsApiExtension,\n homePageTable,\n homeTimeline,\n ],\n});\n\nexport default qetaPlugin;\n\nexport { qetaTranslationRef } from '@drodil/backstage-plugin-qeta-react';\n\n// TODO: To be removed in favor of direct imports from `@drodil/backstage-plugin-qeta-react/alpha` in the next major release, after the deprecation period has ended.\nexport {\n /** @deprecated Use blueprints from `@drodil/backstage-plugin-qeta-react/alpha` instead. */\n QetaMarkdownRehypePluginBlueprint,\n /** @deprecated Use blueprints from `@drodil/backstage-plugin-qeta-react/alpha` instead. */\n QetaPageIntroElementBlueprint,\n /** @deprecated Use blueprints from `@drodil/backstage-plugin-qeta-react/alpha` instead. */\n QetaPageHeaderElementBlueprint,\n /** @deprecated Use blueprints from `@drodil/backstage-plugin-qeta-react/alpha` instead. */\n QetaMarkdownRemarkPluginBlueprint,\n} from '@drodil/backstage-plugin-qeta-react/alpha';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"alpha.esm.js","sources":["../src/alpha.tsx"],"sourcesContent":["import {\n ApiBlueprint,\n coreExtensionData,\n createExtensionInput,\n createFrontendPlugin,\n PageBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport {\n compatWrapper,\n convertLegacyRouteRef,\n convertLegacyRouteRefs,\n} from '@backstage/core-compat-api';\nimport { qetaApiRef, qetaRouteRef } from '@drodil/backstage-plugin-qeta-react';\nimport {\n configApiRef,\n createApiRef,\n discoveryApiRef,\n fetchApiRef,\n} from '@backstage/core-plugin-api';\nimport {\n getSupportedEntityKinds,\n QetaClient,\n} from '@drodil/backstage-plugin-qeta-common';\nimport ContactSupportIcon from '@material-ui/icons/ContactSupport';\nimport { EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';\nimport { Entity } from '@backstage/catalog-model';\nimport {\n SearchFilterResultTypeBlueprint,\n SearchResultListItemBlueprint,\n} from '@backstage/plugin-search-react/alpha';\nimport { TechDocsAddonLocations } from '@backstage/plugin-techdocs-react';\nimport { AddonBlueprint } from '@backstage/plugin-techdocs-react/alpha';\nimport { TechDocsAskQuestionAddon } from './components/TechDocsAskQuestionAddon';\nimport { Pluggable } from 'unified';\nimport { markdownPlugin } from '@drodil/backstage-plugin-qeta-react/alpha';\nimport { HomePageWidgetBlueprint } from '@backstage/plugin-home-react/alpha';\n\ninterface QetaMarkdownPluginsApi {\n getRehypePlugins(): Pluggable[];\n getRemarkPlugins(): Pluggable[];\n}\n\nexport const qetaMarkdownPluginsApiRef = createApiRef<QetaMarkdownPluginsApi>({\n id: 'plugin.qeta.addons',\n});\n\nexport const qetaMarkdownPluginsApiExtension = ApiBlueprint.makeWithOverrides({\n name: 'addons',\n inputs: {\n rehypePlugins: createExtensionInput([markdownPlugin]),\n remarkPlugins: createExtensionInput([markdownPlugin]),\n },\n factory(originalFactory, { inputs }) {\n const rehypePlugins = inputs.rehypePlugins.map(output =>\n output.get(markdownPlugin),\n );\n const remarkPlugins = inputs.remarkPlugins.map(output =>\n output.get(markdownPlugin),\n );\n return originalFactory(defineParams =>\n defineParams({\n api: qetaMarkdownPluginsApiRef,\n deps: {},\n factory: () => ({\n getRehypePlugins: () => rehypePlugins,\n getRemarkPlugins: () => remarkPlugins,\n }),\n }),\n );\n },\n});\n\nconst qetaApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: qetaApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory({ discoveryApi, fetchApi }) {\n return new QetaClient({ discoveryApi, fetchApi });\n },\n }),\n});\n\nconst qetaPage = PageBlueprint.makeWithOverrides({\n config: {\n schema: {\n subtitle: z => z.string().optional(),\n themeId: z => z.string().optional(),\n headerTooltip: z => z.string().optional(),\n headerType: z => z.string().optional(),\n headerTypeLink: z => z.string().optional(),\n },\n },\n inputs: {\n introElement: createExtensionInput([coreExtensionData.reactElement], {\n singleton: true,\n optional: true,\n }),\n headerElements: createExtensionInput([coreExtensionData.reactElement], {\n singleton: false,\n optional: true,\n }),\n },\n factory: (originalFactory, { config, inputs, apis }) => {\n const introElement = inputs.introElement?.get(\n coreExtensionData.reactElement,\n );\n const headerElements = inputs.headerElements.map(e =>\n e.get(coreExtensionData.reactElement),\n );\n const pluginsApi = apis.get(qetaMarkdownPluginsApiRef);\n const remarkPlugins = pluginsApi?.getRemarkPlugins();\n const rehypePlugins = pluginsApi?.getRehypePlugins();\n return originalFactory({\n path: config.path ?? '/qeta',\n title: config.title ?? 'Q&A',\n icon: <ContactSupportIcon />,\n routeRef: convertLegacyRouteRef(qetaRouteRef),\n loader: () =>\n import('./components/QetaPage').then(m =>\n compatWrapper(\n <m.QetaPage\n {...config}\n introElement={introElement}\n headerElements={headerElements}\n remarkPlugins={remarkPlugins}\n rehypePlugins={rehypePlugins}\n />,\n ),\n ),\n });\n },\n});\n\nconst EntityPostsContent = EntityContentBlueprint.makeWithOverrides({\n name: 'entity-posts-content',\n config: {\n schema: {\n showFilters: z => z.boolean().optional(),\n showTitle: z => z.boolean().optional(),\n showAskButton: z => z.boolean().optional(),\n showWriteButton: z => z.boolean().optional(),\n showLinkButton: z => z.boolean().optional(),\n showNoQuestionsBtn: z => z.boolean().optional(),\n initialPageSize: z => z.number().optional(),\n type: z => z.enum(['question', 'article', 'link']).optional(),\n view: z => z.enum(['list', 'grid']).optional(),\n relations: z => z.array(z.string()).optional(),\n },\n },\n inputs: {},\n factory: (originalFactory, { config, apis }) => {\n return originalFactory({\n path: config.path ?? '/qeta',\n title: config.title ?? 'Q&A',\n filter: (entity: Entity) => {\n const configApi = apis.get(configApiRef);\n const supportedKinds = getSupportedEntityKinds(configApi);\n const entityKind = entity.kind.toLowerCase();\n return supportedKinds?.includes(entityKind);\n },\n loader: async () => {\n const pluginsApi = apis.get(qetaMarkdownPluginsApiRef);\n const remarkPlugins = pluginsApi?.getRemarkPlugins();\n const rehypePlugins = pluginsApi?.getRehypePlugins();\n return import('./components/EntityPostsContent/EntityPostsContent.tsx').then(\n m =>\n compatWrapper(\n <m.EntityPostsContent\n {...config}\n remarkPlugins={remarkPlugins}\n rehypePlugins={rehypePlugins}\n />,\n ),\n );\n },\n });\n },\n});\n\nconst qetaSearchResultItem = SearchResultListItemBlueprint.make({\n params: {\n predicate: result => result.type === 'qeta',\n component: () =>\n import('./components/QetaSearchResultListItem').then(\n m => m.QetaSearchResultListItem,\n ),\n },\n});\n\nconst qetaPostSearchFilterType = SearchFilterResultTypeBlueprint.make({\n name: 'qeta',\n params: {\n value: 'qeta',\n name: 'Q&A',\n icon: <ContactSupportIcon />,\n },\n});\n\nconst techDocsAskQuestionAddon = AddonBlueprint.make({\n name: 'ask-question',\n params: {\n name: 'AskQuestion',\n location: TechDocsAddonLocations.Content,\n component: TechDocsAskQuestionAddon,\n },\n});\n\nconst homePageTable = HomePageWidgetBlueprint.make({\n name: 'home-posts-table',\n params: {\n title: 'Q&A posts',\n description: 'Shows latest Q&A posts',\n components: () =>\n import('../src/components/PostsTableCard').then(m => ({\n Content: m.Content,\n })),\n settings: {\n schema: {\n title: 'Post settings',\n type: 'object',\n properties: {\n rowsPerPage: {\n title: 'Rows per page',\n type: 'number',\n },\n postType: {\n title: 'Post type',\n type: 'string',\n enum: ['all', 'question', 'article', 'link'],\n },\n },\n },\n },\n },\n});\n\nconst homeTimeline = HomePageWidgetBlueprint.make({\n name: 'home-posts-timeline',\n params: {\n title: 'Q&A timeline',\n description: 'Shows Q&A latest events',\n components: () =>\n import('../src/components/HomeTimeline').then(m => ({\n Content: m.HomeTimeline,\n })),\n },\n});\n\n/**\n * Backstage frontend plugin.\n *\n * @alpha\n */\nconst qetaPlugin = createFrontendPlugin({\n pluginId: 'qeta',\n info: { packageJson: () => import('../package.json') },\n routes: convertLegacyRouteRefs({\n root: qetaRouteRef,\n }),\n extensions: [\n qetaApi,\n qetaPage,\n EntityPostsContent,\n qetaSearchResultItem,\n qetaPostSearchFilterType,\n techDocsAskQuestionAddon,\n qetaMarkdownPluginsApiExtension,\n homePageTable,\n homeTimeline,\n ],\n});\n\nexport default qetaPlugin;\n\nexport { qetaTranslationRef } from '@drodil/backstage-plugin-qeta-react';\n\n// TODO: To be removed in favor of direct imports from `@drodil/backstage-plugin-qeta-react/alpha` in the next major release, after the deprecation period has ended.\nexport {\n /** @deprecated Use blueprints from `@drodil/backstage-plugin-qeta-react/alpha` instead. */\n QetaMarkdownRehypePluginBlueprint,\n /** @deprecated Use blueprints from `@drodil/backstage-plugin-qeta-react/alpha` instead. */\n QetaPageIntroElementBlueprint,\n /** @deprecated Use blueprints from `@drodil/backstage-plugin-qeta-react/alpha` instead. */\n QetaPageHeaderElementBlueprint,\n /** @deprecated Use blueprints from `@drodil/backstage-plugin-qeta-react/alpha` instead. */\n QetaMarkdownRemarkPluginBlueprint,\n} from '@drodil/backstage-plugin-qeta-react/alpha';\n"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ var keywords = [
6
6
  "frontend",
7
7
  "backstage.io"
8
8
  ];
9
- var version = "3.59.7";
9
+ var version = "3.59.10";
10
10
  var main = "src/index.ts";
11
11
  var types = "src/index.ts";
12
12
  var prepublishOnly = "yarn tsc && yarn build";
@@ -83,7 +83,7 @@ var dependencies = {
83
83
  unified: "^11.0.5"
84
84
  };
85
85
  var peerDependencies = {
86
- "@backstage/catalog-client": "^1.15.0",
86
+ "@backstage/catalog-client": "^1.16.1",
87
87
  react: " ^18.0.0 || ^19.0.0",
88
88
  "react-dom": "^18.0.0 || ^19.0.0",
89
89
  "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "frontend",
8
8
  "backstage.io"
9
9
  ],
10
- "version": "3.59.7",
10
+ "version": "3.59.10",
11
11
  "main": "./dist/index.esm.js",
12
12
  "types": "./dist/index.d.ts",
13
13
  "prepublishOnly": "yarn tsc && yarn build",
@@ -73,19 +73,19 @@
73
73
  "tsc": "tsc"
74
74
  },
75
75
  "dependencies": {
76
- "@backstage/catalog-model": "^1.8.0",
77
- "@backstage/core-compat-api": "^0.5.10",
78
- "@backstage/core-components": "^0.18.9",
79
- "@backstage/core-plugin-api": "^1.12.5",
80
- "@backstage/frontend-plugin-api": "^0.16.2",
81
- "@backstage/plugin-catalog-react": "^2.1.4",
82
- "@backstage/plugin-home-react": "^0.1.37",
83
- "@backstage/plugin-search-common": "^1.2.23",
84
- "@backstage/plugin-search-react": "^1.11.3",
85
- "@backstage/plugin-signals-react": "^0.0.21",
86
- "@backstage/plugin-techdocs-react": "^1.3.10",
87
- "@drodil/backstage-plugin-qeta-common": "^3.59.7",
88
- "@drodil/backstage-plugin-qeta-react": "^3.59.7",
76
+ "@backstage/catalog-model": "^1.9.0",
77
+ "@backstage/core-compat-api": "^0.5.13",
78
+ "@backstage/core-components": "^0.18.12",
79
+ "@backstage/core-plugin-api": "^1.12.8",
80
+ "@backstage/frontend-plugin-api": "^0.17.3",
81
+ "@backstage/plugin-catalog-react": "^3.2.0",
82
+ "@backstage/plugin-home-react": "^0.1.40",
83
+ "@backstage/plugin-search-common": "^1.2.24",
84
+ "@backstage/plugin-search-react": "^1.11.6",
85
+ "@backstage/plugin-signals-react": "^0.0.24",
86
+ "@backstage/plugin-techdocs-react": "^1.3.13",
87
+ "@drodil/backstage-plugin-qeta-common": "^3.59.10",
88
+ "@drodil/backstage-plugin-qeta-react": "^3.59.10",
89
89
  "@material-ui/core": "^4.12.2",
90
90
  "@material-ui/icons": "^4.11.3",
91
91
  "@material-ui/lab": "4.0.0-alpha.61",
@@ -96,7 +96,7 @@
96
96
  "unified": "^11.0.5"
97
97
  },
98
98
  "peerDependencies": {
99
- "@backstage/catalog-client": "^1.15.0",
99
+ "@backstage/catalog-client": "^1.16.1",
100
100
  "react": " ^18.0.0 || ^19.0.0",
101
101
  "react-dom": "^18.0.0 || ^19.0.0",
102
102
  "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
@@ -105,17 +105,17 @@
105
105
  "react-markdown": "8.0.7"
106
106
  },
107
107
  "devDependencies": {
108
- "@backstage/cli": "^0.36.1",
109
- "@backstage/frontend-defaults": "^0.5.1",
110
- "@backstage/plugin-catalog": "^2.0.4",
111
- "@backstage/plugin-home": "^0.9.5",
112
- "@backstage/plugin-notifications": "^0.5.16",
113
- "@backstage/plugin-search": "^1.7.3",
114
- "@backstage/plugin-search-react": "^1.11.3",
115
- "@backstage/plugin-signals": "^0.0.30",
116
- "@backstage/plugin-techdocs": "^1.17.5",
117
- "@backstage/plugin-user-settings": "^0.9.2",
118
- "@backstage/ui": "^0.14.3",
108
+ "@backstage/cli": "^0.36.4",
109
+ "@backstage/frontend-defaults": "^0.5.4",
110
+ "@backstage/plugin-catalog": "^2.0.7",
111
+ "@backstage/plugin-home": "^0.9.8",
112
+ "@backstage/plugin-notifications": "^0.5.19",
113
+ "@backstage/plugin-search": "^1.7.6",
114
+ "@backstage/plugin-search-react": "^1.11.6",
115
+ "@backstage/plugin-signals": "^0.0.33",
116
+ "@backstage/plugin-techdocs": "^1.17.8",
117
+ "@backstage/plugin-user-settings": "^0.9.5",
118
+ "@backstage/ui": "^0.17.0",
119
119
  "@testing-library/jest-dom": "^6.1.3",
120
120
  "@types/lodash": "^4.14.199",
121
121
  "@types/luxon": "^3",
@@ -124,8 +124,8 @@
124
124
  },
125
125
  "files": [
126
126
  "dist",
127
- "configSchema.d.ts"
127
+ "config.schema.json"
128
128
  ],
129
- "configSchema": "configSchema.d.ts",
129
+ "configSchema": "config.schema.json",
130
130
  "module": "./dist/index.esm.js"
131
131
  }
package/configSchema.d.ts DELETED
@@ -1,147 +0,0 @@
1
- export interface Config {
2
- qeta?: {
3
- /**
4
- * Allow anonymous questions
5
- *
6
- * @visibility frontend
7
- */
8
- allowAnonymous?: boolean;
9
- /**
10
- * @visibility frontend
11
- */
12
- permissions?: boolean;
13
- /**
14
- * Determine what kind of entities can be attached to questions.
15
- * For example [System, Component, API, Location, Template]. Default is [Component, System].
16
- *
17
- * @visibility frontend
18
- * @deprecated use `entities` config instead
19
- */
20
- entityKinds?: string[];
21
- /**
22
- * Entities configuration for posts.
23
- *
24
- * @visibility frontend
25
- */
26
- entities?: {
27
- /**
28
- * Determine what kind of entities can be attached to posts.
29
- * For example [System, Component, API, Location, Template]. Default is [Component, System].
30
- *
31
- * @visibility frontend
32
- */
33
- kinds?: string[];
34
- /**
35
- * Maximum entities to attach to posts.
36
- *
37
- * @visibility frontend
38
- */
39
- max?: number;
40
- /**
41
- * Minimum entities required to attach to post.
42
- *
43
- * @visibility frontend
44
- */
45
- min?: number;
46
- };
47
- /**
48
- * Posts tags specific configuration
49
- *
50
- * @visibility frontend
51
- */
52
- tags?: {
53
- /**
54
- * Allow creation of new tags. Default: true
55
- *
56
- * @visibility frontend
57
- */
58
- allowCreation?: boolean;
59
- /**
60
- * Allowed tags to be used with posts.
61
- * Only valid if allowCreation is false.
62
- *
63
- * @visibility frontend
64
- */
65
- allowedTags?: string[];
66
- /**
67
- * Maximum number of tags per post. Default: 5
68
- *
69
- * @visibility frontend
70
- */
71
- max?: number;
72
- /**
73
- * Minimum number of tags required per post.
74
- *
75
- * @visibility frontend
76
- */
77
- min?: number;
78
- };
79
- /**
80
- * Posts mentions specific configuration
81
- *
82
- * @visibility frontend
83
- */
84
- mentions?: {
85
- /**
86
- * List of types of mentions that can be used in posts.
87
- *
88
- * Currently supported types are:
89
- * - `user`: Mention a user
90
- * - `group`: Mention a group
91
- *
92
- * @visibility frontend
93
- */
94
- supportedKinds?: string[];
95
- };
96
- /**
97
- * List of users/groups that can moderate questions and answers in case permission framework is not in use.
98
- * In case permission framework is in use, this list is used to determine if user
99
- * can access the moderator panel
100
- *
101
- * @visibility frontend
102
- */
103
- moderators?: string[];
104
- /**
105
- * If desire to disable image upload.
106
- * @visibility frontend
107
- */
108
- storage?: {
109
- /**
110
- * If desire to disable image upload.
111
- * @visibility frontend
112
- */
113
- disabled?: boolean;
114
- /**
115
- * Allowed mime types for images.
116
- * @visibility frontend
117
- */
118
- allowedMimeTypes?: string[];
119
- };
120
- /**
121
- * Name of the AI bot that responds to users questions. Defaults to 'AI'
122
- * @visibility frontend
123
- */
124
- aiBotName?: string;
125
- /**
126
- * Post history / revision tracking configuration
127
- *
128
- * @visibility frontend
129
- */
130
- history?: {
131
- /**
132
- * Enable or disable revision tracking. Default: false
133
- *
134
- * @visibility frontend
135
- */
136
- enabled?: boolean;
137
- /**
138
- * Content types that should have revision tracking enabled.
139
- * Possible values: 'article', 'question', 'link'
140
- * Default: ['article']
141
- *
142
- * @visibility frontend
143
- */
144
- enabledContent?: string[];
145
- };
146
- };
147
- }