diff --git a/plugins/search-backend-module-stack-overflow/.eslintrc.js b/plugins/search-backend-module-stack-overflow/.eslintrc.js
new file mode 100644
index 0000000000..e2a53a6ad2
--- /dev/null
+++ b/plugins/search-backend-module-stack-overflow/.eslintrc.js
@@ -0,0 +1 @@
+module.exports = require('@backstage/cli/config/eslint-factory')(__dirname);
diff --git a/plugins/search-backend-module-stack-overflow/README.md b/plugins/search-backend-module-stack-overflow/README.md
new file mode 100644
index 0000000000..cba9617ea8
--- /dev/null
+++ b/plugins/search-backend-module-stack-overflow/README.md
@@ -0,0 +1,30 @@
+# search-backend-module-stack-overflow
+
+> DISCLAIMER: The new backend system is in alpha, and so are the search backend module support for the new backend system. We don't recommend you to migrate your backend installations to the new system yet. But if you want to experiment, you can find getting started guides below.
+
+This package exports a module that extends the search backend to also indexing the questions exposed by the [`Stack Overflow` API](https://api.stackexchange.com/docs/questions).
+
+## Installation
+
+Add the module package as a dependency:
+
+```bash
+# From your Backstage root directory
+yarn add --cwd packages/backend @backstage/plugin-search-backend-module-stack-overflow
+```
+
+Add the collator to your backend instance, along with the search plugin itself:
+
+```tsx
+// packages/backend/src/index.ts
+import { createBackend } from '@backstage/backend-defaults';
+
+const backend = createBackend();
+backend.add(import('@backstage/plugin-search-backend/alpha'));
+backend.add(
+ import('@backstage/plugin-search-backend-module-stack-overflow/alpha'),
+);
+backend.start();
+```
+
+You may also want to add configuration parameters to your app-config, for example for controlling the scheduled indexing interval. These parameters should be placed under the `stackoverflow` key. See [the config definition file](https://github.com/backstage/backstage/blob/master/plugins/search-backend-module-stack-overflow/config.d.ts) for more details.
diff --git a/plugins/stack-overflow-backend/alpha-api-report.md b/plugins/search-backend-module-stack-overflow/alpha-api-report.md
similarity index 75%
rename from plugins/stack-overflow-backend/alpha-api-report.md
rename to plugins/search-backend-module-stack-overflow/alpha-api-report.md
index 93d4cfe5e5..9d25cb0a7d 100644
--- a/plugins/stack-overflow-backend/alpha-api-report.md
+++ b/plugins/search-backend-module-stack-overflow/alpha-api-report.md
@@ -1,4 +1,4 @@
-## API Report File for "@backstage/plugin-stack-overflow-backend"
+## API Report File for "@backstage/plugin-search-backend-module-stack-overflow"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
diff --git a/plugins/search-backend-module-stack-overflow/api-report.md b/plugins/search-backend-module-stack-overflow/api-report.md
new file mode 100644
index 0000000000..795b30cac2
--- /dev/null
+++ b/plugins/search-backend-module-stack-overflow/api-report.md
@@ -0,0 +1,56 @@
+## API Report File for "@backstage/plugin-search-backend-module-stack-overflow"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+///
+
+import { Config } from '@backstage/config';
+import { DocumentCollatorFactory } from '@backstage/plugin-search-common';
+import { IndexableDocument } from '@backstage/plugin-search-common';
+import { Logger } from 'winston';
+import { Readable } from 'stream';
+
+// @public
+export interface StackOverflowDocument extends IndexableDocument {
+ // (undocumented)
+ answers: number;
+ // (undocumented)
+ tags: string[];
+}
+
+// @public
+export class StackOverflowQuestionsCollatorFactory
+ implements DocumentCollatorFactory
+{
+ // (undocumented)
+ execute(): AsyncGenerator;
+ // (undocumented)
+ static fromConfig(
+ config: Config,
+ options: StackOverflowQuestionsCollatorFactoryOptions,
+ ): StackOverflowQuestionsCollatorFactory;
+ // (undocumented)
+ getCollator(): Promise;
+ // (undocumented)
+ protected requestParams: StackOverflowQuestionsRequestParams;
+ // (undocumented)
+ readonly type: string;
+}
+
+// @public
+export type StackOverflowQuestionsCollatorFactoryOptions = {
+ baseUrl?: string;
+ maxPage?: number;
+ apiKey?: string;
+ apiAccessToken?: string;
+ teamName?: string;
+ requestParams?: StackOverflowQuestionsRequestParams;
+ logger: Logger;
+};
+
+// @public
+export type StackOverflowQuestionsRequestParams = {
+ [key: string]: string | string[] | number;
+};
+```
diff --git a/plugins/search-backend-module-stack-overflow/catalog-info.yaml b/plugins/search-backend-module-stack-overflow/catalog-info.yaml
new file mode 100644
index 0000000000..9075d1d591
--- /dev/null
+++ b/plugins/search-backend-module-stack-overflow/catalog-info.yaml
@@ -0,0 +1,10 @@
+apiVersion: backstage.io/v1alpha1
+kind: Component
+metadata:
+ name: backstage-plugin-search-backend-module-stack-overflow
+ title: '@backstage/plugin-search-backend-module-stack-overflow'
+ description: A module for the search backend that exports stack overflow modules
+spec:
+ lifecycle: experimental
+ type: backstage-backend-plugin-module
+ owner: discoverability-maintainers
diff --git a/plugins/search-backend-module-stack-overflow/config.d.ts b/plugins/search-backend-module-stack-overflow/config.d.ts
new file mode 100644
index 0000000000..d615179ed0
--- /dev/null
+++ b/plugins/search-backend-module-stack-overflow/config.d.ts
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2023 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export interface Config {
+ /**
+ * Configuration options for the stack overflow plugin
+ */
+ stackoverflow?: {
+ /**
+ * The base url of the Stack Overflow API used for the plugin
+ */
+ baseUrl?: string;
+
+ /**
+ * The API key to authenticate to Stack Overflow API
+ * @visibility secret
+ */
+ apiKey?: string;
+
+ /**
+ * The name of the team for a Stack Overflow for Teams account
+ */
+ teamName?: string;
+
+ /**
+ * The API Access Token to authenticate to Stack Overflow API
+ * @visibility secret
+ */
+ apiAccessToken?: string;
+
+ /**
+ * Type representing the request parameters.
+ */
+ requestParams?: {
+ [key: string]: string | string[] | number;
+ };
+ };
+}
diff --git a/plugins/search-backend-module-stack-overflow/package.json b/plugins/search-backend-module-stack-overflow/package.json
new file mode 100644
index 0000000000..64ff4d32d3
--- /dev/null
+++ b/plugins/search-backend-module-stack-overflow/package.json
@@ -0,0 +1,65 @@
+{
+ "name": "@backstage/plugin-search-backend-module-stack-overflow",
+ "description": "A module for the search backend that exports stack overflow modules",
+ "version": "0.0.0",
+ "main": "src/index.ts",
+ "types": "src/index.ts",
+ "license": "Apache-2.0",
+ "publishConfig": {
+ "access": "public"
+ },
+ "exports": {
+ ".": "./src/index.ts",
+ "./alpha": "./src/alpha.ts",
+ "./package.json": "./package.json"
+ },
+ "typesVersions": {
+ "*": {
+ "alpha": [
+ "src/alpha.ts"
+ ],
+ "package.json": [
+ "package.json"
+ ]
+ }
+ },
+ "backstage": {
+ "role": "backend-plugin-module"
+ },
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/search-backend-module-stack-overflow"
+ },
+ "scripts": {
+ "start": "backstage-cli package start",
+ "build": "backstage-cli package build",
+ "lint": "backstage-cli package lint",
+ "test": "backstage-cli package test",
+ "prepack": "backstage-cli package prepack",
+ "postpack": "backstage-cli package postpack",
+ "clean": "backstage-cli package clean"
+ },
+ "dependencies": {
+ "@backstage/backend-common": "workspace:^",
+ "@backstage/backend-plugin-api": "workspace:^",
+ "@backstage/backend-tasks": "workspace:^",
+ "@backstage/config": "workspace:^",
+ "@backstage/plugin-search-backend-node": "workspace:^",
+ "@backstage/plugin-search-common": "workspace:^",
+ "node-fetch": "^2.6.7",
+ "qs": "^6.9.4",
+ "winston": "^3.2.1"
+ },
+ "devDependencies": {
+ "@backstage/backend-test-utils": "workspace:^",
+ "@backstage/cli": "workspace:^",
+ "msw": "^1.2.1"
+ },
+ "files": [
+ "dist",
+ "config.d.ts"
+ ],
+ "configSchema": "config.d.ts"
+}
diff --git a/plugins/search-backend-module-stack-overflow/src/alpha.test.ts b/plugins/search-backend-module-stack-overflow/src/alpha.test.ts
new file mode 100644
index 0000000000..1dba1ab8c0
--- /dev/null
+++ b/plugins/search-backend-module-stack-overflow/src/alpha.test.ts
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2023 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
+import { searchIndexRegistryExtensionPoint } from '@backstage/plugin-search-backend-node/alpha';
+import searchModuleStackOverflowCollator from './alpha';
+
+describe('searchModuleStackOverflowCollator', () => {
+ const schedule = {
+ frequency: { minutes: 10 },
+ timeout: { minutes: 15 },
+ initialDelay: { seconds: 3 },
+ };
+
+ it('should register the stack overflow collator to the search index registry extension point with factory and schedule', async () => {
+ const extensionPointMock = {
+ addCollator: jest.fn(),
+ };
+
+ await startTestBackend({
+ extensionPoints: [
+ [searchIndexRegistryExtensionPoint, extensionPointMock],
+ ],
+ features: [
+ searchModuleStackOverflowCollator(),
+ mockServices.rootConfig.factory({
+ data: {
+ stackoverflow: {
+ schedule,
+ },
+ },
+ }),
+ ],
+ });
+
+ expect(extensionPointMock.addCollator).toHaveBeenCalledTimes(1);
+ expect(extensionPointMock.addCollator).toHaveBeenCalledWith({
+ factory: expect.objectContaining({ type: 'stack-overflow' }),
+ schedule: expect.objectContaining({ run: expect.any(Function) }),
+ });
+ });
+});
diff --git a/plugins/stack-overflow-backend/src/alpha.ts b/plugins/search-backend-module-stack-overflow/src/alpha.ts
similarity index 90%
rename from plugins/stack-overflow-backend/src/alpha.ts
rename to plugins/search-backend-module-stack-overflow/src/alpha.ts
index 897cbd1ea2..85b686c9ed 100644
--- a/plugins/stack-overflow-backend/src/alpha.ts
+++ b/plugins/search-backend-module-stack-overflow/src/alpha.ts
@@ -21,7 +21,7 @@ import {
createBackendModule,
} from '@backstage/backend-plugin-api';
import { searchIndexRegistryExtensionPoint } from '@backstage/plugin-search-backend-node/alpha';
-import { StackOverflowQuestionsCollatorFactory } from './search';
+import { StackOverflowQuestionsCollatorFactory } from './collators';
/**
* @packageDocumentation
@@ -52,9 +52,9 @@ export default createBackendModule({
initialDelay: { seconds: 3 },
};
- const schedule = config.has('search.collators.stackoverflow.schedule')
+ const schedule = config.has('stackoverflow.schedule')
? readTaskScheduleDefinitionFromConfig(
- config.getConfig('search.collators.stackoverflow.schedule'),
+ config.getConfig('stackoverflow.schedule'),
)
: defaultSchedule;
diff --git a/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.test.ts b/plugins/search-backend-module-stack-overflow/src/collators/StackOverflowQuestionsCollatorFactory.test.ts
similarity index 100%
rename from plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.test.ts
rename to plugins/search-backend-module-stack-overflow/src/collators/StackOverflowQuestionsCollatorFactory.test.ts
diff --git a/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts b/plugins/search-backend-module-stack-overflow/src/collators/StackOverflowQuestionsCollatorFactory.ts
similarity index 100%
rename from plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts
rename to plugins/search-backend-module-stack-overflow/src/collators/StackOverflowQuestionsCollatorFactory.ts
diff --git a/plugins/search-backend-module-stack-overflow/src/collators/index.ts b/plugins/search-backend-module-stack-overflow/src/collators/index.ts
new file mode 100644
index 0000000000..1170b52423
--- /dev/null
+++ b/plugins/search-backend-module-stack-overflow/src/collators/index.ts
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2022 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export {
+ type StackOverflowDocument,
+ type StackOverflowQuestionsRequestParams,
+ type StackOverflowQuestionsCollatorFactoryOptions,
+ StackOverflowQuestionsCollatorFactory,
+} from './StackOverflowQuestionsCollatorFactory';
diff --git a/plugins/stack-overflow-backend/src/search/index.ts b/plugins/search-backend-module-stack-overflow/src/index.ts
similarity index 76%
rename from plugins/stack-overflow-backend/src/search/index.ts
rename to plugins/search-backend-module-stack-overflow/src/index.ts
index ed3e05cb28..eb1f7540de 100644
--- a/plugins/stack-overflow-backend/src/search/index.ts
+++ b/plugins/search-backend-module-stack-overflow/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 The Backstage Authors
+ * Copyright 2023 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,4 +14,9 @@
* limitations under the License.
*/
-export * from './StackOverflowQuestionsCollatorFactory';
+/**
+ * @packageDocumentation
+ * A module for the search backend that exports Stack Overflow modules.
+ */
+
+export * from './collators';
diff --git a/plugins/stack-overflow-backend/api-report.md b/plugins/stack-overflow-backend/api-report.md
index e8fd710cf6..d113f7a0b6 100644
--- a/plugins/stack-overflow-backend/api-report.md
+++ b/plugins/stack-overflow-backend/api-report.md
@@ -3,54 +3,21 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
-///
+import { StackOverflowDocument as StackOverflowDocument_2 } from '@backstage/plugin-search-backend-module-stack-overflow';
+import { StackOverflowQuestionsCollatorFactory as StackOverflowQuestionsCollatorFactory_2 } from '@backstage/plugin-search-backend-module-stack-overflow';
+import { StackOverflowQuestionsRequestParams as StackOverflowQuestionsRequestParams_2 } from '@backstage/plugin-search-backend-module-stack-overflow';
-import { Config } from '@backstage/config';
-import { DocumentCollatorFactory } from '@backstage/plugin-search-common';
-import { IndexableDocument } from '@backstage/plugin-search-common';
-import { Logger } from 'winston';
-import { Readable } from 'stream';
+// @public @deprecated (undocumented)
+export type StackOverflowDocument = StackOverflowDocument_2;
-// @public
-export interface StackOverflowDocument extends IndexableDocument {
- // (undocumented)
- answers: number;
- // (undocumented)
- tags: string[];
-}
+// @public @deprecated (undocumented)
+export const StackOverflowQuestionsCollatorFactory: typeof StackOverflowQuestionsCollatorFactory_2;
-// @public
-export class StackOverflowQuestionsCollatorFactory
- implements DocumentCollatorFactory
-{
- // (undocumented)
- execute(): AsyncGenerator;
- // (undocumented)
- static fromConfig(
- config: Config,
- options: StackOverflowQuestionsCollatorFactoryOptions,
- ): StackOverflowQuestionsCollatorFactory;
- // (undocumented)
- getCollator(): Promise;
- // (undocumented)
- protected requestParams: StackOverflowQuestionsRequestParams;
- // (undocumented)
- readonly type: string;
-}
+// @public @deprecated (undocumented)
+export type StackOverflowQuestionsCollatorFactoryOptions =
+ StackOverflowQuestionsCollatorFactory_2;
-// @public
-export type StackOverflowQuestionsCollatorFactoryOptions = {
- baseUrl?: string;
- maxPage?: number;
- apiKey?: string;
- apiAccessToken?: string;
- teamName?: string;
- requestParams?: StackOverflowQuestionsRequestParams;
- logger: Logger;
-};
-
-// @public
-export type StackOverflowQuestionsRequestParams = {
- [key: string]: string | string[] | number;
-};
+// @public @deprecated (undocumented)
+export type StackOverflowQuestionsRequestParams =
+ StackOverflowQuestionsRequestParams_2;
```
diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json
index 53857082d2..5235c33f1a 100644
--- a/plugins/stack-overflow-backend/package.json
+++ b/plugins/stack-overflow-backend/package.json
@@ -5,22 +5,9 @@
"types": "src/index.ts",
"license": "Apache-2.0",
"publishConfig": {
- "access": "public"
- },
- "exports": {
- ".": "./src/index.ts",
- "./alpha": "./src/alpha.ts",
- "./package.json": "./package.json"
- },
- "typesVersions": {
- "*": {
- "alpha": [
- "src/alpha.ts"
- ],
- "package.json": [
- "package.json"
- ]
- }
+ "access": "public",
+ "main": "dist/index.cjs.js",
+ "types": "dist/index.d.ts"
},
"backstage": {
"role": "backend-plugin"
@@ -46,10 +33,8 @@
},
"dependencies": {
"@backstage/backend-common": "workspace:^",
- "@backstage/backend-plugin-api": "workspace:^",
- "@backstage/backend-tasks": "workspace:^",
"@backstage/config": "workspace:^",
- "@backstage/plugin-search-backend-node": "workspace:^",
+ "@backstage/plugin-search-backend-module-stack-overflow": "workspace:^",
"@backstage/plugin-search-common": "workspace:^",
"node-fetch": "^2.6.7",
"qs": "^6.9.4",
@@ -58,6 +43,7 @@
"devDependencies": {
"@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
+ "@backstage/plugin-search-backend-node": "workspace:^",
"msw": "^1.0.0"
},
"files": [
diff --git a/plugins/stack-overflow-backend/src/index.ts b/plugins/stack-overflow-backend/src/index.ts
index 6e461b8183..269748424b 100644
--- a/plugins/stack-overflow-backend/src/index.ts
+++ b/plugins/stack-overflow-backend/src/index.ts
@@ -20,4 +20,40 @@
* @packageDocumentation
*/
-export * from './search';
+import {
+ StackOverflowDocument as _StackOverflowDocument,
+ StackOverflowQuestionsRequestParams as _StackOverflowQuestionsRequestParams,
+ StackOverflowQuestionsCollatorFactory as _StackOverflowQuestionsCollatorFactory,
+ StackOverflowQuestionsCollatorFactoryOptions as _StackOverflowQuestionsCollatorFactoryOptions,
+} from '@backstage/plugin-search-backend-module-stack-overflow';
+
+/**
+ * @public
+ * @deprecated
+ * Import from `@backstage/plugin-search-backend-module-stack-overflow` instead.
+ */
+export type StackOverflowDocument = _StackOverflowDocument;
+
+/**
+ * @public
+ * @deprecated
+ * Import from `@backstage/plugin-search-backend-module-stack-overflow` instead.
+ */
+export type StackOverflowQuestionsRequestParams =
+ _StackOverflowQuestionsRequestParams;
+
+/**
+ * @public
+ * @deprecated
+ * Import from `@backstage/plugin-search-backend-module-stack-overflow` instead.
+ */
+export type StackOverflowQuestionsCollatorFactoryOptions =
+ _StackOverflowQuestionsCollatorFactory;
+
+/**
+ * @public
+ * @deprecated
+ * Import from `@backstage/plugin-search-backend-module-stack-overflow` instead.
+ */
+export const StackOverflowQuestionsCollatorFactory =
+ _StackOverflowQuestionsCollatorFactory;
diff --git a/yarn.lock b/yarn.lock
index bc7aa10d86..6e2db68238 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8847,6 +8847,25 @@ __metadata:
languageName: unknown
linkType: soft
+"@backstage/plugin-search-backend-module-stack-overflow@workspace:^, @backstage/plugin-search-backend-module-stack-overflow@workspace:plugins/search-backend-module-stack-overflow":
+ version: 0.0.0-use.local
+ resolution: "@backstage/plugin-search-backend-module-stack-overflow@workspace:plugins/search-backend-module-stack-overflow"
+ dependencies:
+ "@backstage/backend-common": "workspace:^"
+ "@backstage/backend-plugin-api": "workspace:^"
+ "@backstage/backend-tasks": "workspace:^"
+ "@backstage/backend-test-utils": "workspace:^"
+ "@backstage/cli": "workspace:^"
+ "@backstage/config": "workspace:^"
+ "@backstage/plugin-search-backend-node": "workspace:^"
+ "@backstage/plugin-search-common": "workspace:^"
+ msw: ^1.2.1
+ node-fetch: ^2.6.7
+ qs: ^6.9.4
+ winston: ^3.2.1
+ languageName: unknown
+ linkType: soft
+
"@backstage/plugin-search-backend-module-techdocs@workspace:^, @backstage/plugin-search-backend-module-techdocs@workspace:plugins/search-backend-module-techdocs":
version: 0.0.0-use.local
resolution: "@backstage/plugin-search-backend-module-techdocs@workspace:plugins/search-backend-module-techdocs"
@@ -9182,16 +9201,15 @@ __metadata:
languageName: unknown
linkType: soft
-"@backstage/plugin-stack-overflow-backend@workspace:^, @backstage/plugin-stack-overflow-backend@workspace:plugins/stack-overflow-backend":
+"@backstage/plugin-stack-overflow-backend@workspace:plugins/stack-overflow-backend":
version: 0.0.0-use.local
resolution: "@backstage/plugin-stack-overflow-backend@workspace:plugins/stack-overflow-backend"
dependencies:
"@backstage/backend-common": "workspace:^"
- "@backstage/backend-plugin-api": "workspace:^"
- "@backstage/backend-tasks": "workspace:^"
"@backstage/backend-test-utils": "workspace:^"
"@backstage/cli": "workspace:^"
"@backstage/config": "workspace:^"
+ "@backstage/plugin-search-backend-module-stack-overflow": "workspace:^"
"@backstage/plugin-search-backend-node": "workspace:^"
"@backstage/plugin-search-common": "workspace:^"
msw: ^1.0.0
@@ -25317,7 +25335,6 @@ __metadata:
"@backstage/plugin-search-react": "workspace:^"
"@backstage/plugin-sentry": "workspace:^"
"@backstage/plugin-shortcuts": "workspace:^"
- "@backstage/plugin-stack-overflow": "workspace:^"
"@backstage/plugin-stackstorm": "workspace:^"
"@backstage/plugin-tech-insights": "workspace:^"
"@backstage/plugin-tech-radar": "workspace:^"
@@ -25505,7 +25522,6 @@ __metadata:
"@backstage/plugin-search-backend-module-techdocs": "workspace:^"
"@backstage/plugin-search-backend-node": "workspace:^"
"@backstage/plugin-sonarqube-backend": "workspace:^"
- "@backstage/plugin-stack-overflow-backend": "workspace:^"
"@backstage/plugin-techdocs-backend": "workspace:^"
"@backstage/plugin-todo-backend": "workspace:^"
languageName: unknown