@drodil/backstage-plugin-search-backend-module-qeta 2.10.2 → 2.10.3

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,117 @@
1
+ 'use strict';
2
+
3
+ var stream = require('stream');
4
+
5
+ class DefaultQetaCollatorFactory {
6
+ type = "qeta";
7
+ logger;
8
+ discovery;
9
+ auth;
10
+ constructor(_config, options) {
11
+ this.logger = options.logger;
12
+ this.discovery = options.discovery;
13
+ this.auth = options.auth;
14
+ }
15
+ static fromConfig(config, options) {
16
+ return new DefaultQetaCollatorFactory(config, options);
17
+ }
18
+ async getCollator() {
19
+ return stream.Readable.from(this.execute());
20
+ }
21
+ async *execute() {
22
+ this.logger.info("Executing QetaCollator");
23
+ let totalQuestions = Number.MAX_VALUE;
24
+ let indexedQuestions = 0;
25
+ const baseUrl = await this.discovery.getBaseUrl("qeta");
26
+ while (totalQuestions > indexedQuestions) {
27
+ let headers = {};
28
+ if (this.auth) {
29
+ const { token } = await this.auth.getPluginRequestToken({
30
+ onBehalfOf: await this.auth.getOwnServiceCredentials(),
31
+ targetPluginId: "qeta"
32
+ });
33
+ headers = {
34
+ Authorization: `Bearer ${token}`
35
+ };
36
+ }
37
+ const params = new URLSearchParams();
38
+ params.append("includeAnswers", "true");
39
+ params.append("includeComments", "true");
40
+ params.append("orderBy", "created");
41
+ params.append("order", "asc");
42
+ params.append("limit", "50");
43
+ params.append("offset", indexedQuestions.toString(10));
44
+ const response = await fetch(
45
+ `${baseUrl}/questions?${params.toString()}`,
46
+ {
47
+ headers
48
+ }
49
+ );
50
+ const data = await response.json();
51
+ if (!data || "errors" in data || !("questions" in data)) {
52
+ this.logger.error(
53
+ `Error while fetching questions from qeta: ${JSON.stringify(data)}`
54
+ );
55
+ return;
56
+ }
57
+ const questions = data.questions;
58
+ this.logger.info(`Indexing ${questions.length} questions`);
59
+ totalQuestions = data.total;
60
+ indexedQuestions += questions.length;
61
+ for (const question of questions) {
62
+ yield {
63
+ title: question.title,
64
+ text: question.content,
65
+ location: `/qeta/questions/${question.id}`,
66
+ docType: "qeta",
67
+ author: question.author,
68
+ score: question.score,
69
+ entityRefs: question.entities,
70
+ answerCount: question.answersCount,
71
+ views: question.views,
72
+ tags: question.tags
73
+ };
74
+ for (const answer of question.answers ?? []) {
75
+ yield {
76
+ title: `${answer.correct ? "Correct answer" : "Answer"} for question ${question.title}`,
77
+ text: answer.content,
78
+ location: `/qeta/questions/${question.id}#answer_${answer.id}`,
79
+ docType: "qeta",
80
+ entityRefs: question.entities,
81
+ author: answer.author,
82
+ score: answer.score,
83
+ tags: question.tags,
84
+ correctAnswer: answer.correct
85
+ };
86
+ for (const comment of answer.comments ?? []) {
87
+ yield {
88
+ title: `Comment for ${question.title}`,
89
+ text: comment.content,
90
+ location: `/qeta/questions/${question.id}#answer_${answer.id}`,
91
+ docType: "qeta",
92
+ author: comment.author,
93
+ score: answer.score,
94
+ tags: question.tags,
95
+ entityRefs: question.entities
96
+ };
97
+ }
98
+ }
99
+ for (const comment of question.comments ?? []) {
100
+ yield {
101
+ title: `Comment for ${question.title}`,
102
+ text: comment.content,
103
+ location: `/qeta/questions/${question.id}`,
104
+ docType: "qeta",
105
+ author: comment.author,
106
+ score: question.score,
107
+ tags: question.tags,
108
+ entityRefs: question.entities
109
+ };
110
+ }
111
+ }
112
+ }
113
+ }
114
+ }
115
+
116
+ exports.DefaultQetaCollatorFactory = DefaultQetaCollatorFactory;
117
+ //# sourceMappingURL=DefaultQetaCollatorFactory.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultQetaCollatorFactory.cjs.js","sources":["../../src/collators/DefaultQetaCollatorFactory.ts"],"sourcesContent":["import { Config } from '@backstage/config';\nimport { Readable } from 'stream';\nimport { DocumentCollatorFactory } from '@backstage/plugin-search-common';\nimport {\n QetaDocument,\n QuestionsResponseBody,\n} from '@drodil/backstage-plugin-qeta-common';\nimport {\n AuthService,\n DiscoveryService,\n LoggerService,\n} from '@backstage/backend-plugin-api';\n\nexport type QetaCollatorFactoryOptions = {\n logger: LoggerService;\n discovery: DiscoveryService;\n auth?: AuthService;\n};\n\nexport class DefaultQetaCollatorFactory implements DocumentCollatorFactory {\n public readonly type: string = 'qeta';\n private readonly logger: LoggerService;\n private readonly discovery: DiscoveryService;\n private readonly auth?: AuthService;\n\n private constructor(_config: Config, options: QetaCollatorFactoryOptions) {\n this.logger = options.logger;\n this.discovery = options.discovery;\n this.auth = options.auth;\n }\n\n static fromConfig(config: Config, options: QetaCollatorFactoryOptions) {\n return new DefaultQetaCollatorFactory(config, options);\n }\n\n async getCollator() {\n return Readable.from(this.execute());\n }\n\n async *execute(): AsyncGenerator<QetaDocument> {\n this.logger.info('Executing QetaCollator');\n let totalQuestions = Number.MAX_VALUE;\n let indexedQuestions = 0;\n const baseUrl = await this.discovery.getBaseUrl('qeta');\n\n while (totalQuestions > indexedQuestions) {\n let headers = {};\n\n if (this.auth) {\n const { token } = await this.auth.getPluginRequestToken({\n onBehalfOf: await this.auth.getOwnServiceCredentials(),\n targetPluginId: 'qeta',\n });\n headers = {\n Authorization: `Bearer ${token}`,\n };\n }\n\n const params = new URLSearchParams();\n params.append('includeAnswers', 'true');\n params.append('includeComments', 'true');\n params.append('orderBy', 'created');\n params.append('order', 'asc');\n params.append('limit', '50');\n params.append('offset', indexedQuestions.toString(10));\n const response = await fetch(\n `${baseUrl}/questions?${params.toString()}`,\n {\n headers,\n },\n );\n const data = (await response.json()) as QuestionsResponseBody;\n\n if (!data || 'errors' in data || !('questions' in data)) {\n this.logger.error(\n `Error while fetching questions from qeta: ${JSON.stringify(data)}`,\n );\n return;\n }\n\n const questions = data.questions;\n this.logger.info(`Indexing ${questions.length} questions`);\n totalQuestions = data.total;\n indexedQuestions += questions.length;\n\n for (const question of questions) {\n yield {\n title: question.title,\n text: question.content,\n location: `/qeta/questions/${question.id}`,\n docType: 'qeta',\n author: question.author,\n score: question.score,\n entityRefs: question.entities,\n answerCount: question.answersCount,\n views: question.views,\n tags: question.tags,\n };\n\n for (const answer of question.answers ?? []) {\n yield {\n title: `${\n answer.correct ? 'Correct answer' : 'Answer'\n } for question ${question.title}`,\n text: answer.content,\n location: `/qeta/questions/${question.id}#answer_${answer.id}`,\n docType: 'qeta',\n entityRefs: question.entities,\n author: answer.author,\n score: answer.score,\n tags: question.tags,\n correctAnswer: answer.correct,\n };\n\n for (const comment of answer.comments ?? []) {\n yield {\n title: `Comment for ${question.title}`,\n text: comment.content,\n location: `/qeta/questions/${question.id}#answer_${answer.id}`,\n docType: 'qeta',\n author: comment.author,\n score: answer.score,\n tags: question.tags,\n entityRefs: question.entities,\n };\n }\n }\n\n for (const comment of question.comments ?? []) {\n yield {\n title: `Comment for ${question.title}`,\n text: comment.content,\n location: `/qeta/questions/${question.id}`,\n docType: 'qeta',\n author: comment.author,\n score: question.score,\n tags: question.tags,\n entityRefs: question.entities,\n };\n }\n }\n }\n }\n}\n"],"names":["Readable"],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var backendPluginApi = require('@backstage/backend-plugin-api');
4
+ var errors = require('@backstage/errors');
5
+
6
+ const configKey = "search.collators.qeta";
7
+ const defaults = {
8
+ schedule: {
9
+ frequency: { minutes: 10 },
10
+ timeout: { minutes: 15 },
11
+ initialDelay: { seconds: 3 }
12
+ }
13
+ };
14
+ function readScheduleConfigOptions(configRoot) {
15
+ let schedule = void 0;
16
+ const config = configRoot.getOptionalConfig(configKey);
17
+ if (config) {
18
+ const scheduleConfig = config.getOptionalConfig("schedule");
19
+ if (scheduleConfig) {
20
+ try {
21
+ schedule = backendPluginApi.readSchedulerServiceTaskScheduleDefinitionFromConfig(scheduleConfig);
22
+ } catch (error) {
23
+ throw new errors.InputError(`Invalid schedule at ${configKey}, ${error}`);
24
+ }
25
+ }
26
+ }
27
+ return schedule ?? defaults.schedule;
28
+ }
29
+
30
+ exports.defaults = defaults;
31
+ exports.readScheduleConfigOptions = readScheduleConfigOptions;
32
+ //# sourceMappingURL=config.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.cjs.js","sources":["../../src/collators/config.ts"],"sourcesContent":["import { Config } from '@backstage/config';\nimport {\n readSchedulerServiceTaskScheduleDefinitionFromConfig,\n SchedulerServiceTaskScheduleDefinition,\n} from '@backstage/backend-plugin-api';\nimport { InputError } from '@backstage/errors';\n\nconst configKey = 'search.collators.qeta';\n\nexport const defaults = {\n schedule: {\n frequency: { minutes: 10 },\n timeout: { minutes: 15 },\n initialDelay: { seconds: 3 },\n },\n};\n\nexport function readScheduleConfigOptions(\n configRoot: Config,\n): SchedulerServiceTaskScheduleDefinition {\n let schedule: SchedulerServiceTaskScheduleDefinition | undefined = undefined;\n\n const config = configRoot.getOptionalConfig(configKey);\n if (config) {\n const scheduleConfig = config.getOptionalConfig('schedule');\n if (scheduleConfig) {\n try {\n schedule =\n readSchedulerServiceTaskScheduleDefinitionFromConfig(scheduleConfig);\n } catch (error) {\n throw new InputError(`Invalid schedule at ${configKey}, ${error}`);\n }\n }\n }\n\n return schedule ?? defaults.schedule;\n}\n"],"names":["readSchedulerServiceTaskScheduleDefinitionFromConfig","InputError"],"mappings":";;;;;AAOA,MAAM,SAAY,GAAA,uBAAA,CAAA;AAEX,MAAM,QAAW,GAAA;AAAA,EACtB,QAAU,EAAA;AAAA,IACR,SAAA,EAAW,EAAE,OAAA,EAAS,EAAG,EAAA;AAAA,IACzB,OAAA,EAAS,EAAE,OAAA,EAAS,EAAG,EAAA;AAAA,IACvB,YAAA,EAAc,EAAE,OAAA,EAAS,CAAE,EAAA;AAAA,GAC7B;AACF,EAAA;AAEO,SAAS,0BACd,UACwC,EAAA;AACxC,EAAA,IAAI,QAA+D,GAAA,KAAA,CAAA,CAAA;AAEnE,EAAM,MAAA,MAAA,GAAS,UAAW,CAAA,iBAAA,CAAkB,SAAS,CAAA,CAAA;AACrD,EAAA,IAAI,MAAQ,EAAA;AACV,IAAM,MAAA,cAAA,GAAiB,MAAO,CAAA,iBAAA,CAAkB,UAAU,CAAA,CAAA;AAC1D,IAAA,IAAI,cAAgB,EAAA;AAClB,MAAI,IAAA;AACF,QAAA,QAAA,GACEA,sEAAqD,cAAc,CAAA,CAAA;AAAA,eAC9D,KAAO,EAAA;AACd,QAAA,MAAM,IAAIC,iBAAW,CAAA,CAAA,oBAAA,EAAuB,SAAS,CAAA,EAAA,EAAK,KAAK,CAAE,CAAA,CAAA,CAAA;AAAA,OACnE;AAAA,KACF;AAAA,GACF;AAEA,EAAA,OAAO,YAAY,QAAS,CAAA,QAAA,CAAA;AAC9B;;;;;"}
package/dist/index.cjs.js CHANGED
@@ -2,183 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var backendPluginApi = require('@backstage/backend-plugin-api');
6
- var alpha = require('@backstage/plugin-search-backend-node/alpha');
7
- var errors = require('@backstage/errors');
8
- var stream = require('stream');
5
+ var module$1 = require('./module.cjs.js');
6
+ var DefaultQetaCollatorFactory = require('./collators/DefaultQetaCollatorFactory.cjs.js');
9
7
 
