@drodil/backstage-plugin-qeta 3.58.4 → 3.58.6

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/dist/alpha.d.ts CHANGED
@@ -1,56 +1,37 @@
1
1
  import * as _backstage_plugin_search_react_alpha from '@backstage/plugin-search-react/alpha';
2
- import * as _backstage_plugin_catalog_react_alpha from '@backstage/plugin-catalog-react/alpha';
2
+ import * as react from 'react';
3
+ import * as _backstage_filter_predicates from '@backstage/filter-predicates';
3
4
  import * as _backstage_plugin_techdocs_react from '@backstage/plugin-techdocs-react';
4
5
  import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
5
- import * as react from 'react';
6
6
  import { Entity } from '@backstage/catalog-model';
7
7
  import { Pluggable } from 'unified';
8
8
  export { qetaTranslationRef } from '@drodil/backstage-plugin-qeta-react';
9
+ export { QetaMarkdownRehypePluginBlueprint, QetaMarkdownRemarkPluginBlueprint, QetaPageHeaderElementBlueprint, QetaPageIntroElementBlueprint } from '@drodil/backstage-plugin-qeta-react/alpha';
9
10
 
10
- declare const QetaPageIntroElementBlueprint: _backstage_frontend_plugin_api.ExtensionBlueprint<{
11
- kind: "intro-element";
12
- params: {
13
- element: JSX.Element;
14
- };
15
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}>;
16
- inputs: {};
17
- config: {};
18
- configInput: {};
19
- dataRefs: never;
20
- }>;
21
- declare const QetaPageHeaderElementBlueprint: _backstage_frontend_plugin_api.ExtensionBlueprint<{
22
- kind: "header-element";
23
- params: {
24
- element: JSX.Element;
25
- };
26
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}>;
27
- inputs: {};
11
+ interface QetaMarkdownPluginsApi {
12
+ getRehypePlugins(): Pluggable[];
13
+ getRemarkPlugins(): Pluggable[];
14
+ }
15
+ declare const qetaMarkdownPluginsApiRef: _backstage_frontend_plugin_api.ApiRef<QetaMarkdownPluginsApi>;
16
+ declare const qetaMarkdownPluginsApiExtension: _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
28
17
  config: {};
29
18
  configInput: {};