10
- const configKey = "search.collators.qeta";
11
- const defaults = {
12
- schedule: {
13
- frequency: { minutes: 10 },
14
- timeout: { minutes: 15 },
15
- initialDelay: { seconds: 3 }
16
- }
17
- };
18
- function readScheduleConfigOptions(configRoot) {
19
- let schedule = void 0;
20
- const config = configRoot.getOptionalConfig(configKey);
21
- if (config) {
22
- const scheduleConfig = config.getOptionalConfig("schedule");
23
- if (scheduleConfig) {
24
- try {
25
- schedule = backendPluginApi.readSchedulerServiceTaskScheduleDefinitionFromConfig(scheduleConfig);
26
- } catch (error) {
27
- throw new errors.InputError(`Invalid schedule at ${configKey}, ${error}`);
28
- }
29
- }
30
- }
31
- return schedule ?? defaults.schedule;
32
- }
33
8
 
34
- class DefaultQetaCollatorFactory {
35
- type = "qeta";
36
- logger;
37
- discovery;
38
- auth;
39
- constructor(_config, options) {
40
- this.logger = options.logger;
41
- this.discovery = options.discovery;
42
- this.auth = options.auth;
43
- }
44
- static fromConfig(config, options) {
45
- return new DefaultQetaCollatorFactory(config, options);
46
- }
47
- async getCollator() {
48
- return stream.Readable.from(this.execute());
49
- }
50
- async *execute() {
51
- this.logger.info("Executing QetaCollator");
52
- let totalQuestions = Number.MAX_VALUE;
53
- let indexedQuestions = 0;
54
- const baseUrl = await this.discovery.getBaseUrl("qeta");
55
- while (totalQuestions > indexedQuestions) {
56
- let headers = {};
57
- if (this.auth) {
58
- const { token } = await this.auth.getPluginRequestToken({
59
- onBehalfOf: await this.auth.getOwnServiceCredentials(),
60
- targetPluginId: "qeta"
61
- });
62
- headers = {
63
- Authorization: `Bearer ${token}`
64
- };
65
- }
66
- const params = new URLSearchParams();
67
- params.append("includeAnswers", "true");
68
- params.append("includeComments", "true");
69
- params.append("orderBy", "created");
70
- params.append("order", "asc");
71
- params.append("limit", "50");
72
- params.append("offset", indexedQuestions.toString(10));
73
- const response = await fetch(
74
- `${baseUrl}/questions?${params.toString()}`,
75
- {
76
- headers
77
- }
78
- );
79
- const data = await response.json();
80
- if (!data || "errors" in data || !("questions" in data)) {
81
- this.logger.error(
82
- `Error while fetching questions from qeta: ${JSON.stringify(data)}`
83
- );
84
- return;
85
- }
86
- const questions = data.questions;
87
- this.logger.info(`Indexing ${questions.length} questions`);
88
- totalQuestions = data.total;
89
- indexedQuestions += questions.length;
90
- for (const question of questions) {
91
- yield {
92
- title: question.title,
93
- text: question.content,
94
- location: `/qeta/questions/${question.id}`,
95
- docType: "qeta",
96
- author: question.author,
97
- score: question.score,
98
- entityRefs: question.entities,
99
- answerCount: question.answersCount,
100
- views: question.views,
101
- tags: question.tags
102
- };
103
- for (const answer of question.answers ?? []) {
104
- yield {
105
- title: `${answer.correct ? "Correct answer" : "Answer"} for question ${question.title}`,
106
- text: answer.content,
107
- location: `/qeta/questions/${question.id}#answer_${answer.id}`,
108
- docType: "qeta",
109
- entityRefs: question.entities,
110
- author: answer.author,
111
- score: answer.score,
112
- tags: question.tags,
113
- correctAnswer: answer.correct
114
- };
115
- for (const comment of answer.comments ?? []) {
116
- yield {
117
- title: `Comment for ${question.title}`,
118
- text: comment.content,
119
- location: `/qeta/questions/${question.id}#answer_${answer.id}`,
120
- docType: "qeta",
121
- author: comment.author,
122
- score: answer.score,
123
- tags: question.tags,
124
- entityRefs: question.entities
125
- };
126
- }
127
- }
128
- for (const comment of question.comments ?? []) {
129
- yield {
130
- title: `Comment for ${question.title}`,
131
- text: comment.content,
132
- location: `/qeta/questions/${question.id}`,
133
- docType: "qeta",
134
- author: comment.author,
135
- score: question.score,
136
- tags: question.tags,
137
- entityRefs: question.entities
138
- };
139
- }
140
- }
141
- }
142
- }
143
- }
144
9
 
145
- const searchModuleQetaCollator = backendPluginApi.createBackendModule({
146
- pluginId: "search",
147
- moduleId: "qeta-collator",
148
- register(reg) {
149
- reg.registerInit({
150
- deps: {
151
- config: backendPluginApi.coreServices.rootConfig,
152
- logger: backendPluginApi.coreServices.logger,
153
- discovery: backendPluginApi.coreServices.discovery,
154
- auth: backendPluginApi.coreServices.auth,
155
- scheduler: backendPluginApi.coreServices.scheduler,
156
- indexRegistry: alpha.searchIndexRegistryExtensionPoint
157
- },
158
- async init({
159
- config,
160
- logger,
161
- discovery,
162
- auth,
163
- scheduler,
164
- indexRegistry
165
- }) {
166
- indexRegistry.addCollator({
167
- schedule: scheduler.createScheduledTaskRunner(
168
- readScheduleConfigOptions(config)
169
- ),
170
- factory: DefaultQetaCollatorFactory.fromConfig(config, {
171
- discovery,
172
- auth,
173
- logger
174
- })
175
- });
176
- }
177
- });
178
- }
179
- });
180
-
181
- exports.DefaultQetaCollatorFactory = DefaultQetaCollatorFactory;
182
- exports.default = searchModuleQetaCollator;
183
- exports.searchModuleQetaCollator = searchModuleQetaCollator;
10
+ exports.default = module$1.searchModuleQetaCollator;
11
+ exports.searchModuleQetaCollator = module$1.searchModuleQetaCollator;
12
+ exports.DefaultQetaCollatorFactory = DefaultQetaCollatorFactory.DefaultQetaCollatorFactory;
184
13
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/collators/config.ts","../src/collators/DefaultQetaCollatorFactory.ts","../src/module.ts"],"sourcesContent":["import { Config } from '@backstage/config';\nimport {\n readSchedulerServiceTaskScheduleDefinitionFromConfig,\n SchedulerServiceTaskScheduleDefinition,\n} from '@backstage/backend-plugin-api';\nimport { InputError } from '@backstage/errors';\n\nconst configKey = 'search.collators.qeta';\n\nexport const defaults = {\n schedule: {\n frequency: { minutes: 10 },\n timeout: { minutes: 15 },\n initialDelay: { seconds: 3 },\n },\n};\n\nexport function readScheduleConfigOptions(\n configRoot: Config,\n): SchedulerServiceTaskScheduleDefinition {\n let schedule: SchedulerServiceTaskScheduleDefinition | undefined = undefined;\n\n const config = configRoot.getOptionalConfig(configKey);\n if (config) {\n const scheduleConfig = config.getOptionalConfig('schedule');\n if (scheduleConfig) {\n try {\n schedule =\n readSchedulerServiceTaskScheduleDefinitionFromConfig(scheduleConfig);\n } catch (error) {\n throw new InputError(`Invalid schedule at ${configKey}, ${error}`);\n }\n }\n }\n\n return schedule ?? defaults.schedule;\n}\n","import { Config } from '@backstage/config';\nimport { Readable } from 'stream';\nimport { DocumentCollatorFactory } from '@backstage/plugin-search-common';\nimport {\n QetaDocument,\n QuestionsResponseBody,\n} from '@drodil/backstage-plugin-qeta-common';\nimport {\n AuthService,\n DiscoveryService,\n LoggerService,\n} from '@backstage/backend-plugin-api';\n\nexport type QetaCollatorFactoryOptions = {\n logger: LoggerService;\n discovery: DiscoveryService;\n auth?: AuthService;\n};\n\nexport class DefaultQetaCollatorFactory implements DocumentCollatorFactory {\n public readonly type: string = 'qeta';\n private readonly logger: LoggerService;\n private readonly discovery: DiscoveryService;\n private readonly auth?: AuthService;\n\n private constructor(_config: Config, options: QetaCollatorFactoryOptions) {\n this.logger = options.logger;\n this.discovery = options.discovery;\n this.auth = options.auth;\n }\n\n static fromConfig(config: Config, options: QetaCollatorFactoryOptions) {\n return new DefaultQetaCollatorFactory(config, options);\n }\n\n async getCollator() {\n return Readable.from(this.execute());\n }\n\n async *execute(): AsyncGenerator<QetaDocument> {\n this.logger.info('Executing QetaCollator');\n let totalQuestions = Number.MAX_VALUE;\n let indexedQuestions = 0;\n const baseUrl = await this.discovery.getBaseUrl('qeta');\n\n while (totalQuestions > indexedQuestions) {\n let headers = {};\n\n if (this.auth) {\n const { token } = await this.auth.getPluginRequestToken({\n onBehalfOf: await this.auth.getOwnServiceCredentials(),\n targetPluginId: 'qeta',\n });\n headers = {\n Authorization: `Bearer ${token}`,\n };\n }\n\n const params = new URLSearchParams();\n params.append('includeAnswers', 'true');\n params.append('includeComments', 'true');\n params.append('orderBy', 'created');\n params.append('order', 'asc');\n params.append('limit', '50');\n params.append('offset', indexedQuestions.toString(10));\n const response = await fetch(\n `${baseUrl}/questions?${params.toString()}`,\n {\n headers,\n },\n );\n const data = (await response.json()) as QuestionsResponseBody;\n\n if (!data || 'errors' in data || !('questions' in data)) {\n this.logger.error(\n `Error while fetching questions from qeta: ${JSON.stringify(data)}`,\n );\n return;\n }\n\n const questions = data.questions;\n this.logger.info(`Indexing ${questions.length} questions`);\n totalQuestions = data.total;\n indexedQuestions += questions.length;\n\n for (const question of questions) {\n yield {\n title: question.title,\n text: question.content,\n location: `/qeta/questions/${question.id}`,\n docType: 'qeta',\n author: question.author,\n score: question.score,\n entityRefs: question.entities,\n answerCount: question.answersCount,\n views: question.views,\n tags: question.tags,\n };\n\n for (const answer of question.answers ?? []) {\n yield {\n title: `${\n answer.correct ? 'Correct answer' : 'Answer'\n } for question ${question.title}`,\n text: answer.content,\n location: `/qeta/questions/${question.id}#answer_${answer.id}`,\n docType: 'qeta',\n entityRefs: question.entities,\n author: answer.author,\n score: answer.score,\n tags: question.tags,\n correctAnswer: answer.correct,\n };\n\n for (const comment of answer.comments ?? []) {\n yield {\n title: `Comment for ${question.title}`,\n text: comment.content,\n location: `/qeta/questions/${question.id}#answer_${answer.id}`,\n docType: 'qeta',\n author: comment.author,\n score: answer.score,\n tags: question.tags,\n entityRefs: question.entities,\n };\n }\n }\n\n for (const comment of question.comments ?? []) {\n yield {\n title: `Comment for ${question.title}`,\n text: comment.content,\n location: `/qeta/questions/${question.id}`,\n docType: 'qeta',\n author: comment.author,\n score: question.score,\n tags: question.tags,\n entityRefs: question.entities,\n };\n }\n }\n }\n }\n}\n","import {\n coreServices,\n createBackendModule,\n} from '@backstage/backend-plugin-api';\nimport { searchIndexRegistryExtensionPoint } from '@backstage/plugin-search-backend-node/alpha';\nimport { readScheduleConfigOptions } from './collators/config';\nimport { DefaultQetaCollatorFactory } from './collators';\n\nexport const searchModuleQetaCollator = createBackendModule({\n pluginId: 'search',\n moduleId: 'qeta-collator',\n register(reg) {\n reg.registerInit({\n deps: {\n config: coreServices.rootConfig,\n logger: coreServices.logger,\n discovery: coreServices.discovery,\n auth: coreServices.auth,\n scheduler: coreServices.scheduler,\n indexRegistry: searchIndexRegistryExtensionPoint,\n },\n async init({\n config,\n logger,\n discovery,\n auth,\n scheduler,\n indexRegistry,\n }) {\n indexRegistry.addCollator({\n schedule: scheduler.createScheduledTaskRunner(\n readScheduleConfigOptions(config),\n ),\n factory: DefaultQetaCollatorFactory.fromConfig(config, {\n discovery,\n auth,\n logger,\n }),\n });\n },\n });\n },\n});\n"],"names":["readSchedulerServiceTaskScheduleDefinitionFromConfig","InputError","Readable","createBackendModule","coreServices","searchIndexRegistryExtensionPoint"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ var backendPluginApi = require('@backstage/backend-plugin-api');
4
+ var alpha = require('@backstage/plugin-search-backend-node/alpha');
5
+ var config = require('./collators/config.cjs.js');
6
+ var DefaultQetaCollatorFactory = require('./collators/DefaultQetaCollatorFactory.cjs.js');
7
+
8
+ const searchModuleQetaCollator = backendPluginApi.createBackendModule({
9
+ pluginId: "search",
10
+ moduleId: "qeta-collator",
11
+ register(reg) {
12
+ reg.registerInit({
13
+ deps: {
14
+ config: backendPluginApi.coreServices.rootConfig,
15
+ logger: backendPluginApi.coreServices.logger,
16
+ discovery: backendPluginApi.coreServices.discovery,
17
+ auth: backendPluginApi.coreServices.auth,
18
+ scheduler: backendPluginApi.coreServices.scheduler,
19
+ indexRegistry: alpha.searchIndexRegistryExtensionPoint
20
+ },
21
+ async init({
22
+ config: config$1,
23
+ logger,
24
+ discovery,
25
+ auth,
26
+ scheduler,
27
+ indexRegistry
28
+ }) {
29
+ indexRegistry.addCollator({
30
+ schedule: scheduler.createScheduledTaskRunner(
31
+ config.readScheduleConfigOptions(config$1)
32
+ ),
33
+ factory: DefaultQetaCollatorFactory.DefaultQetaCollatorFactory.fromConfig(config$1, {
34
+ discovery,
35
+ auth,
36
+ logger
37
+ })
38
+ });
39
+ }
40
+ });
41
+ }
42
+ });
43
+
44
+ exports.searchModuleQetaCollator = searchModuleQetaCollator;
45
+ //# sourceMappingURL=module.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.cjs.js","sources":["../src/module.ts"],"sourcesContent":["import {\n coreServices,\n createBackendModule,\n} from '@backstage/backend-plugin-api';\nimport { searchIndexRegistryExtensionPoint } from '@backstage/plugin-search-backend-node/alpha';\nimport { readScheduleConfigOptions } from './collators/config';\nimport { DefaultQetaCollatorFactory } from './collators';\n\nexport const searchModuleQetaCollator = createBackendModule({\n pluginId: 'search',\n moduleId: 'qeta-collator',\n register(reg) {\n reg.registerInit({\n deps: {\n config: coreServices.rootConfig,\n logger: coreServices.logger,\n discovery: coreServices.discovery,\n auth: coreServices.auth,\n scheduler: coreServices.scheduler,\n indexRegistry: searchIndexRegistryExtensionPoint,\n },\n async init({\n config,\n logger,\n discovery,\n auth,\n scheduler,\n indexRegistry,\n }) {\n indexRegistry.addCollator({\n schedule: scheduler.createScheduledTaskRunner(\n readScheduleConfigOptions(config),\n ),\n factory: DefaultQetaCollatorFactory.fromConfig(config, {\n discovery,\n auth,\n logger,\n }),\n });\n },\n });\n },\n});\n"],"names":["createBackendModule","coreServices","searchIndexRegistryExtensionPoint","config","readScheduleConfigOptions","DefaultQetaCollatorFactory"],"mappings":";;;;;;;AAQO,MAAM,2BAA2BA,oCAAoB,CAAA;AAAA,EAC1D,QAAU,EAAA,QAAA;AAAA,EACV,QAAU,EAAA,eAAA;AAAA,EACV,SAAS,GAAK,EAAA;AACZ,IAAA,GAAA,CAAI,YAAa,CAAA;AAAA,MACf,IAAM,EAAA;AAAA,QACJ,QAAQC,6BAAa,CAAA,UAAA;AAAA,QACrB,QAAQA,6BAAa,CAAA,MAAA;AAAA,QACrB,WAAWA,6BAAa,CAAA,SAAA;AAAA,QACxB,MAAMA,6BAAa,CAAA,IAAA;AAAA,QACnB,WAAWA,6BAAa,CAAA,SAAA;AAAA,QACxB,aAAe,EAAAC,uCAAA;AAAA,OACjB;AAAA,MACA,MAAM,IAAK,CAAA;AAAA,gBACTC,QAAA;AAAA,QACA,MAAA;AAAA,QACA,SAAA;AAAA,QACA,IAAA;AAAA,QACA,SAAA;AAAA,QACA,aAAA;AAAA,OACC,EAAA;AACD,QAAA,aAAA,CAAc,WAAY,CAAA;AAAA,UACxB,UAAU,SAAU,CAAA,yBAAA;AAAA,YAClBC,iCAA0BD,QAAM,CAAA;AAAA,WAClC;AAAA,UACA,OAAA,EAASE,qDAA2B,CAAA,UAAA,CAAWF,QAAQ,EAAA;AAAA,YACrD,SAAA;AAAA,YACA,IAAA;AAAA,YACA,MAAA;AAAA,WACD,CAAA;AAAA,SACF,CAAA,CAAA;AAAA,OACH;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AACF,CAAC;;;;"}
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "search",
8
8
  "backstage.io"