30
- dataRefs: never;
31
- }>;
32
- declare const markdownPlugin: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<Pluggable, "qeta.markdown-plugin", {}>;
33
- declare const QetaMarkdownRehypePluginBlueprint: _backstage_frontend_plugin_api.ExtensionBlueprint<{
34
- kind: "markdown-plugin";
35
- params: {
36
- plugin: Pluggable;
37
- };
38
- output: _backstage_frontend_plugin_api.ExtensionDataRef<Pluggable, "qeta.markdown-plugin", {}>;
39
- inputs: {};
40
- config: {};
41
- configInput: {};
42
- dataRefs: never;
43
- }>;
44
- declare const QetaMarkdownRemarkPluginBlueprint: _backstage_frontend_plugin_api.ExtensionBlueprint<{
45
- kind: "markdown-plugin";
46
- params: {
47
- plugin: Pluggable;
19
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.AnyApiFactory, "core.api.factory", {}>;
20
+ inputs: {
21
+ rehypePlugins: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<Pluggable, "qeta.markdown-plugin", {}>, {
22
+ singleton: false;
23
+ optional: false;
24
+ internal: false;
25
+ }>;
26
+ remarkPlugins: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<Pluggable, "qeta.markdown-plugin", {}>, {
27
+ singleton: false;
28
+ optional: false;
29
+ internal: false;
30
+ }>;
48
31
  };
49
- output: _backstage_frontend_plugin_api.ExtensionDataRef<Pluggable, "qeta.markdown-plugin", {}>;
50
- inputs: {};
51
- config: {};
52
- configInput: {};
53
- dataRefs: never;
32
+ kind: "api";
33
+ name: "addons";
34
+ params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
54
35
  }>;
55
36
  /**
56
37
  * Backstage frontend plugin.
@@ -78,6 +59,26 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
78
59
  inputs: {};
79
60
  params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
80
61
  }>;
62
+ "api:qeta/addons": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
63
+ config: {};
64
+ configInput: {};
65
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.AnyApiFactory, "core.api.factory", {}>;
66
+ inputs: {
67
+ rehypePlugins: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<Pluggable, "qeta.markdown-plugin", {}>, {
68
+ singleton: false;
69
+ optional: false;
70
+ internal: false;
71
+ }>;
72
+ remarkPlugins: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<Pluggable, "qeta.markdown-plugin", {}>, {
73
+ singleton: false;
74
+ optional: false;
75
+ internal: false;
76
+ }>;
77
+ };
78
+ kind: "api";
79
+ name: "addons";
80
+ params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
81
+ }>;
81
82
  "entity-content:qeta/entity-posts-content": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
82
83
  config: {
83
84
  showFilters: boolean | undefined;
@@ -92,8 +93,9 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
92
93
  relations: string[] | undefined;
93
94
  path: string | undefined;
94
95
  title: string | undefined;
95
- filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
96
+ filter: _backstage_filter_predicates.FilterPredicate | undefined;
96
97
  group: string | false | undefined;
98
+ icon: string | undefined;
97
99
  };
98
100
  configInput: {
99
101
  type?: "question" | "article" | "link" | undefined;
@@ -106,10 +108,11 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
106
108
  showLinkButton?: boolean | undefined;
107
109
  showNoQuestionsBtn?: boolean | undefined;
108
110
  initialPageSize?: number | undefined;
109
- filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
111
+ filter?: _backstage_filter_predicates.FilterPredicate | undefined;
110
112
  title?: string | undefined | undefined;
111
113
  path?: string | undefined | undefined;
112
114
  group?: string | false | undefined | undefined;
115
+ icon?: string | undefined | undefined;
113
116
  };
114
117
  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", {
115
118
  optional: true;
@@ -119,17 +122,10 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
119
122
  optional: true;
120
123
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-group", {
121
124
  optional: true;
125
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string | react.ReactElement<any, string | react.JSXElementConstructor<any>>, "catalog.entity-content-icon", {
126
+ optional: true;
122
127
  }>;
123
- inputs: {
124
- rehypePlugins: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<Pluggable, "qeta.markdown-plugin", {}>, {
125
- singleton: false;
126
- optional: true;
127
- }>;
128
- remarkPlugins: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<Pluggable, "qeta.markdown-plugin", {}>, {
129
- singleton: false;
130
- optional: true;
131
- }>;
132
- };
128
+ inputs: {};
133
129
  kind: "entity-content";
134
130
  name: "entity-posts-content";
135
131
  params: {
@@ -139,9 +135,10 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
139
135
  title: string;
140
136
  defaultGroup?: [Error: `Use the 'group' param instead`];
141
137
  group?: ("overview" | "documentation" | "development" | "deployment" | "operation" | "observability") | (string & {});
138
+ icon?: string | react.ReactElement;
142
139
  loader: () => Promise<JSX.Element>;
143
140
  routeRef?: _backstage_frontend_plugin_api.RouteRef;
144
- filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: Entity) => boolean);
141
+ filter?: string | _backstage_filter_predicates.FilterPredicate | ((entity: Entity) => boolean);
145
142
  };
146
143
  }>;
147
144
  "nav-item:qeta": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
@@ -169,6 +166,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
169
166
  headerType: string | undefined;
170
167
  headerTypeLink: string | undefined;
171
168
  path: string | undefined;
169
+ title: string | undefined;
172
170
  };
173
171
  configInput: {
174
172
  subtitle?: string | undefined;
@@ -176,27 +174,37 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
176
174
  headerTooltip?: string | undefined;
177
175
  headerType?: string | undefined;
178
176
  headerTypeLink?: string | undefined;
177
+ title?: string | undefined | undefined;
179
178
  path?: string | undefined | undefined;
180
179
  };
181
180
  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", {
182
181
  optional: true;
182
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.title", {
183
+ optional: true;
184
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
185
+ optional: true;
183
186
  }>;
184
187
  inputs: {
185
- introElement: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}>, {
186
- singleton: true;
188
+ pages: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
187
189
  optional: true;
188
- }>;
189
- headerElements: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}>, {
190
- singleton: false;
190
+ }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.title", {
191
191
  optional: true;
192
- }>;
193
- rehypePlugins: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<Pluggable, "qeta.markdown-plugin", {}>, {
192
+ }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
193
+ optional: true;
194
+ }>, {
194
195
  singleton: false;
196
+ optional: false;
197
+ internal: false;
198
+ }>;
199
+ introElement: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}>, {
200
+ singleton: true;
195
201
  optional: true;
202
+ internal: false;
196
203
  }>;
197
- remarkPlugins: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<Pluggable, "qeta.markdown-plugin", {}>, {
204
+ headerElements: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}>, {
198
205
  singleton: false;
199
206
  optional: true;
207
+ internal: false;
200
208
  }>;
201
209
  };
202
210
  kind: "page";
@@ -204,8 +212,11 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
204
212
  params: {
205
213
  defaultPath?: [Error: `Use the 'path' param instead`];
206
214
  path: string;
207
- loader: () => Promise<JSX.Element>;
215
+ title?: string;
216
+ icon?: _backstage_frontend_plugin_api.IconElement;
217
+ loader?: () => Promise<react.JSX.Element>;
208
218
  routeRef?: _backstage_frontend_plugin_api.RouteRef;
219
+ noHeader?: boolean;
209
220
  };
210
221
  }>;
211
222
  "search-filter-result-type:qeta/qeta": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
@@ -240,4 +251,4 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
240
251
  }>;
241
252
  }>;
242
253
 
243
- export { QetaMarkdownRehypePluginBlueprint, QetaMarkdownRemarkPluginBlueprint, QetaPageHeaderElementBlueprint, QetaPageIntroElementBlueprint, _default as default, markdownPlugin };
254
+ export { _default as default, qetaMarkdownPluginsApiExtension, qetaMarkdownPluginsApiRef };
package/dist/alpha.esm.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { ApiBlueprint, createExtensionBlueprint, coreExtensionData, createExtensionDataRef, PageBlueprint, createExtensionInput, NavItemBlueprint, createFrontendPlugin } from '@backstage/frontend-plugin-api';
2
+ import { ApiBlueprint, createExtensionInput, PageBlueprint, coreExtensionData, NavItemBlueprint, createFrontendPlugin } from '@backstage/frontend-plugin-api';
3
3
  import { convertLegacyRouteRef, compatWrapper, 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';
6
- import { discoveryApiRef, fetchApiRef, configApiRef } from '@backstage/core-plugin-api';
6
+ import { createApiRef, discoveryApiRef, fetchApiRef, configApiRef } from '@backstage/core-plugin-api';
7
7
  import { QetaClient, getSupportedEntityKinds } from '@drodil/backstage-plugin-qeta-common';
8
8
  import ContactSupportIcon from '@material-ui/icons/ContactSupport';
9
9
  import { EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';
@@ -11,7 +11,37 @@ import { SearchResultListItemBlueprint, SearchFilterResultTypeBlueprint } from '
11
11
  import { TechDocsAddonLocations } from '@backstage/plugin-techdocs-react';
12
12
  import { AddonBlueprint } from '@backstage/plugin-techdocs-react/alpha';
13
13
  import { TechDocsAskQuestionAddon } from './components/TechDocsAskQuestionAddon/TechDocsAskQuestionAddon.esm.js';
14
+ import { markdownPlugin } from '@drodil/backstage-plugin-qeta-react/alpha';
15
+ export { QetaMarkdownRehypePluginBlueprint, QetaMarkdownRemarkPluginBlueprint, QetaPageHeaderElementBlueprint, QetaPageIntroElementBlueprint } from '@drodil/backstage-plugin-qeta-react/alpha';
14
16
 
17
+ const qetaMarkdownPluginsApiRef = createApiRef({
18
+ id: "plugin.qeta.addons"
19
+ });
20
+ const qetaMarkdownPluginsApiExtension = ApiBlueprint.makeWithOverrides({
21
+ name: "addons",
22
+ inputs: {
23
+ rehypePlugins: createExtensionInput([markdownPlugin]),
24
+ remarkPlugins: createExtensionInput([markdownPlugin])
25
+ },
26
+ factory(originalFactory, { inputs }) {
27
+ const rehypePlugins = inputs.rehypePlugins.map(
28
+ (output) => output.get(markdownPlugin)
29
+ );
30
+ const remarkPlugins = inputs.remarkPlugins.map(
31
+ (output) => output.get(markdownPlugin)
32
+ );
33
+ return originalFactory(
34
+ (defineParams) => defineParams({
35
+ api: qetaMarkdownPluginsApiRef,
36
+ deps: {},
37
+ factory: () => ({
38
+ getRehypePlugins: () => rehypePlugins,
39
+ getRemarkPlugins: () => remarkPlugins
40
+ })
41
+ })
42
+ );
43
+ }
44
+ });
15
45
  const qetaApi = ApiBlueprint.make({
16
46
  params: (defineParams) => defineParams({
17
47
  api: qetaApiRef,
@@ -24,47 +54,6 @@ const qetaApi = ApiBlueprint.make({
24
54
  }
25
55
  })
26
56
  });
27
- const QetaPageIntroElementBlueprint = createExtensionBlueprint({
28
- kind: "intro-element",
29
- attachTo: { id: "page:qeta", input: "introElement" },
30
- output: [coreExtensionData.reactElement],
31
- factory(params) {
32
- return [coreExtensionData.reactElement(params.element)];
33
- }
34
- });
35
- const QetaPageHeaderElementBlueprint = createExtensionBlueprint({
36
- kind: "header-element",
37
- attachTo: { id: "page:qeta", input: "headerElements" },
38
- output: [coreExtensionData.reactElement],
39
- factory(params) {
40
- return [coreExtensionData.reactElement(params.element)];
41
- }
42
- });
43
- const markdownPlugin = createExtensionDataRef().with({
44
- id: "qeta.markdown-plugin"
45
- });
46
- const QetaMarkdownRehypePluginBlueprint = createExtensionBlueprint({
47
- kind: "markdown-plugin",
48
- attachTo: [
49
- { id: "page:qeta", input: "rehypePlugins" },
50
- { id: "entity-posts-content", input: "rehypePlugins" }
51
- ],
52
- output: [markdownPlugin],
53
- factory(params) {
54
- return [markdownPlugin(params.plugin)];
55
- }
56
- });
57
- const QetaMarkdownRemarkPluginBlueprint = createExtensionBlueprint({
58
- kind: "markdown-plugin",
59
- attachTo: [
60
- { id: "page:qeta", input: "remarkPlugins" },
61
- { id: "entity-posts-content", input: "remarkPlugins" }
62
- ],
63
- output: [markdownPlugin],
64
- factory(params) {
65
- return [markdownPlugin(params.plugin)];
66
- }
67
- });
68
57
  const qetaPage = PageBlueprint.makeWithOverrides({
69
58
  config: {
70
59
  schema: {
@@ -83,25 +72,18 @@ const qetaPage = PageBlueprint.makeWithOverrides({
83
72
  headerElements: createExtensionInput([coreExtensionData.reactElement], {
84
73
  singleton: false,
85
74
  optional: true
86
- }),
87
- rehypePlugins: createExtensionInput([markdownPlugin], {
88
- singleton: false,
89
- optional: true
90
- }),
91
- remarkPlugins: createExtensionInput([markdownPlugin], {
92
- singleton: false,
93
- optional: true
94
75
  })
95
76
  },
96
- factory: (originalFactory, { config, inputs }) => {
77
+ factory: (originalFactory, { config, inputs, apis }) => {
97
78
  const introElement = inputs.introElement?.get(
98
79
  coreExtensionData.reactElement
99
80
  );
100
81
  const headerElements = inputs.headerElements.map(
101
82
  (e) => e.get(coreExtensionData.reactElement)
102
83
  );
103
- const remarkPlugins = inputs.remarkPlugins.map((e) => e.get(markdownPlugin));
104
- const rehypePlugins = inputs.rehypePlugins.map((e) => e.get(markdownPlugin));
84
+ const pluginsApi = apis.get(qetaMarkdownPluginsApiRef);
85
+ const remarkPlugins = pluginsApi?.getRemarkPlugins();
86
+ const rehypePlugins = pluginsApi?.getRehypePlugins();
105
87
  return originalFactory({
106
88
  path: config.path ?? "/qeta",
107
89
  routeRef: convertLegacyRouteRef(qetaRouteRef),
@@ -138,17 +120,8 @@ const EntityPostsContent = EntityContentBlueprint.makeWithOverrides({
138
120
  relations: (z) => z.array(z.string()).optional()
139
121
  }
140
122
  },
141
- inputs: {
142
- rehypePlugins: createExtensionInput([markdownPlugin], {
143
- singleton: false,
144
- optional: true
145
- }),
146
- remarkPlugins: createExtensionInput([markdownPlugin], {
147
- singleton: false,
148
- optional: true
149
- })
150
- },
151
- factory: (originalFactory, { config, apis, inputs }) => {
123
+ inputs: {},
124
+ factory: (originalFactory, { config, apis }) => {
152
125
  return originalFactory({
153
126
  path: config.path ?? "/qeta",
154
127
  title: config.title ?? "Q&A",
@@ -159,12 +132,9 @@ const EntityPostsContent = EntityContentBlueprint.makeWithOverrides({
159
132
  return supportedKinds?.includes(entityKind);
160
133
  },
161
134
  loader: async () => {
162
- const remarkPlugins = inputs.remarkPlugins.map(
163
- (e) => e.get(markdownPlugin)
164
- );
165
- const rehypePlugins = inputs.rehypePlugins.map(
166
- (e) => e.get(markdownPlugin)
167
- );
135
+ const pluginsApi = apis.get(qetaMarkdownPluginsApiRef);
136
+ const remarkPlugins = pluginsApi?.getRemarkPlugins();
137
+ const rehypePlugins = pluginsApi?.getRehypePlugins();
168
138
  return import('./components/EntityPostsContent/EntityPostsContent.esm.js').then(
169
139
  (m) => compatWrapper(
170
140
  /* @__PURE__ */ jsx(
@@ -225,9 +195,10 @@ var alpha = createFrontendPlugin({
225
195
  qetaNavItem,
226
196
  qetaSearchResultItem,
227
197
  qetaPostSearchFilterType,
228
- techDocsAskQuestionAddon
198
+ techDocsAskQuestionAddon,
199
+ qetaMarkdownPluginsApiExtension
229
200
  ]
230
201
  });
231
202
 
232
- export { QetaMarkdownRehypePluginBlueprint, QetaMarkdownRemarkPluginBlueprint, QetaPageHeaderElementBlueprint, QetaPageIntroElementBlueprint, alpha as default, markdownPlugin };
203
+ export { alpha as default, qetaMarkdownPluginsApiExtension, qetaMarkdownPluginsApiRef };
233
204
  //# sourceMappingURL=alpha.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"alpha.esm.js","sources":["../src/alpha.tsx"],"sourcesContent":["import {\n ApiBlueprint,\n coreExtensionData,\n createExtensionBlueprint,\n createExtensionDataRef,\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 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';\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\nexport const QetaPageIntroElementBlueprint = createExtensionBlueprint({\n kind: 'intro-element',\n attachTo: { id: 'page:qeta', input: 'introElement' },\n output: [coreExtensionData.reactElement],\n factory(params: { element: JSX.Element }) {\n return [coreExtensionData.reactElement(params.element)];\n },\n});\n\nexport const QetaPageHeaderElementBlueprint = createExtensionBlueprint({\n kind: 'header-element',\n attachTo: { id: 'page:qeta', input: 'headerElements' },\n output: [coreExtensionData.reactElement],\n factory(params: { element: JSX.Element }) {\n return [coreExtensionData.reactElement(params.element)];\n },\n});\n\nexport const markdownPlugin = createExtensionDataRef<Pluggable>().with({\n id: 'qeta.markdown-plugin',\n});\n\nexport const QetaMarkdownRehypePluginBlueprint = createExtensionBlueprint({\n kind: 'markdown-plugin',\n attachTo: [\n { id: 'page:qeta', input: 'rehypePlugins' },\n { id: 'entity-posts-content', input: 'rehypePlugins' },\n ],\n output: [markdownPlugin],\n factory(params: { plugin: Pluggable }) {\n return [markdownPlugin(params.plugin)];\n },\n});\n\nexport const QetaMarkdownRemarkPluginBlueprint = createExtensionBlueprint({\n kind: 'markdown-plugin',\n attachTo: [\n { id: 'page:qeta', input: 'remarkPlugins' },\n { id: 'entity-posts-content', input: 'remarkPlugins' },\n ],\n output: [markdownPlugin],\n factory(params: { plugin: Pluggable }) {\n return [markdownPlugin(params.plugin)];\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 rehypePlugins: createExtensionInput([markdownPlugin], {\n singleton: false,\n optional: true,\n }),\n remarkPlugins: createExtensionInput([markdownPlugin], {\n singleton: false,\n optional: true,\n }),\n },\n factory: (originalFactory, { config, inputs }) => {\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 remarkPlugins = inputs.remarkPlugins.map(e => e.get(markdownPlugin));\n const rehypePlugins = inputs.rehypePlugins.map(e => e.get(markdownPlugin));\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 rehypePlugins: createExtensionInput([markdownPlugin], {\n singleton: false,\n optional: true,\n }),\n remarkPlugins: createExtensionInput([markdownPlugin], {\n singleton: false,\n optional: true,\n }),\n },\n factory: (originalFactory, { config, apis, inputs }) => {\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 remarkPlugins = inputs.remarkPlugins.map(e =>\n e.get(markdownPlugin),\n );\n const rehypePlugins = inputs.rehypePlugins.map(e =>\n e.get(markdownPlugin),\n );\n return import(\n './components/EntityPostsContent/EntityPostsContent.tsx'\n ).then(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\n/**\n * Backstage frontend plugin.\n *\n * @alpha\n */\nexport default 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 ],\n});\n\nexport { qetaTranslationRef } from '@drodil/backstage-plugin-qeta-react';\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 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';\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(\n './components/EntityPostsContent/EntityPostsContent.tsx'\n ).then(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\n/**\n * Backstage frontend plugin.\n *\n * @alpha\n */\nexport default 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 ],\n});\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.58.4";
9
+ var version = "3.58.6";
10
10
  var main = "src/index.ts";
11
11
  var types = "src/index.ts";
12
12
  var prepublishOnly = "yarn tsc && yarn build";
@@ -84,7 +84,7 @@ var dependencies = {
84
84
  unified: "^11.0.5"
85
85
  };
86
86
  var peerDependencies = {
87
- "@backstage/catalog-client": "^1.12.1",
87
+ "@backstage/catalog-client": "^1.13.0",
88
88
  react: " ^18.0.0 || ^19.0.0",
89
89
  "react-dom": "^18.0.0 || ^19.0.0",
90
90
  "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.58.4",
10
+ "version": "3.58.6",
11
11
  "main": "./dist/index.esm.js",
12
12
  "types": "./dist/index.d.ts",
13
13
  "prepublishOnly": "yarn tsc && yarn build",
@@ -74,19 +74,19 @@
74
74
  },
75
75
  "dependencies": {
76
76
  "@backstage/catalog-model": "^1.7.6",
77
- "@backstage/core-compat-api": "^0.5.6",
78
- "@backstage/core-components": "^0.18.5",
79
- "@backstage/core-plugin-api": "^1.12.1",
80
- "@backstage/frontend-plugin-api": "^0.13.3",
81
- "@backstage/plugin-catalog-react": "^1.21.5",
82
- "@backstage/plugin-home-react": "^0.1.34",
83
- "@backstage/plugin-permission-react": "^0.4.39",
84
- "@backstage/plugin-search-common": "^1.2.21",
85
- "@backstage/plugin-search-react": "^1.10.2",
86
- "@backstage/plugin-signals-react": "^0.0.18",
87
- "@backstage/plugin-techdocs-react": "^1.3.7",
88
- "@drodil/backstage-plugin-qeta-common": "^3.58.4",
89
- "@drodil/backstage-plugin-qeta-react": "^3.58.4",
77
+ "@backstage/core-compat-api": "^0.5.8",
78
+ "@backstage/core-components": "^0.18.7",
79
+ "@backstage/core-plugin-api": "^1.12.3",
80
+ "@backstage/frontend-plugin-api": "^0.14.0",
81
+ "@backstage/plugin-catalog-react": "^2.0.0",
82
+ "@backstage/plugin-home-react": "^0.1.35",
83
+ "@backstage/plugin-permission-react": "^0.4.40",
84
+ "@backstage/plugin-search-common": "^1.2.22",
85
+ "@backstage/plugin-search-react": "^1.10.3",
86
+ "@backstage/plugin-signals-react": "^0.0.19",
87
+ "@backstage/plugin-techdocs-react": "^1.3.8",
88
+ "@drodil/backstage-plugin-qeta-common": "^3.58.6",
89
+ "@drodil/backstage-plugin-qeta-react": "^3.58.6",
90
90
  "@material-ui/core": "^4.12.2",
91
91
  "@material-ui/icons": "^4.11.3",
92
92
  "@material-ui/lab": "4.0.0-alpha.61",
@@ -97,7 +97,7 @@
97
97
  "unified": "^11.0.5"
98
98
  },
99
99
  "peerDependencies": {
100
- "@backstage/catalog-client": "^1.12.1",
100
+ "@backstage/catalog-client": "^1.13.0",
101
101
  "react": " ^18.0.0 || ^19.0.0",
102
102
  "react-dom": "^18.0.0 || ^19.0.0",
103
103
  "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
@@ -106,18 +106,18 @@
106
106
  "react-markdown": "8.0.7"
107
107
  },
108
108
  "devDependencies": {
109
- "@backstage/cli": "^0.35.2",
110
- "@backstage/dev-utils": "^1.1.19",
111
- "@backstage/frontend-defaults": "^0.3.5",
112
- "@backstage/plugin-catalog": "^1.32.2",
113
- "@backstage/plugin-home": "^0.9.0",
114
- "@backstage/plugin-notifications": "^0.5.13",
115
- "@backstage/plugin-search": "^1.5.3",
116
- "@backstage/plugin-search-react": "^1.10.2",
117
- "@backstage/plugin-signals": "^0.0.27",
118
- "@backstage/plugin-techdocs": "^1.16.2",
119
- "@backstage/plugin-user-settings": "^0.8.31",
120
- "@backstage/ui": "^0.11.0",
109
+ "@backstage/cli": "^0.35.4",
110
+ "@backstage/dev-utils": "^1.1.20",
111
+ "@backstage/frontend-defaults": "^0.4.0",
112
+ "@backstage/plugin-catalog": "^1.33.0",
113
+ "@backstage/plugin-home": "^0.9.2",
114
+ "@backstage/plugin-notifications": "^0.5.14",
115
+ "@backstage/plugin-search": "^1.6.0",
116
+ "@backstage/plugin-search-react": "^1.10.3",
117
+ "@backstage/plugin-signals": "^0.0.28",
118
+ "@backstage/plugin-techdocs": "^1.17.0",
119
+ "@backstage/plugin-user-settings": "^0.9.0",
120
+ "@backstage/ui": "^0.12.0",
121
121
  "@testing-library/jest-dom": "^6.1.3",
122
122
  "@types/lodash": "^4.14.199",
123
123
  "@types/luxon": "^3",