9
9
  ],
10
- "version": "2.10.2",
10
+ "version": "2.10.3",
11
11
  "main": "dist/index.cjs.js",
12
12
  "types": "dist/index.d.ts",
13
13
  "prepublishOnly": "yarn tsc && yarn build",
@@ -42,18 +42,18 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@backstage/backend-common": "^0.25.0",
45
- "@backstage/backend-plugin-api": "^1.0.0",
45
+ "@backstage/backend-plugin-api": "^1.0.1",
46
46
  "@backstage/backend-tasks": "^0.6.1",
47
47
  "@backstage/config": "^1.2.0",
48
- "@backstage/core-plugin-api": "^1.9.4",
48
+ "@backstage/core-plugin-api": "^1.10.0",
49
49
  "@backstage/errors": "^1.2.4",
50
- "@backstage/plugin-search-backend-node": "^1.3.2",
50
+ "@backstage/plugin-search-backend-node": "^1.3.3",
51
51
  "@backstage/plugin-search-common": "^1.2.14",
52
- "@drodil/backstage-plugin-qeta-common": "^2.10.2"
52
+ "@drodil/backstage-plugin-qeta-common": "^2.10.3"
53
53
  },
54
54
  "devDependencies": {
55
- "@backstage/backend-test-utils": "^1.0.0",
56
- "@backstage/cli": "^0.27.1",
55
+ "@backstage/backend-test-utils": "^1.0.1",
56
+ "@backstage/cli": "^0.28.0",
57
57
  "msw": "^1.2.1"
58
58
  },
59
59
  "files": [