-
+
+
+
{dropdownItems && showDropDown && (
{dropdownItems.map((object, key) => (
- e.stopPropagation()}
+
-
- {object.title}
-
-
+ e.stopPropagation()}
+ >
+
+ {object.title}
+
+
+
))}
)}
@@ -181,21 +196,23 @@ export const SidebarSubmenuItem = (props: SidebarSubmenuItemProps) => {
return (
- e.stopPropagation()}
- >
-
-
- {title}
-
-
+
+ e.stopPropagation()}
+ >
+ {Icon && }
+
+ {title}
+
+
+
);
};
diff --git a/packages/core-plugin-api/CHANGELOG.md b/packages/core-plugin-api/CHANGELOG.md
index 6e8f7840e7..f34b81fb05 100644
--- a/packages/core-plugin-api/CHANGELOG.md
+++ b/packages/core-plugin-api/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/core-plugin-api
+## 1.0.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.1-next.0
+
## 1.0.2-next.0
### Patch Changes
diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json
index 03ecdfab74..330e5dccc8 100644
--- a/packages/core-plugin-api/package.json
+++ b/packages/core-plugin-api/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/core-plugin-api",
"description": "Core API used by Backstage plugins",
- "version": "1.0.2-next.0",
+ "version": "1.0.2-next.1",
"private": false,
"publishConfig": {
"access": "public",
@@ -33,7 +33,7 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/config": "^1.0.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/types": "^1.0.0",
"@backstage/version-bridge": "^1.0.1",
"history": "^5.0.0",
@@ -46,9 +46,9 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md
index 17cf75b922..65b7539f34 100644
--- a/packages/create-app/CHANGELOG.md
+++ b/packages/create-app/CHANGELOG.md
@@ -1,5 +1,98 @@
# @backstage/create-app
+## 0.4.27-next.2
+
+### Patch Changes
+
+- 73480846dd: Simplified the search collator scheduling by removing the need for the `luxon` dependency.
+
+ For existing installations the scheduling can be simplified by removing the `luxon` dependency and using the human friendly duration object instead.
+ Please note that this only applies if luxon is not used elsewhere in your installation.
+
+ `packages/backend/package.json`
+
+ ```diff
+ "express": "^4.17.1",
+ "express-promise-router": "^4.1.0",
+ - "luxon": "^2.0.2",
+ ```
+
+ `packages/backend/src/plugins/search.ts`
+
+ ```diff
+ import { Router } from 'express';
+ -import { Duration } from 'luxon';
+
+ // omitted other code
+
+ const schedule = env.scheduler.createScheduledTaskRunner({
+ - frequency: Duration.fromObject({ minutes: 10 }),
+ - timeout: Duration.fromObject({ minutes: 15 }),
+ + frequency: { minutes: 10 },
+ + timeout: { minutes: 15 },
+ // A 3 second delay gives the backend server a chance to initialize before
+ // any collators are executed, which may attempt requests against the API.
+ - initialDelay: Duration.fromObject({ seconds: 3 }),
+ + initialDelay: { seconds: 3 },
+ });
+ ```
+
+- 7cda923c16: Tweaked the `.dockerignore` file so that it's easier to add additional backend packages if desired.
+
+ To apply this change to an existing app, make the following change to `.dockerignore`:
+
+ ```diff
+ cypress
+ microsite
+ node_modules
+ -packages
+ -!packages/backend/dist
+ +packages/*/src
+ +packages/*/node_modules
+ plugins
+ ```
+
+- f55414f895: Added sample catalog data to the template under a top-level `examples` directory. This includes some simple entities, org data, and a template. You can find the sample data at https://github.com/backstage/backstage/tree/master/packages/create-app/templates/default-app/examples.
+- 3a74e203a8: Implement highlighting matching terms in search results. To enable this for an existing app, make the following changes:
+
+ ```diff
+ // packages/app/src/components/search/SearchPage.tsx
+ ...
+ - {results.map(({ type, document }) => {
+ + {results.map(({ type, document, highlight }) => {
+ switch (type) {
+ case 'software-catalog':
+ return (
+
+ );
+ case 'techdocs':
+ return (
+
+ );
+ default:
+ return (
+
+ );
+ }
+ })}
+ ...
+ ```
+
+- Updated dependencies
+ - @backstage/cli-common@0.1.9-next.0
+
## 0.4.27-next.1
### Patch Changes
diff --git a/packages/create-app/package.json b/packages/create-app/package.json
index b2b42128d0..6d1d2ba402 100644
--- a/packages/create-app/package.json
+++ b/packages/create-app/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/create-app",
"description": "A CLI that helps you create your own Backstage app",
- "version": "0.4.27-next.1",
+ "version": "0.4.27-next.2",
"private": false,
"publishConfig": {
"access": "public"
@@ -33,7 +33,7 @@
"start": "nodemon --"
},
"dependencies": {
- "@backstage/cli-common": "^0.1.8",
+ "@backstage/cli-common": "^0.1.9-next.0",
"chalk": "^4.0.0",
"commander": "^9.1.0",
"fs-extra": "10.1.0",
@@ -91,6 +91,8 @@
"@backstage/plugin-search-backend-node": "",
"@backstage/plugin-tech-radar": "",
"@backstage/plugin-techdocs": "",
+ "@backstage/plugin-techdocs-react": "",
+ "@backstage/plugin-techdocs-module-addons-contrib": "",
"@backstage/plugin-techdocs-backend": "",
"@backstage/plugin-user-settings": "",
"@backstage/test-utils": "",
diff --git a/packages/create-app/src/lib/versions.ts b/packages/create-app/src/lib/versions.ts
index b6c93a38b3..25007d7535 100644
--- a/packages/create-app/src/lib/versions.ts
+++ b/packages/create-app/src/lib/versions.ts
@@ -75,6 +75,8 @@ import { version as pluginSearchBackendModulePg } from '../../../../plugins/sear
import { version as pluginSearchBackendNode } from '../../../../plugins/search-backend-node/package.json';
import { version as pluginTechRadar } from '../../../../plugins/tech-radar/package.json';
import { version as pluginTechdocs } from '../../../../plugins/techdocs/package.json';
+import { version as pluginTechdocsReact } from '../../../../plugins/techdocs-react/package.json';
+import { version as pluginTechdocsModuleAddonsContrib } from '../../../../plugins/techdocs-module-addons-contrib/package.json';
import { version as pluginTechdocsBackend } from '../../../../plugins/techdocs-backend/package.json';
import { version as pluginUserSettings } from '../../../../plugins/user-settings/package.json';
@@ -120,6 +122,9 @@ export const packageVersions = {
'@backstage/plugin-search-backend-node': pluginSearchBackendNode,
'@backstage/plugin-tech-radar': pluginTechRadar,
'@backstage/plugin-techdocs': pluginTechdocs,
+ '@backstage/plugin-techdocs-react': pluginTechdocsReact,
+ '@backstage/plugin-techdocs-module-addons-contrib':
+ pluginTechdocsModuleAddonsContrib,
'@backstage/plugin-techdocs-backend': pluginTechdocsBackend,
'@backstage/plugin-user-settings': pluginUserSettings,
'@backstage/test-utils': testUtils,
diff --git a/packages/create-app/templates/default-app/packages/app/package.json.hbs b/packages/create-app/templates/default-app/packages/app/package.json.hbs
index 87a8060594..9bf67f6e52 100644
--- a/packages/create-app/templates/default-app/packages/app/package.json.hbs
+++ b/packages/create-app/templates/default-app/packages/app/package.json.hbs
@@ -28,6 +28,8 @@
"@backstage/plugin-search-react": "^{{version '@backstage/plugin-search-react'}}",
"@backstage/plugin-tech-radar": "^{{version '@backstage/plugin-tech-radar'}}",
"@backstage/plugin-techdocs": "^{{version '@backstage/plugin-techdocs'}}",
+ "@backstage/plugin-techdocs-react": "^{{version '@backstage/plugin-techdocs-react'}}",
+ "@backstage/plugin-techdocs-module-addons-contrib": "^{{version '@backstage/plugin-techdocs-module-addons-contrib'}}",
"@backstage/plugin-user-settings": "^{{version '@backstage/plugin-user-settings'}}",
"@backstage/theme": "^{{version '@backstage/theme'}}",
"@material-ui/core": "^4.12.2",
diff --git a/packages/create-app/templates/default-app/packages/app/src/App.tsx b/packages/create-app/templates/default-app/packages/app/src/App.tsx
index f4ff424926..c4877263f0 100644
--- a/packages/create-app/templates/default-app/packages/app/src/App.tsx
+++ b/packages/create-app/templates/default-app/packages/app/src/App.tsx
@@ -19,6 +19,8 @@ import {
techdocsPlugin,
TechDocsReaderPage,
} from '@backstage/plugin-techdocs';
+import { TechDocsAddons } from '@backstage/plugin-techdocs-react';
+import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib';
import { UserSettingsPage } from '@backstage/plugin-user-settings';
import { apis } from './apis';
import { entityPage } from './components/catalog/EntityPage';
@@ -68,7 +70,11 @@ const routes = (
}
- />
+ >
+
+
+
+
} />
} />
{
{({ results }) => (
- {results.map(({ type, document }) => {
+ {results.map(({ type, document, highlight }) => {
switch (type) {
case 'software-catalog':
return (
);
case 'techdocs':
@@ -126,6 +127,7 @@ const SearchPage = () => {
);
default:
@@ -133,6 +135,7 @@ const SearchPage = () => {
);
}
diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md
index c14cb2b35e..be3b35c3db 100644
--- a/packages/dev-utils/CHANGELOG.md
+++ b/packages/dev-utils/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/dev-utils
+## 1.0.2-next.2
+
+### Patch Changes
+
+- 6e830352d4: Updated dependency `@types/node` to `^16.0.0`.
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-app-api@1.0.2-next.1
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/integration-react@1.1.0-next.2
+ - @backstage/test-utils@1.1.0-next.2
+
## 1.0.2-next.1
### Patch Changes
diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json
index 02bc11f290..b659ec5f03 100644
--- a/packages/dev-utils/package.json
+++ b/packages/dev-utils/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/dev-utils",
"description": "Utilities for developing Backstage plugins.",
- "version": "1.0.2-next.1",
+ "version": "1.0.2-next.2",
"private": false,
"publishConfig": {
"access": "public",
@@ -34,13 +34,13 @@
},
"dependencies": {
"@backstage/app-defaults": "^1.0.2-next.0",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/integration-react": "^1.1.0-next.1",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/core-components": "^0.9.4-next.1",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/integration-react": "^1.1.0-next.2",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -59,7 +59,7 @@
"react-dom": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/jest": "^26.0.7",
"@types/node": "^16.0.0"
},
diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json
index 24a9daac6f..2de60f4db8 100644
--- a/packages/e2e-test/package.json
+++ b/packages/e2e-test/package.json
@@ -29,7 +29,7 @@
"e2e-test": "bin/e2e-test"
},
"devDependencies": {
- "@backstage/cli-common": "^0.1.8",
+ "@backstage/cli-common": "^0.1.9-next.0",
"@backstage/errors": "^1.0.0",
"@types/fs-extra": "^9.0.1",
"@types/node": "^16.11.26",
@@ -40,7 +40,7 @@
"fs-extra": "10.1.0",
"handlebars": "^4.7.3",
"pgtools": "^0.3.0",
- "puppeteer": "^13.1.1",
+ "puppeteer": "^14.0.0",
"tree-kill": "^1.2.2",
"ts-node": "^10.0.0"
},
diff --git a/packages/integration-react/CHANGELOG.md b/packages/integration-react/CHANGELOG.md
index 7b3171f8d2..ab3b2afba9 100644
--- a/packages/integration-react/CHANGELOG.md
+++ b/packages/integration-react/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/integration-react
+## 1.1.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/integration@1.2.0-next.1
+
## 1.1.0-next.1
### Patch Changes
diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json
index 8b27eebab4..5362e59467 100644
--- a/packages/integration-react/package.json
+++ b/packages/integration-react/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/integration-react",
"description": "Frontend package for managing integrations towards external systems",
- "version": "1.1.0-next.1",
+ "version": "1.1.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -24,10 +24,10 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/config": "^1.0.0",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/integration": "^1.2.0-next.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/core-components": "^0.9.4-next.1",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/integration": "^1.2.0-next.1",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -38,9 +38,9 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/packages/integration/CHANGELOG.md b/packages/integration/CHANGELOG.md
index ae53c872d5..d8f338dfa0 100644
--- a/packages/integration/CHANGELOG.md
+++ b/packages/integration/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/integration
+## 1.2.0-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.1-next.0
+
## 1.2.0-next.0
### Minor Changes
diff --git a/packages/integration/package.json b/packages/integration/package.json
index f0da96b54f..3f7ce5d219 100644
--- a/packages/integration/package.json
+++ b/packages/integration/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/integration",
"description": "Helpers for managing integrations towards external systems",
- "version": "1.2.0-next.0",
+ "version": "1.2.0-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,7 +33,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/config": "^1.0.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/errors": "^1.0.0",
"cross-fetch": "^3.1.5",
"git-url-parse": "^11.6.0",
"@octokit/rest": "^18.5.3",
@@ -42,9 +43,9 @@
"lodash": "^4.17.21"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/config-loader": "^1.1.1-next.0",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/config-loader": "^1.1.1-next.1",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@types/jest": "^26.0.7",
"@types/luxon": "^2.0.4",
"msw": "^0.35.0"
diff --git a/packages/integration/src/gitlab/core.test.ts b/packages/integration/src/gitlab/core.test.ts
index 4f39fb2fe7..d01406fe1c 100644
--- a/packages/integration/src/gitlab/core.test.ts
+++ b/packages/integration/src/gitlab/core.test.ts
@@ -87,6 +87,26 @@ describe('gitlab core', () => {
url: 'https://gitlab.example.com/a/b/blob/master/c.yaml',
result: 'https://gitlab.example.com/a/b/raw/master/c.yaml',
},
+ {
+ config: configWithNoToken,
+ url: 'https://gitlab.example.com/a/b/repo/blob/master/c.yaml',
+ result: 'https://gitlab.example.com/a/b/repo/raw/master/c.yaml',
+ },
+ {
+ config: configWithNoToken,
+ url: 'https://gitlab.example.com/a/blob/blob/master/c.yaml',
+ result: 'https://gitlab.example.com/a/blob/raw/master/c.yaml',
+ },
+ {
+ config: configWithNoToken,
+ url: 'https://gitlab.example.com/a/b/blob/blob/c.yaml',
+ result: 'https://gitlab.example.com/a/b/raw/blob/c.yaml',
+ },
+ {
+ config: configWithNoToken,
+ url: 'https://gitlab.example.com/a//blob/blob/c.yaml',
+ result: 'https://gitlab.example.com/a/blob/raw/c.yaml',
+ },
])('should handle happy path %#', async ({ config, url, result }) => {
await expect(getGitLabFileFetchUrl(url, config)).resolves.toBe(result);
});
diff --git a/packages/integration/src/gitlab/core.ts b/packages/integration/src/gitlab/core.ts
index b379d3d129..ba0f9c83de 100644
--- a/packages/integration/src/gitlab/core.ts
+++ b/packages/integration/src/gitlab/core.ts
@@ -16,6 +16,7 @@
import { GitLabIntegrationConfig } from './config';
import fetch from 'cross-fetch';
+import { InputError } from '@backstage/errors';
/**
* Given a URL pointing to a file on a provider, returns a URL that is suitable
@@ -66,31 +67,34 @@ export function getGitLabRequestOptions(config: GitLabIntegrationConfig): {
}
// Converts
-// from: https://gitlab.example.com/a/b/blob/master/c.yaml
-// to: https://gitlab.example.com/a/b/raw/master/c.yaml
+// from: https://gitlab.example.com/groupA/teams/repoA/blob/master/c.yaml
+// to: https://gitlab.example.com/groupA/teams/repoA/raw/master/c.yaml
export function buildRawUrl(target: string): URL {
try {
const url = new URL(target);
- const [empty, userOrOrg, repoName, blobKeyword, ...restOfPath] =
- url.pathname.split('/');
+ const splitPath = url.pathname.split('/').filter(Boolean);
- if (
- empty !== '' ||
- userOrOrg === '' ||
- repoName === '' ||
- blobKeyword !== 'blob' ||
- !restOfPath.join('/').match(/\.(yaml|yml)$/)
- ) {
- throw new Error('Wrong GitLab URL');
+ // Check blob existence
+ const blobIndex = splitPath.indexOf('blob', 2);
+ if (blobIndex < 2 || blobIndex === splitPath.length - 1) {
+ throw new InputError('Wrong GitLab URL');
+ }
+
+ // Take repo path
+ const repoPath = splitPath.slice(0, blobIndex);
+ const restOfPath = splitPath.slice(blobIndex + 1);
+
+ if (!restOfPath.join('/').match(/\.(yaml|yml)$/)) {
+ throw new InputError('Wrong GitLab URL');
}
// Replace 'blob' with 'raw'
- url.pathname = [empty, userOrOrg, repoName, 'raw', ...restOfPath].join('/');
+ url.pathname = [...repoPath, 'raw', ...restOfPath].join('/');
return url;
} catch (e) {
- throw new Error(`Incorrect url: ${target}, ${e}`);
+ throw new InputError(`Incorrect url: ${target}, ${e}`);
}
}
diff --git a/packages/release-manifests/CHANGELOG.md b/packages/release-manifests/CHANGELOG.md
index 61113e1c76..777a91e5dd 100644
--- a/packages/release-manifests/CHANGELOG.md
+++ b/packages/release-manifests/CHANGELOG.md
@@ -1,5 +1,11 @@
# @backstage/release-manifests
+## 0.0.3-next.0
+
+### Patch Changes
+
+- 6e830352d4: Updated dependency `@types/node` to `^16.0.0`.
+
## 0.0.2
### Patch Changes
diff --git a/packages/release-manifests/package.json b/packages/release-manifests/package.json
index 93645b959d..29a1b7c092 100644
--- a/packages/release-manifests/package.json
+++ b/packages/release-manifests/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/release-manifests",
"description": "Helper library for receiving release manifests",
- "version": "0.0.2",
+ "version": "0.0.3-next.0",
"private": false,
"main": "src/index.ts",
"types": "src/index.ts",
@@ -36,7 +36,7 @@
"cross-fetch": "^3.1.5"
},
"devDependencies": {
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/test-utils": "^1.1.0-next.2",
"msw": "^0.35.0",
"@types/jest": "^26.0.7",
"@types/node": "^16.0.0"
diff --git a/packages/search-common/CHANGELOG.md b/packages/search-common/CHANGELOG.md
index f24fb4ca9f..8d0804777b 100644
--- a/packages/search-common/CHANGELOG.md
+++ b/packages/search-common/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/search-common
+## 0.3.4-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-search-common@0.3.4-next.0
+
## 0.3.3
### Patch Changes
diff --git a/packages/search-common/package.json b/packages/search-common/package.json
index 3fa096862f..3b0dc08f0a 100644
--- a/packages/search-common/package.json
+++ b/packages/search-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/search-common",
"description": "No longer maintained. Use @backstage/plugin-search-common instead.",
- "version": "0.3.3",
+ "version": "0.3.4-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"private": false,
@@ -35,7 +35,7 @@
"url": "https://github.com/backstage/backstage/issues"
},
"dependencies": {
- "@backstage/plugin-search-common": "0.3.3"
+ "@backstage/plugin-search-common": "0.3.4-next.0"
},
"devDependencies": {},
"jest": {
diff --git a/packages/techdocs-cli-embedded-app/CHANGELOG.md b/packages/techdocs-cli-embedded-app/CHANGELOG.md
index 570aeb4b55..c395728297 100644
--- a/packages/techdocs-cli-embedded-app/CHANGELOG.md
+++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md
@@ -1,5 +1,22 @@
# techdocs-cli-embedded-app
+## 0.2.70-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-techdocs@1.1.1-next.2
+ - @backstage/plugin-techdocs-react@0.1.1-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-catalog@1.2.0-next.2
+ - @backstage/cli@0.17.1-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-app-api@1.0.2-next.1
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/integration-react@1.1.0-next.2
+ - @backstage/test-utils@1.1.0-next.2
+
## 0.2.70-next.1
### Patch Changes
diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json
index 697193607f..088fc47926 100644
--- a/packages/techdocs-cli-embedded-app/package.json
+++ b/packages/techdocs-cli-embedded-app/package.json
@@ -1,6 +1,6 @@
{
"name": "techdocs-cli-embedded-app",
- "version": "0.2.70-next.1",
+ "version": "0.2.70-next.2",
"private": true,
"backstage": {
"role": "frontend"
@@ -8,17 +8,17 @@
"bundled": true,
"dependencies": {
"@backstage/app-defaults": "^1.0.2-next.0",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/config": "^1.0.0",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/integration-react": "^1.1.0-next.1",
- "@backstage/plugin-catalog": "^1.2.0-next.1",
- "@backstage/plugin-techdocs": "^1.1.1-next.1",
- "@backstage/plugin-techdocs-react": "^0.1.1-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/core-components": "^0.9.4-next.1",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/integration-react": "^1.1.0-next.2",
+ "@backstage/plugin-catalog": "^1.2.0-next.2",
+ "@backstage/plugin-techdocs": "^1.1.1-next.2",
+ "@backstage/plugin-techdocs-react": "^0.1.1-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -30,7 +30,7 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/packages/techdocs-cli/CHANGELOG.md b/packages/techdocs-cli/CHANGELOG.md
index 500e8d9091..6fe447d269 100644
--- a/packages/techdocs-cli/CHANGELOG.md
+++ b/packages/techdocs-cli/CHANGELOG.md
@@ -1,5 +1,16 @@
# @techdocs/cli
+## 1.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/cli-common@0.1.9-next.0
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/plugin-techdocs-node@1.1.1-next.1
+
## 1.1.1-next.1
### Patch Changes
diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json
index 73496350a2..ecaf2c8dd6 100644
--- a/packages/techdocs-cli/package.json
+++ b/packages/techdocs-cli/package.json
@@ -1,7 +1,7 @@
{
"name": "@techdocs/cli",
"description": "Utility CLI for managing TechDocs sites in Backstage.",
- "version": "1.1.1-next.1",
+ "version": "1.1.1-next.2",
"private": false,
"publishConfig": {
"access": "public"
@@ -37,7 +37,7 @@
"techdocs-cli": "bin/techdocs-cli"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/commander": "^2.12.2",
"@types/fs-extra": "^9.0.6",
"@types/http-proxy": "^1.17.4",
@@ -62,11 +62,11 @@
"ext": "ts"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.1",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/cli-common": "^0.1.8",
- "@backstage/config": "^1.0.0",
- "@backstage/plugin-techdocs-node": "^1.1.1-next.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/cli-common": "^0.1.9-next.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/plugin-techdocs-node": "^1.1.1-next.1",
"@types/dockerode": "^3.3.0",
"commander": "^9.1.0",
"dockerode": "^3.3.1",
diff --git a/packages/techdocs-cli/src/lib/httpServer.ts b/packages/techdocs-cli/src/lib/httpServer.ts
index 92fc5abc87..c4bd5b823a 100644
--- a/packages/techdocs-cli/src/lib/httpServer.ts
+++ b/packages/techdocs-cli/src/lib/httpServer.ts
@@ -32,7 +32,7 @@ export default class HTTPServer {
mkdocsPort: number,
verbose: boolean,
) {
- this.proxyEndpoint = '/api/';
+ this.proxyEndpoint = '/api/techdocs/';
this.backstageBundleDir = backstageBundleDir;
this.backstagePort = backstagePort;
this.mkdocsPort = mkdocsPort;
@@ -46,10 +46,9 @@ export default class HTTPServer {
});
return (request: http.IncomingMessage): [httpProxy, string] => {
- // If the request goes to /api/ we want to remove /api/ from the prefix of the request URL.
- // e.g. ['/', 'api', pathChunks]
- const [, , ...pathChunks] = request.url?.split('/') ?? [];
- const forwardPath = pathChunks.join('/');
+ // If the request path is prefixed with this.proxyEndpoint, remove it.
+ const proxyEndpointPath = new RegExp(`^${this.proxyEndpoint}`, 'i');
+ const forwardPath = request.url?.replace(proxyEndpointPath, '') || '';
return [proxy, forwardPath];
};
diff --git a/packages/techdocs-common/CHANGELOG.md b/packages/techdocs-common/CHANGELOG.md
index 8d3f7f4fde..82423ed488 100644
--- a/packages/techdocs-common/CHANGELOG.md
+++ b/packages/techdocs-common/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/techdocs-common
+## 0.11.15-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-techdocs-node@1.1.1-next.1
+
## 0.11.15-next.0
### Patch Changes
diff --git a/packages/techdocs-common/package.json b/packages/techdocs-common/package.json
index aecd9622e2..c33e33bed3 100644
--- a/packages/techdocs-common/package.json
+++ b/packages/techdocs-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/techdocs-common",
"description": "No longer maintained. Use @backstage/plugin-techdocs-node instead.",
- "version": "0.11.15-next.0",
+ "version": "0.11.15-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"private": false,
@@ -36,7 +36,7 @@
"url": "https://github.com/backstage/backstage/issues"
},
"dependencies": {
- "@backstage/plugin-techdocs-node": "1.1.1-next.0"
+ "@backstage/plugin-techdocs-node": "1.1.1-next.1"
},
"devDependencies": {},
"jest": {
diff --git a/packages/test-utils/CHANGELOG.md b/packages/test-utils/CHANGELOG.md
index e81cf8679d..4a94da5efb 100644
--- a/packages/test-utils/CHANGELOG.md
+++ b/packages/test-utils/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/test-utils
+## 1.1.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.1-next.0
+ - @backstage/core-app-api@1.0.2-next.1
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/plugin-permission-common@0.6.1-next.0
+ - @backstage/plugin-permission-react@0.4.1-next.1
+
## 1.1.0-next.1
### Minor Changes
diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json
index 14eed97a81..4e53016c58 100644
--- a/packages/test-utils/package.json
+++ b/packages/test-utils/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/test-utils",
"description": "Utilities to test Backstage plugins and apps.",
- "version": "1.1.0-next.1",
+ "version": "1.1.0-next.2",
"private": false,
"publishConfig": {
"access": "public",
@@ -33,11 +33,11 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/config": "^1.0.0",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-permission-common": "^0.6.0",
- "@backstage/plugin-permission-react": "^0.4.1-next.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-permission-common": "^0.6.1-next.0",
+ "@backstage/plugin-permission-react": "^0.4.1-next.1",
"@backstage/theme": "^0.2.15",
"@backstage/types": "^1.0.0",
"@material-ui/core": "^4.12.2",
@@ -55,7 +55,7 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/jest": "^26.0.7",
"@types/node": "^16.11.26",
"msw": "^0.35.0"
diff --git a/plugins/adr-backend/CHANGELOG.md b/plugins/adr-backend/CHANGELOG.md
index e1ba8ca9ee..f104fc51ab 100644
--- a/plugins/adr-backend/CHANGELOG.md
+++ b/plugins/adr-backend/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-adr-backend
+## 0.1.0-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-search-common@0.3.4-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/integration@1.2.0-next.1
+ - @backstage/plugin-adr-common@0.1.0-next.1
+ - @backstage/catalog-client@1.0.2-next.0
+
## 0.1.0-next.0
### Minor Changes
diff --git a/plugins/adr-backend/package.json b/plugins/adr-backend/package.json
index 17ae8aedb5..2b32a905db 100644
--- a/plugins/adr-backend/package.json
+++ b/plugins/adr-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-adr-backend",
- "version": "0.1.0-next.0",
+ "version": "0.1.0-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -29,14 +29,14 @@
"postpack": "backstage-cli package postpack"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.1",
- "@backstage/catalog-client": "^1.0.1",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/catalog-client": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/plugin-adr-common": "^0.1.0-next.0",
- "@backstage/plugin-search-common": "^0.3.3",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/plugin-adr-common": "^0.1.0-next.1",
+ "@backstage/plugin-search-common": "^0.3.4-next.0",
"luxon": "^2.0.2",
"marked": "^4.0.14",
"winston": "^3.2.1",
@@ -44,7 +44,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/marked": "^4.0.0",
"@types/supertest": "^2.0.8",
"supertest": "^6.1.3",
diff --git a/plugins/adr-common/CHANGELOG.md b/plugins/adr-common/CHANGELOG.md
index 2d191396b8..a80412d3fa 100644
--- a/plugins/adr-common/CHANGELOG.md
+++ b/plugins/adr-common/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-adr-common
+## 0.1.0-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-search-common@0.3.4-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/integration@1.2.0-next.1
+
## 0.1.0-next.0
### Minor Changes
diff --git a/plugins/adr-common/package.json b/plugins/adr-common/package.json
index 50190fb74d..ad9cb537f3 100644
--- a/plugins/adr-common/package.json
+++ b/plugins/adr-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-adr-common",
"description": "Common functionalities for the adr plugin",
- "version": "0.1.0-next.0",
+ "version": "0.1.0-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,12 +30,12 @@
"postpack": "backstage-cli package postpack"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/plugin-search-common": "^0.3.3"
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/plugin-search-common": "^0.3.4-next.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1"
+ "@backstage/cli": "^0.17.1-next.2"
},
"files": [
"dist"
diff --git a/plugins/airbrake-backend/CHANGELOG.md b/plugins/airbrake-backend/CHANGELOG.md
index 667123afb9..b1eec5c812 100644
--- a/plugins/airbrake-backend/CHANGELOG.md
+++ b/plugins/airbrake-backend/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-airbrake-backend
+## 0.2.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+
## 0.2.5-next.0
### Patch Changes
diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json
index 28ff3bd6a7..29cf4c8d6c 100644
--- a/plugins/airbrake-backend/package.json
+++ b/plugins/airbrake-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-airbrake-backend",
- "version": "0.2.5-next.0",
+ "version": "0.2.5-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -22,8 +22,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/config": "^1.0.1-next.0",
"@types/express": "*",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
@@ -33,7 +33,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/http-proxy-middleware": "^0.19.3",
"@types/supertest": "^2.0.8",
"supertest": "^6.1.6",
diff --git a/plugins/airbrake/CHANGELOG.md b/plugins/airbrake/CHANGELOG.md
index 361f6fe162..9bb41f3b9d 100644
--- a/plugins/airbrake/CHANGELOG.md
+++ b/plugins/airbrake/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-airbrake
+## 0.3.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/dev-utils@1.0.2-next.2
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/test-utils@1.1.0-next.2
+
## 0.3.5-next.1
### Patch Changes
diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json
index 50ae9cb128..4426a54a77 100644
--- a/plugins/airbrake/package.json
+++ b/plugins/airbrake/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-airbrake",
- "version": "0.3.5-next.1",
+ "version": "0.3.5-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,12 +23,12 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -41,9 +41,9 @@
},
"devDependencies": {
"@backstage/app-defaults": "^1.0.2-next.0",
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/allure/CHANGELOG.md b/plugins/allure/CHANGELOG.md
index 35328f7b75..a172ea5801 100644
--- a/plugins/allure/CHANGELOG.md
+++ b/plugins/allure/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-allure
+## 0.1.21-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.1.21-next.1
### Patch Changes
diff --git a/plugins/allure/package.json b/plugins/allure/package.json
index 610f01cdc4..458aa61709 100644
--- a/plugins/allure/package.json
+++ b/plugins/allure/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-allure",
"description": "A Backstage plugin that integrates with Allure",
- "version": "0.1.21-next.1",
+ "version": "0.1.21-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -25,10 +25,10 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -40,10 +40,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/analytics-module-ga/CHANGELOG.md b/plugins/analytics-module-ga/CHANGELOG.md
index b43e4759ed..e9a70ffeb3 100644
--- a/plugins/analytics-module-ga/CHANGELOG.md
+++ b/plugins/analytics-module-ga/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-analytics-module-ga
+## 0.1.16-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.1.16-next.0
### Patch Changes
diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json
index 7ffe683955..7294b4c49c 100644
--- a/plugins/analytics-module-ga/package.json
+++ b/plugins/analytics-module-ga/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-analytics-module-ga",
- "version": "0.1.16-next.0",
+ "version": "0.1.16-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -24,9 +24,9 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/config": "^1.0.0",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -38,10 +38,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json
index adc4f7c46a..bb0be9d439 100644
--- a/plugins/apache-airflow/package.json
+++ b/plugins/apache-airflow/package.json
@@ -23,8 +23,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.57",
@@ -36,10 +36,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/api-docs/CHANGELOG.md b/plugins/api-docs/CHANGELOG.md
index e9d356d758..1f02725733 100644
--- a/plugins/api-docs/CHANGELOG.md
+++ b/plugins/api-docs/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-api-docs
+## 0.8.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog@1.2.0-next.2
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.8.5-next.1
### Patch Changes
diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json
index 90416e4f4d..ddf837493b 100644
--- a/plugins/api-docs/package.json
+++ b/plugins/api-docs/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-api-docs",
"description": "A Backstage plugin that helps represent API entities in the frontend",
- "version": "0.8.5-next.1",
+ "version": "0.8.5-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,16 +34,17 @@
},
"dependencies": {
"@asyncapi/react-component": "1.0.0-next.38",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog": "^1.2.0-next.1",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog": "^1.2.0-next.2",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.57",
"graphiql": "^1.8.8",
+ "graphql-ws": "^5.4.1",
"graphql": "^16.0.0",
"isomorphic-form-data": "^2.0.0",
"react-router": "6.0.0-beta.0",
@@ -56,10 +57,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/app-backend/CHANGELOG.md b/plugins/app-backend/CHANGELOG.md
index 9a0ab7aae7..178cc23404 100644
--- a/plugins/app-backend/CHANGELOG.md
+++ b/plugins/app-backend/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-app-backend
+## 0.3.32-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/config-loader@1.1.1-next.1
+
## 0.3.32-next.0
### Patch Changes
diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json
index 88b4b43f1e..77bfbe63e6 100644
--- a/plugins/app-backend/package.json
+++ b/plugins/app-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-app-backend",
"description": "A Backstage backend plugin that serves the Backstage frontend app",
- "version": "0.3.32-next.0",
+ "version": "0.3.32-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,9 +33,9 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/config-loader": "^1.1.1-next.0",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/config-loader": "^1.1.1-next.1",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/types": "^1.0.0",
"@types/express": "^4.17.6",
"globby": "^11.0.0",
@@ -50,8 +50,8 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.24-next.0",
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/backend-test-utils": "^0.1.24-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
"@backstage/types": "^1.0.0",
"@types/supertest": "^2.0.8",
"mock-fs": "^5.1.0",
diff --git a/plugins/auth-backend/CHANGELOG.md b/plugins/auth-backend/CHANGELOG.md
index c80961d5e2..990afff744 100644
--- a/plugins/auth-backend/CHANGELOG.md
+++ b/plugins/auth-backend/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-auth-backend
+## 0.13.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/plugin-auth-node@0.2.1-next.1
+ - @backstage/catalog-client@1.0.2-next.0
+
## 0.13.1-next.1
### Patch Changes
diff --git a/plugins/auth-backend/api-report.md b/plugins/auth-backend/api-report.md
index a38197668e..bb25ff6d57 100644
--- a/plugins/auth-backend/api-report.md
+++ b/plugins/auth-backend/api-report.md
@@ -586,11 +586,7 @@ export class OAuthAdapter implements AuthProviderRouteHandlers {
handlers: OAuthHandlers,
options: Pick<
Options,
- | 'providerId'
- | 'persistScopes'
- | 'disableRefresh'
- | 'tokenIssuer'
- | 'callbackUrl'
+ 'providerId' | 'persistScopes' | 'tokenIssuer' | 'callbackUrl'
>,
): OAuthAdapter;
// (undocumented)
diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json
index 29c146963b..6ad4d4321f 100644
--- a/plugins/auth-backend/package.json
+++ b/plugins/auth-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-auth-backend",
"description": "A Backstage backend plugin that handles authentication",
- "version": "0.13.1-next.1",
+ "version": "0.13.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,11 +33,11 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/plugin-auth-node": "^0.2.1-next.0",
- "@backstage/backend-common": "^0.13.3-next.1",
- "@backstage/catalog-client": "^1.0.1",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/plugin-auth-node": "^0.2.1-next.1",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/catalog-client": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
"@backstage/types": "^1.0.0",
"@google-cloud/firestore": "^5.0.2",
@@ -76,8 +76,8 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.24-next.0",
- "@backstage/cli": "^0.17.1-next.1",
+ "@backstage/backend-test-utils": "^0.1.24-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/body-parser": "^1.19.0",
"@types/cookie-parser": "^1.4.2",
"@types/express-session": "^1.17.2",
diff --git a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts
index 0ce9dff66c..d6d346745a 100644
--- a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts
+++ b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts
@@ -60,7 +60,6 @@ describe('OAuthAdapter', () => {
const oAuthProviderOptions = {
providerId: 'test-provider',
secure: false,
- disableRefresh: true,
appOrigin: 'http://localhost:3000',
cookieDomain: 'example.com',
cookiePath: '/auth/test-provider',
@@ -110,7 +109,6 @@ describe('OAuthAdapter', () => {
it('sets the refresh cookie if refresh is enabled', async () => {
const oauthProvider = new OAuthAdapter(providerInstance, {
...oAuthProviderOptions,
- disableRefresh: false,
isOriginAllowed: () => false,
});
@@ -153,7 +151,6 @@ describe('OAuthAdapter', () => {
};
const oauthProvider = new OAuthAdapter(handlers, {
...oAuthProviderOptions,
- disableRefresh: false,
persistScopes: true,
});
@@ -238,36 +235,9 @@ describe('OAuthAdapter', () => {
);
});
- it('does not set the refresh cookie if refresh is disabled', async () => {
- const oauthProvider = new OAuthAdapter(providerInstance, {
- ...oAuthProviderOptions,
- disableRefresh: true,
- isOriginAllowed: () => false,
- });
-
- const mockRequest = {
- cookies: {
- 'test-provider-nonce': 'nonce',
- },
- query: {
- state: 'nonce',
- },
- } as unknown as express.Request;
-
- const mockResponse = {
- cookie: jest.fn().mockReturnThis(),
- setHeader: jest.fn().mockReturnThis(),
- end: jest.fn().mockReturnThis(),
- } as unknown as express.Response;
-
- await oauthProvider.frameHandler(mockRequest, mockResponse);
- expect(mockResponse.cookie).toHaveBeenCalledTimes(0);
- });
-
it('removes refresh cookie when logging out', async () => {
const oauthProvider = new OAuthAdapter(providerInstance, {
...oAuthProviderOptions,
- disableRefresh: false,
isOriginAllowed: () => false,
});
@@ -292,10 +262,8 @@ describe('OAuthAdapter', () => {
});
it('gets new access-token when refreshing', async () => {
- oAuthProviderOptions.disableRefresh = false;
const oauthProvider = new OAuthAdapter(providerInstance, {
...oAuthProviderOptions,
- disableRefresh: false,
isOriginAllowed: () => false,
});
@@ -327,26 +295,6 @@ describe('OAuthAdapter', () => {
});
});
- it('handles refresh without capabilities', async () => {
- const oauthProvider = new OAuthAdapter(providerInstance, {
- ...oAuthProviderOptions,
- disableRefresh: true,
- isOriginAllowed: () => false,
- });
-
- const mockRequest = {
- header: () => 'XMLHttpRequest',
- } as unknown as express.Request;
-
- const mockResponse = {} as unknown as express.Response;
-
- await expect(
- oauthProvider.refresh(mockRequest, mockResponse),
- ).rejects.toThrow(
- 'Refresh token is not supported for provider test-provider',
- );
- });
-
it('sets the correct cookie configuration using a callbackUrl', async () => {
const config = {
baseUrl: 'http://domain.org/auth',
diff --git a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts
index 637dc1cff2..5be4b7e3c0 100644
--- a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts
+++ b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts
@@ -48,7 +48,6 @@ export const TEN_MINUTES_MS = 600 * 1000;
export type Options = {
providerId: string;
secure: boolean;
- disableRefresh?: boolean;
persistScopes?: boolean;
cookieDomain: string;
cookiePath: string;
@@ -64,11 +63,7 @@ export class OAuthAdapter implements AuthProviderRouteHandlers {
handlers: OAuthHandlers,
options: Pick<
Options,
- | 'providerId'
- | 'persistScopes'
- | 'disableRefresh'
- | 'tokenIssuer'
- | 'callbackUrl'
+ 'providerId' | 'persistScopes' | 'tokenIssuer' | 'callbackUrl'
>,
): OAuthAdapter {
const { origin: appOrigin } = new URL(config.appUrl);
@@ -170,7 +165,7 @@ export class OAuthAdapter implements AuthProviderRouteHandlers {
response.providerInfo.scope = state.scope;
}
- if (refreshToken && !this.options.disableRefresh) {
+ if (refreshToken) {
// set new refresh token
this.setRefreshTokenCookie(res, refreshToken);
}
@@ -210,7 +205,7 @@ export class OAuthAdapter implements AuthProviderRouteHandlers {
throw new AuthenticationError('Invalid X-Requested-With header');
}
- if (!this.handlers.refresh || this.options.disableRefresh) {
+ if (!this.handlers.refresh) {
throw new InputError(
`Refresh token is not supported for provider ${this.options.providerId}`,
);
diff --git a/plugins/auth-backend/src/providers/auth0/provider.ts b/plugins/auth-backend/src/providers/auth0/provider.ts
index 3181314540..9ddd587508 100644
--- a/plugins/auth-backend/src/providers/auth0/provider.ts
+++ b/plugins/auth-backend/src/providers/auth0/provider.ts
@@ -243,7 +243,6 @@ export const auth0 = createAuthProviderIntegration({
});
return OAuthAdapter.fromConfig(globalConfig, provider, {
- disableRefresh: true,
providerId,
callbackUrl,
});
diff --git a/plugins/auth-backend/src/providers/bitbucket/provider.ts b/plugins/auth-backend/src/providers/bitbucket/provider.ts
index 905181333a..5b9919764b 100644
--- a/plugins/auth-backend/src/providers/bitbucket/provider.ts
+++ b/plugins/auth-backend/src/providers/bitbucket/provider.ts
@@ -261,7 +261,6 @@ export const bitbucket = createAuthProviderIntegration({
});
return OAuthAdapter.fromConfig(globalConfig, provider, {
- disableRefresh: false,
providerId,
callbackUrl,
});
diff --git a/plugins/auth-backend/src/providers/gitlab/provider.ts b/plugins/auth-backend/src/providers/gitlab/provider.ts
index 23867f6990..868357bcda 100644
--- a/plugins/auth-backend/src/providers/gitlab/provider.ts
+++ b/plugins/auth-backend/src/providers/gitlab/provider.ts
@@ -248,7 +248,6 @@ export const gitlab = createAuthProviderIntegration({
});
return OAuthAdapter.fromConfig(globalConfig, provider, {
- disableRefresh: false,
providerId,
callbackUrl,
});
diff --git a/plugins/auth-backend/src/providers/google/provider.ts b/plugins/auth-backend/src/providers/google/provider.ts
index 233e28f750..2d58bc2aa6 100644
--- a/plugins/auth-backend/src/providers/google/provider.ts
+++ b/plugins/auth-backend/src/providers/google/provider.ts
@@ -238,7 +238,6 @@ export const google = createAuthProviderIntegration({
});
return OAuthAdapter.fromConfig(globalConfig, provider, {
- disableRefresh: false,
providerId,
callbackUrl,
});
diff --git a/plugins/auth-backend/src/providers/microsoft/provider.ts b/plugins/auth-backend/src/providers/microsoft/provider.ts
index 0a4b67d667..0c58049619 100644
--- a/plugins/auth-backend/src/providers/microsoft/provider.ts
+++ b/plugins/auth-backend/src/providers/microsoft/provider.ts
@@ -267,7 +267,6 @@ export const microsoft = createAuthProviderIntegration({
});
return OAuthAdapter.fromConfig(globalConfig, provider, {
- disableRefresh: false,
providerId,
callbackUrl,
});
diff --git a/plugins/auth-backend/src/providers/oauth2/provider.ts b/plugins/auth-backend/src/providers/oauth2/provider.ts
index 8e0250cf2f..6b4787e985 100644
--- a/plugins/auth-backend/src/providers/oauth2/provider.ts
+++ b/plugins/auth-backend/src/providers/oauth2/provider.ts
@@ -43,6 +43,7 @@ import {
SignInResolver,
} from '../types';
import { createAuthProviderIntegration } from '../createAuthProviderIntegration';
+import { InputError } from '@backstage/errors';
type PrivateInfo = {
refreshToken: string;
@@ -56,6 +57,7 @@ export type OAuth2AuthProviderOptions = OAuthProviderOptions & {
scope?: string;
resolverContext: AuthResolverContext;
includeBasicAuth?: boolean;
+ disableRefresh?: boolean;
};
export class OAuth2AuthProvider implements OAuthHandlers {
@@ -63,11 +65,13 @@ export class OAuth2AuthProvider implements OAuthHandlers {
private readonly signInResolver?: SignInResolver;
private readonly authHandler: AuthHandler;
private readonly resolverContext: AuthResolverContext;
+ private readonly disableRefresh: boolean;
constructor(options: OAuth2AuthProviderOptions) {
this.signInResolver = options.signInResolver;
this.authHandler = options.authHandler;
this.resolverContext = options.resolverContext;
+ this.disableRefresh = options.disableRefresh ?? false;
this._strategy = new OAuth2Strategy(
{
@@ -132,6 +136,9 @@ export class OAuth2AuthProvider implements OAuthHandlers {
}
async refresh(req: OAuthRefreshRequest) {
+ if (this.disableRefresh) {
+ throw new InputError('Session refreshes have been disabled');
+ }
const refreshTokenResponse = await executeRefreshTokenStrategy(
this._strategy,
req.refreshToken,
@@ -243,10 +250,10 @@ export const oauth2 = createAuthProviderIntegration({
scope,
includeBasicAuth,
resolverContext,
+ disableRefresh,
});
return OAuthAdapter.fromConfig(globalConfig, provider, {
- disableRefresh,
providerId,
callbackUrl,
});
diff --git a/plugins/auth-backend/src/providers/oidc/provider.ts b/plugins/auth-backend/src/providers/oidc/provider.ts
index aba9048cc7..69a65d1cae 100644
--- a/plugins/auth-backend/src/providers/oidc/provider.ts
+++ b/plugins/auth-backend/src/providers/oidc/provider.ts
@@ -262,7 +262,6 @@ export const oidc = createAuthProviderIntegration({
});
return OAuthAdapter.fromConfig(globalConfig, provider, {
- disableRefresh: false,
providerId,
callbackUrl,
});
diff --git a/plugins/auth-backend/src/providers/okta/provider.ts b/plugins/auth-backend/src/providers/okta/provider.ts
index 4e05ff4487..98cec6df3a 100644
--- a/plugins/auth-backend/src/providers/okta/provider.ts
+++ b/plugins/auth-backend/src/providers/okta/provider.ts
@@ -271,7 +271,6 @@ export const okta = createAuthProviderIntegration({
});
return OAuthAdapter.fromConfig(globalConfig, provider, {
- disableRefresh: false,
providerId,
callbackUrl,
});
diff --git a/plugins/auth-backend/src/providers/onelogin/provider.ts b/plugins/auth-backend/src/providers/onelogin/provider.ts
index 7dcc6455ac..d81eb3d83c 100644
--- a/plugins/auth-backend/src/providers/onelogin/provider.ts
+++ b/plugins/auth-backend/src/providers/onelogin/provider.ts
@@ -238,7 +238,6 @@ export const onelogin = createAuthProviderIntegration({
});
return OAuthAdapter.fromConfig(globalConfig, provider, {
- disableRefresh: false,
providerId,
callbackUrl,
});
diff --git a/plugins/auth-node/CHANGELOG.md b/plugins/auth-node/CHANGELOG.md
index 5dab72f4a8..d45e7974be 100644
--- a/plugins/auth-node/CHANGELOG.md
+++ b/plugins/auth-node/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-auth-node
+## 0.2.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+
## 0.2.1-next.0
### Patch Changes
diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json
index cde2a15691..75ae1cdfd6 100644
--- a/plugins/auth-node/package.json
+++ b/plugins/auth-node/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-auth-node",
- "version": "0.2.1-next.0",
+ "version": "0.2.1-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,15 +23,15 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
"jose": "^4.6.0",
"node-fetch": "^2.6.7",
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"lodash": "^4.17.21",
"msw": "^0.35.0",
"uuid": "^8.0.0"
diff --git a/plugins/azure-devops-backend/CHANGELOG.md b/plugins/azure-devops-backend/CHANGELOG.md
index 4c839ac65e..949fbb286a 100644
--- a/plugins/azure-devops-backend/CHANGELOG.md
+++ b/plugins/azure-devops-backend/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-azure-devops-backend
+## 0.3.11-next.1
+
+### Patch Changes
+
+- ac14fcaf38: Added entity view for Azure Git Tags, based on existing Pull Requests view
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-azure-devops-common@0.2.3-next.0
+
## 0.3.11-next.0
### Patch Changes
diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json
index 64e671a109..931fc60358 100644
--- a/plugins/azure-devops-backend/package.json
+++ b/plugins/azure-devops-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-azure-devops-backend",
- "version": "0.3.11-next.0",
+ "version": "0.3.11-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,9 +23,9 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/config": "^1.0.0",
- "@backstage/plugin-azure-devops-common": "^0.2.2",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/plugin-azure-devops-common": "^0.2.3-next.0",
"@types/express": "^4.17.6",
"azure-devops-node-api": "^11.0.1",
"express": "^4.17.1",
@@ -35,7 +35,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/supertest": "^2.0.8",
"supertest": "^6.1.6",
"msw": "^0.35.0"
diff --git a/plugins/azure-devops-common/CHANGELOG.md b/plugins/azure-devops-common/CHANGELOG.md
index 65eaa862fb..34252134b2 100644
--- a/plugins/azure-devops-common/CHANGELOG.md
+++ b/plugins/azure-devops-common/CHANGELOG.md
@@ -1,5 +1,11 @@
# @backstage/plugin-azure-devops-common
+## 0.2.3-next.0
+
+### Patch Changes
+
+- ac14fcaf38: Added entity view for Azure Git Tags, based on existing Pull Requests view
+
## 0.2.2
### Patch Changes
diff --git a/plugins/azure-devops-common/package.json b/plugins/azure-devops-common/package.json
index 372d9cc0bb..70ec41433d 100644
--- a/plugins/azure-devops-common/package.json
+++ b/plugins/azure-devops-common/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-azure-devops-common",
- "version": "0.2.2",
+ "version": "0.2.3-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -32,7 +32,7 @@
"clean": "backstage-cli package clean"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0"
+ "@backstage/cli": "^0.17.1-next.2"
},
"files": [
"dist"
diff --git a/plugins/azure-devops/CHANGELOG.md b/plugins/azure-devops/CHANGELOG.md
index 2b055926ed..465fe3adf2 100644
--- a/plugins/azure-devops/CHANGELOG.md
+++ b/plugins/azure-devops/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-azure-devops
+## 0.1.21-next.2
+
+### Patch Changes
+
+- ac14fcaf38: Added entity view for Azure Git Tags, based on existing Pull Requests view
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-azure-devops-common@0.2.3-next.0
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.1.21-next.1
### Patch Changes
diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json
index 5e5f8b38c3..e616fa3b75 100644
--- a/plugins/azure-devops/package.json
+++ b/plugins/azure-devops/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-azure-devops",
- "version": "0.1.21-next.1",
+ "version": "0.1.21-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,12 +30,12 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-azure-devops-common": "^0.2.2",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/plugin-azure-devops-common": "^0.2.3-next.0",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -49,10 +49,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/badges-backend/CHANGELOG.md b/plugins/badges-backend/CHANGELOG.md
index a13e31105a..5912bba1df 100644
--- a/plugins/badges-backend/CHANGELOG.md
+++ b/plugins/badges-backend/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-badges-backend
+## 0.1.26-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/catalog-client@1.0.2-next.0
+
## 0.1.26-next.0
### Patch Changes
diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json
index 6a2c2373a0..f889bd381d 100644
--- a/plugins/badges-backend/package.json
+++ b/plugins/badges-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-badges-backend",
"description": "A Backstage backend plugin that generates README badges for your entities",
- "version": "0.1.26-next.0",
+ "version": "0.1.26-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,10 +34,10 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/catalog-client": "^1.0.1",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/catalog-client": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
"@types/express": "^4.17.6",
"badge-maker": "^3.3.0",
@@ -48,7 +48,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/supertest": "^2.0.8",
"supertest": "^6.1.3"
},
diff --git a/plugins/badges/CHANGELOG.md b/plugins/badges/CHANGELOG.md
index 77ae443daa..d7b26ff7cb 100644
--- a/plugins/badges/CHANGELOG.md
+++ b/plugins/badges/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-badges
+## 0.2.29-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.2.29-next.1
### Patch Changes
diff --git a/plugins/badges/package.json b/plugins/badges/package.json
index 52dd8651e5..8e557f45e1 100644
--- a/plugins/badges/package.json
+++ b/plugins/badges/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-badges",
"description": "A Backstage plugin that generates README badges for your entities",
- "version": "0.2.29-next.1",
+ "version": "0.2.29-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,11 +30,11 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -46,10 +46,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/bazaar-backend/CHANGELOG.md b/plugins/bazaar-backend/CHANGELOG.md
index b00a693709..fbf5fc39ed 100644
--- a/plugins/bazaar-backend/CHANGELOG.md
+++ b/plugins/bazaar-backend/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-bazaar-backend
+## 0.1.16-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/backend-test-utils@0.1.24-next.1
+
## 0.1.16-next.0
### Patch Changes
diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json
index 642aed27de..5ce51333cf 100644
--- a/plugins/bazaar-backend/package.json
+++ b/plugins/bazaar-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-bazaar-backend",
- "version": "0.1.16-next.0",
+ "version": "0.1.16-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,9 +23,9 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/backend-test-utils": "^0.1.24-next.0",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/backend-test-utils": "^0.1.24-next.1",
+ "@backstage/config": "^1.0.1-next.0",
"@types/express": "^4.17.6",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
@@ -34,7 +34,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0"
+ "@backstage/cli": "^0.17.1-next.2"
},
"files": [
"dist",
diff --git a/plugins/bazaar/CHANGELOG.md b/plugins/bazaar/CHANGELOG.md
index cacbc6a18b..0f906ca5b3 100644
--- a/plugins/bazaar/CHANGELOG.md
+++ b/plugins/bazaar/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-bazaar
+## 0.1.20-next.2
+
+### Patch Changes
+
+- 84c9e35a2f: Exported the SortView component from the Bazaar plugin for use directly
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog@1.2.0-next.2
+ - @backstage/cli@0.17.1-next.2
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/catalog-client@1.0.2-next.0
+
## 0.1.20-next.1
### Patch Changes
diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json
index 47a4251fcc..f2e9132e91 100644
--- a/plugins/bazaar/package.json
+++ b/plugins/bazaar/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-bazaar",
- "version": "0.1.20-next.1",
+ "version": "0.1.20-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -24,13 +24,13 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-client": "^1.0.1",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog": "^1.2.0-next.1",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-client": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog": "^1.2.0-next.2",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@date-io/luxon": "1.x",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -47,8 +47,8 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/dev-utils": "^1.0.2-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/dev-utils": "^1.0.2-next.2",
"@testing-library/jest-dom": "^5.10.1",
"cross-fetch": "^3.1.5"
},
diff --git a/plugins/bitrise/CHANGELOG.md b/plugins/bitrise/CHANGELOG.md
index 89abda6363..8ce5b8baf5 100644
--- a/plugins/bitrise/CHANGELOG.md
+++ b/plugins/bitrise/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-bitrise
+## 0.1.32-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.1.32-next.1
### Patch Changes
diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json
index c9c95e48b7..d04831ab6d 100644
--- a/plugins/bitrise/package.json
+++ b/plugins/bitrise/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-bitrise",
"description": "A Backstage plugin that integrates towards Bitrise",
- "version": "0.1.32-next.1",
+ "version": "0.1.32-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -24,10 +24,10 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -43,10 +43,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/catalog-backend-module-aws/CHANGELOG.md b/plugins/catalog-backend-module-aws/CHANGELOG.md
index af45cafdca..04e486aaa6 100644
--- a/plugins/catalog-backend-module-aws/CHANGELOG.md
+++ b/plugins/catalog-backend-module-aws/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-catalog-backend-module-aws
+## 0.1.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/plugin-catalog-backend@1.1.2-next.2
+ - @backstage/backend-tasks@0.3.1-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/integration@1.2.0-next.1
+
## 0.1.5-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json
index 26947b8c50..62c30d304c 100644
--- a/plugins/catalog-backend-module-aws/package.json
+++ b/plugins/catalog-backend-module-aws/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-aws",
"description": "A Backstage catalog backend module that helps integrate towards AWS",
- "version": "0.1.5-next.0",
+ "version": "0.1.5-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,13 +33,13 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/backend-tasks": "^0.3.1-next.0",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/backend-tasks": "^0.3.1-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/plugin-catalog-backend": "^1.1.2-next.0",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/plugin-catalog-backend": "^1.1.2-next.2",
"@backstage/types": "^1.0.0",
"aws-sdk": "^2.840.0",
"lodash": "^4.17.21",
@@ -48,7 +48,7 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/lodash": "^4.14.151",
"aws-sdk-mock": "^5.2.1",
"yaml": "^1.9.2"
diff --git a/plugins/catalog-backend-module-azure/CHANGELOG.md b/plugins/catalog-backend-module-azure/CHANGELOG.md
index bbc54de859..ff0c8fe6e6 100644
--- a/plugins/catalog-backend-module-azure/CHANGELOG.md
+++ b/plugins/catalog-backend-module-azure/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-catalog-backend-module-azure
+## 0.1.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/plugin-catalog-backend@1.1.2-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/integration@1.2.0-next.1
+
## 0.1.3-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json
index b0482f6b5c..43833e0856 100644
--- a/plugins/catalog-backend-module-azure/package.json
+++ b/plugins/catalog-backend-module-azure/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-azure",
"description": "A Backstage catalog backend module that helps integrate towards Azure",
- "version": "0.1.3-next.0",
+ "version": "0.1.3-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,12 +33,12 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/plugin-catalog-backend": "^1.1.2-next.0",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/plugin-catalog-backend": "^1.1.2-next.2",
"@backstage/types": "^1.0.0",
"lodash": "^4.17.21",
"msw": "^0.35.0",
@@ -46,8 +46,8 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.24-next.0",
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/backend-test-utils": "^0.1.24-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/lodash": "^4.14.151"
},
"files": [
diff --git a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md
index d4e1d5cc17..161674dbc2 100644
--- a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md
+++ b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-catalog-backend-module-bitbucket
+## 0.1.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/plugin-catalog-backend@1.1.2-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/integration@1.2.0-next.1
+
## 0.1.3-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-bitbucket/package.json b/plugins/catalog-backend-module-bitbucket/package.json
index 89657ceb68..96f2cfd4de 100644
--- a/plugins/catalog-backend-module-bitbucket/package.json
+++ b/plugins/catalog-backend-module-bitbucket/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-bitbucket",
"description": "A Backstage catalog backend module that helps integrate towards Bitbucket",
- "version": "0.1.3-next.0",
+ "version": "0.1.3-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,12 +33,12 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/plugin-catalog-backend": "^1.1.2-next.0",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/plugin-catalog-backend": "^1.1.2-next.2",
"@backstage/types": "^1.0.0",
"lodash": "^4.17.21",
"msw": "^0.35.0",
@@ -46,8 +46,8 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.24-next.0",
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/backend-test-utils": "^0.1.24-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/lodash": "^4.14.151"
},
"files": [
diff --git a/plugins/catalog-backend-module-gerrit/CHANGELOG.md b/plugins/catalog-backend-module-gerrit/CHANGELOG.md
index b13c5336da..e48a8e00b5 100644
--- a/plugins/catalog-backend-module-gerrit/CHANGELOG.md
+++ b/plugins/catalog-backend-module-gerrit/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-catalog-backend-module-gerrit
+## 0.1.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/plugin-catalog-backend@1.1.2-next.2
+ - @backstage/backend-tasks@0.3.1-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/integration@1.2.0-next.1
+
## 0.1.0-next.1
### Patch Changes
diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json
index 96aa8c0849..6758ef752d 100644
--- a/plugins/catalog-backend-module-gerrit/package.json
+++ b/plugins/catalog-backend-module-gerrit/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-catalog-backend-module-gerrit",
- "version": "0.1.0-next.1",
+ "version": "0.1.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -28,13 +28,13 @@
"postpack": "backstage-cli package postpack"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.1",
- "@backstage/backend-tasks": "^0.3.1-next.0",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/backend-tasks": "^0.3.1-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/plugin-catalog-backend": "^1.1.2-next.1",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/plugin-catalog-backend": "^1.1.2-next.2",
"fs-extra": "10.1.0",
"msw": "^0.35.0",
"node-fetch": "^2.6.7",
@@ -42,8 +42,8 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.24-next.0",
- "@backstage/cli": "^0.17.1-next.1",
+ "@backstage/backend-test-utils": "^0.1.24-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/fs-extra": "^9.0.1"
},
"files": [
diff --git a/plugins/catalog-backend-module-github/CHANGELOG.md b/plugins/catalog-backend-module-github/CHANGELOG.md
index d377e95d42..b7a1a6e43c 100644
--- a/plugins/catalog-backend-module-github/CHANGELOG.md
+++ b/plugins/catalog-backend-module-github/CHANGELOG.md
@@ -1,5 +1,38 @@
# @backstage/plugin-catalog-backend-module-github
+## 0.1.3-next.1
+
+### Patch Changes
+
+- a7de43f648: `GitHubOrgEntityProvider.fromConfig` now supports a `schedule` option like other
+ entity providers, that makes it more convenient to leverage using the common
+ task scheduler.
+
+ If you want to use this in your own project, it is used something like the following:
+
+ ```ts
+ // In packages/backend/src/plugins/catalog.ts
+ builder.addEntityProvider(
+ GitHubOrgEntityProvider.fromConfig(env.config, {
+ id: 'production',
+ orgUrl: 'https://github.com/backstage',
+ schedule: env.scheduler.createScheduledTaskRunner({
+ frequency: { cron: '*/30 * * * *' },
+ timeout: { minutes: 10 },
+ }),
+ logger: env.logger,
+ }),
+ );
+ ```
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/plugin-catalog-backend@1.1.2-next.2
+ - @backstage/backend-tasks@0.3.1-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/integration@1.2.0-next.1
+
## 0.1.3-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json
index 0d143f755b..939be63591 100644
--- a/plugins/catalog-backend-module-github/package.json
+++ b/plugins/catalog-backend-module-github/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-github",
"description": "A Backstage catalog backend module that helps integrate towards GitHub",
- "version": "0.1.3-next.0",
+ "version": "0.1.3-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,13 +33,13 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/backend-tasks": "^0.3.1-next.0",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/backend-tasks": "^0.3.1-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/plugin-catalog-backend": "^1.1.2-next.0",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/plugin-catalog-backend": "^1.1.2-next.2",
"@backstage/types": "^1.0.0",
"@octokit/graphql": "^4.5.8",
"lodash": "^4.17.21",
@@ -49,8 +49,8 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.24-next.0",
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/backend-test-utils": "^0.1.24-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/lodash": "^4.14.151"
},
"files": [
diff --git a/plugins/catalog-backend-module-gitlab/CHANGELOG.md b/plugins/catalog-backend-module-gitlab/CHANGELOG.md
index 43aa9be970..d2d2b7668d 100644
--- a/plugins/catalog-backend-module-gitlab/CHANGELOG.md
+++ b/plugins/catalog-backend-module-gitlab/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-catalog-backend-module-gitlab
+## 0.1.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/plugin-catalog-backend@1.1.2-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/integration@1.2.0-next.1
+
## 0.1.3-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json
index 7e550d0a2f..c00c08c418 100644
--- a/plugins/catalog-backend-module-gitlab/package.json
+++ b/plugins/catalog-backend-module-gitlab/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-gitlab",
"description": "A Backstage catalog backend module that helps integrate towards GitLab",
- "version": "0.1.3-next.0",
+ "version": "0.1.3-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,12 +33,12 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/plugin-catalog-backend": "^1.1.2-next.0",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/plugin-catalog-backend": "^1.1.2-next.2",
"@backstage/types": "^1.0.0",
"lodash": "^4.17.21",
"msw": "^0.35.0",
@@ -46,8 +46,8 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.24-next.0",
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/backend-test-utils": "^0.1.24-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/lodash": "^4.14.151"
},
"files": [
diff --git a/plugins/catalog-backend-module-ldap/CHANGELOG.md b/plugins/catalog-backend-module-ldap/CHANGELOG.md
index 795219a005..ee08740928 100644
--- a/plugins/catalog-backend-module-ldap/CHANGELOG.md
+++ b/plugins/catalog-backend-module-ldap/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-catalog-backend-module-ldap
+## 0.4.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.1.2-next.2
+ - @backstage/backend-tasks@0.3.1-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+
## 0.4.3-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json
index 6d763662de..ff4a19a31a 100644
--- a/plugins/catalog-backend-module-ldap/package.json
+++ b/plugins/catalog-backend-module-ldap/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-ldap",
"description": "A Backstage catalog backend module that helps integrate towards LDAP",
- "version": "0.4.3-next.0",
+ "version": "0.4.3-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,11 +33,11 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/backend-tasks": "^0.3.1-next.0",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-tasks": "^0.3.1-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-catalog-backend": "^1.1.2-next.0",
+ "@backstage/plugin-catalog-backend": "^1.1.2-next.2",
"@backstage/types": "^1.0.0",
"@types/ldapjs": "^2.2.0",
"ldapjs": "^2.2.0",
@@ -46,7 +46,7 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/lodash": "^4.14.151"
},
"files": [
diff --git a/plugins/catalog-backend-module-msgraph/CHANGELOG.md b/plugins/catalog-backend-module-msgraph/CHANGELOG.md
index b0fe7bd39e..e61200908a 100644
--- a/plugins/catalog-backend-module-msgraph/CHANGELOG.md
+++ b/plugins/catalog-backend-module-msgraph/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-catalog-backend-module-msgraph
+## 0.3.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.1.2-next.2
+ - @backstage/backend-tasks@0.3.1-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+
## 0.3.2-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json
index 903260707b..245142846f 100644
--- a/plugins/catalog-backend-module-msgraph/package.json
+++ b/plugins/catalog-backend-module-msgraph/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-msgraph",
"description": "A Backstage catalog backend module that helps integrate towards Microsoft Graph",
- "version": "0.3.2-next.0",
+ "version": "0.3.2-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,10 +34,10 @@
},
"dependencies": {
"@azure/msal-node": "^1.1.0",
- "@backstage/backend-tasks": "^0.3.1-next.0",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
- "@backstage/plugin-catalog-backend": "^1.1.2-next.0",
+ "@backstage/backend-tasks": "^0.3.1-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/plugin-catalog-backend": "^1.1.2-next.2",
"@microsoft/microsoft-graph-types": "^2.6.0",
"@types/node-fetch": "^2.5.12",
"lodash": "^4.17.21",
@@ -48,9 +48,9 @@
"qs": "^6.9.4"
},
"devDependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/backend-test-utils": "^0.1.24-next.0",
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/backend-test-utils": "^0.1.24-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/lodash": "^4.14.151",
"msw": "^0.35.0"
},
diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md
index fe0fffb59d..e17dca6a79 100644
--- a/plugins/catalog-backend/CHANGELOG.md
+++ b/plugins/catalog-backend/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-catalog-backend
+## 1.1.2-next.2
+
+### Patch Changes
+
+- 16a40ac4c0: Fix wrong return type of the `isGroupEntity` function.
+- 2909746147: Updated parseEntityTransformParams to handle keys with '.' in them. This will allow for querying of entities based off annotations such as 'backstage.io/orgin-location' or other entity field keys that have '.' in them.
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/plugin-scaffolder-common@1.1.0-next.0
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-search-common@0.3.4-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/integration@1.2.0-next.1
+ - @backstage/plugin-permission-common@0.6.1-next.0
+ - @backstage/plugin-permission-node@0.6.1-next.1
+ - @backstage/catalog-client@1.0.2-next.0
+ - @backstage/plugin-catalog-common@1.0.2-next.0
+
## 1.1.2-next.1
### Patch Changes
diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json
index e22a5a85ed..feda0c290a 100644
--- a/plugins/catalog-backend/package.json
+++ b/plugins/catalog-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend",
"description": "The Backstage backend plugin that provides the Backstage catalog",
- "version": "1.1.2-next.1",
+ "version": "1.1.2-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,17 +34,17 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.1",
- "@backstage/catalog-client": "^1.0.1",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/catalog-client": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/plugin-catalog-common": "^1.0.1",
- "@backstage/plugin-permission-common": "^0.6.0",
- "@backstage/plugin-permission-node": "^0.6.1-next.0",
- "@backstage/plugin-scaffolder-common": "^1.0.1",
- "@backstage/plugin-search-common": "^0.3.3",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/plugin-catalog-common": "^1.0.2-next.0",
+ "@backstage/plugin-permission-common": "^0.6.1-next.0",
+ "@backstage/plugin-permission-node": "^0.6.1-next.1",
+ "@backstage/plugin-scaffolder-common": "^1.1.0-next.0",
+ "@backstage/plugin-search-common": "^0.3.4-next.0",
"@backstage/types": "^1.0.0",
"@types/express": "^4.17.6",
"codeowners-utils": "^1.0.2",
@@ -68,10 +68,10 @@
"zod": "^3.11.6"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.24-next.0",
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/plugin-permission-common": "^0.6.0",
- "@backstage/plugin-search-backend-node": "0.6.1-next.0",
+ "@backstage/backend-test-utils": "^0.1.24-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/plugin-permission-common": "^0.6.1-next.0",
+ "@backstage/plugin-search-backend-node": "0.6.1-next.1",
"@types/core-js": "^2.5.4",
"@types/git-url-parse": "^9.0.0",
"@types/lodash": "^4.14.151",
diff --git a/plugins/catalog-backend/src/service/request/parseEntityTransformParams.test.ts b/plugins/catalog-backend/src/service/request/parseEntityTransformParams.test.ts
index 1d5d41fc03..3dce579ae5 100644
--- a/plugins/catalog-backend/src/service/request/parseEntityTransformParams.test.ts
+++ b/plugins/catalog-backend/src/service/request/parseEntityTransformParams.test.ts
@@ -24,6 +24,11 @@ describe('parseEntityTransformParams', () => {
metadata: {
name: 'n',
tags: ['t1', 't2'],
+ annotations: {
+ 'example.test/url-like-key': 'ul1',
+ 'example.com/other-url-like-key': 'ul2',
+ 'other-example.test/next-url-like-key': 'ul3',
+ },
},
spec: {
type: 't',
@@ -61,7 +66,115 @@ describe('parseEntityTransformParams', () => {
parseEntityTransformParams({ fields: 'kind,metadata.name' })!(entity),
).toEqual({ kind: 'k', metadata: { name: 'n' } });
expect(parseEntityTransformParams({ fields: 'metadata' })!(entity)).toEqual(
- { metadata: { name: 'n', tags: ['t1', 't2'] } },
+ {
+ metadata: {
+ name: 'n',
+ tags: ['t1', 't2'],
+ annotations: {
+ 'example.test/url-like-key': 'ul1',
+ 'example.com/other-url-like-key': 'ul2',
+ 'other-example.test/next-url-like-key': 'ul3',
+ },
+ },
+ },
);
});
+
+ it('supports dot notated fields properly', () => {
+ expect(
+ parseEntityTransformParams({
+ fields: 'kind,metadata.annotations.example.com/other-url-like-key',
+ })!(entity),
+ ).toEqual({
+ kind: 'k',
+ metadata: { annotations: { 'example.com/other-url-like-key': 'ul2' } },
+ });
+ });
+
+ it('supports nested dot notated fields properly', () => {
+ entity.spec = {
+ ...entity.spec,
+ 'field-with.dot': 'fd1',
+ 'other-field-with.dot-also': {
+ subItem: 'fd2.sub',
+ 'subite.with/dot': 'fd2.sub.dot',
+ },
+ 'third-field-with.dot-again': 'fd3',
+ };
+
+ expect(
+ parseEntityTransformParams({
+ fields: 'kind,spec.other-field-with.dot-also',
+ })!(entity),
+ ).toEqual({
+ kind: 'k',
+ spec: {
+ 'other-field-with.dot-also': {
+ subItem: 'fd2.sub',
+ 'subite.with/dot': 'fd2.sub.dot',
+ },
+ },
+ });
+ expect(
+ parseEntityTransformParams({
+ fields: 'kind,spec.other-field-with.dot-also.subite.with/dot',
+ })!(entity),
+ ).toEqual({
+ kind: 'k',
+ spec: {
+ 'other-field-with.dot-also': {
+ 'subite.with/dot': 'fd2.sub.dot',
+ },
+ },
+ });
+ });
+
+ it('does not return a sub key if an incorrect longer key is requested', () => {
+ entity.spec = {
+ ...entity.spec,
+ strValue: 'st1',
+ boolValue: true,
+ numValue: 4,
+ arrValue: [4, 5],
+ nullValue: null,
+ undefValue: undefined,
+ 'field-with.dot': 'fd1',
+ };
+
+ expect(
+ parseEntityTransformParams({ fields: 'kind,spec.strValue.other' })!(
+ entity,
+ ),
+ ).toEqual({ kind: 'k' });
+ expect(
+ parseEntityTransformParams({ fields: 'kind,spec.boolValue.other' })!(
+ entity,
+ ),
+ ).toEqual({ kind: 'k' });
+ expect(
+ parseEntityTransformParams({ fields: 'kind,spec.numValue.other' })!(
+ entity,
+ ),
+ ).toEqual({ kind: 'k' });
+ expect(
+ parseEntityTransformParams({ fields: 'kind,spec.arrValue.other' })!(
+ entity,
+ ),
+ ).toEqual({ kind: 'k' });
+ expect(
+ parseEntityTransformParams({ fields: 'kind,spec.nullValue.other' })!(
+ entity,
+ ),
+ ).toEqual({ kind: 'k' });
+ expect(
+ parseEntityTransformParams({ fields: 'kind,spec.undefValue.other' })!(
+ entity,
+ ),
+ ).toEqual({ kind: 'k' });
+ expect(
+ parseEntityTransformParams({ fields: 'kind,spec.field-with.dot.other' })!(
+ entity,
+ ),
+ ).toEqual({ kind: 'k' });
+ });
});
diff --git a/plugins/catalog-backend/src/service/request/parseEntityTransformParams.ts b/plugins/catalog-backend/src/service/request/parseEntityTransformParams.ts
index 9935da07a8..cef6e5ef64 100644
--- a/plugins/catalog-backend/src/service/request/parseEntityTransformParams.ts
+++ b/plugins/catalog-backend/src/service/request/parseEntityTransformParams.ts
@@ -20,6 +20,22 @@ import lodash from 'lodash';
import { RecursivePartial } from '../../util/RecursivePartial';
import { parseStringsParam } from './common';
+function getPathArrayAndValue(input: Entity, field: string) {
+ return field.split('.').reduce(
+ ([pathArray, inputSubset], pathPart, index, fieldParts) => {
+ if (lodash.hasIn(inputSubset, pathPart)) {
+ return [pathArray.concat(pathPart), inputSubset[pathPart]];
+ } else if (fieldParts[index + 1] !== undefined) {
+ fieldParts[index + 1] = `${pathPart}.${fieldParts[index + 1]}`;
+ return [pathArray, inputSubset];
+ }
+
+ return [pathArray, undefined];
+ },
+ [[] as string[], input as any],
+ );
+}
+
export function parseEntityTransformParams(
params: Record,
): ((entity: Entity) => Entity) | undefined {
@@ -46,9 +62,10 @@ export function parseEntityTransformParams(
const output: RecursivePartial = {};
for (const field of fields) {
- const value = lodash.get(input, field);
+ const [pathArray, value] = getPathArrayAndValue(input, field);
+
if (value !== undefined) {
- lodash.set(output, field, value);
+ lodash.set(output, pathArray, value);
}
}
diff --git a/plugins/catalog-common/CHANGELOG.md b/plugins/catalog-common/CHANGELOG.md
index 6054a0f92b..afa07a96da 100644
--- a/plugins/catalog-common/CHANGELOG.md
+++ b/plugins/catalog-common/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-catalog-common
+## 1.0.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.6.1-next.0
+ - @backstage/search-common@0.3.4-next.0
+
## 1.0.1
### Patch Changes
diff --git a/plugins/catalog-common/package.json b/plugins/catalog-common/package.json
index 2ef638a106..0217179375 100644
--- a/plugins/catalog-common/package.json
+++ b/plugins/catalog-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-common",
"description": "Common functionalities for the catalog plugin",
- "version": "1.0.1",
+ "version": "1.0.2-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,11 +34,11 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/plugin-permission-common": "^0.6.0",
- "@backstage/search-common": "^0.3.3"
+ "@backstage/plugin-permission-common": "^0.6.1-next.0",
+ "@backstage/search-common": "^0.3.4-next.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0"
+ "@backstage/cli": "^0.17.1-next.2"
},
"files": [
"dist",
diff --git a/plugins/catalog-graph/CHANGELOG.md b/plugins/catalog-graph/CHANGELOG.md
index ace5bc9cbe..e93e233c91 100644
--- a/plugins/catalog-graph/CHANGELOG.md
+++ b/plugins/catalog-graph/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-catalog-graph
+## 0.2.17-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/catalog-client@1.0.2-next.0
+
## 0.2.17-next.1
### Patch Changes
diff --git a/plugins/catalog-graph/README.md b/plugins/catalog-graph/README.md
index 0034cf0c3b..33dee92935 100644
--- a/plugins/catalog-graph/README.md
+++ b/plugins/catalog-graph/README.md
@@ -83,3 +83,9 @@ To use the catalog graph plugin, you have to add some things to your Backstage a
```
+
+## Development
+
+Run `yarn` in the root of this plugin to install all dependencies and then `yarn start` to run a [development version](./dev/index.tsx) of this plugin.
+
+
diff --git a/plugins/catalog-graph/dev/index.tsx b/plugins/catalog-graph/dev/index.tsx
index 7d772702a1..1ef9f676de 100644
--- a/plugins/catalog-graph/dev/index.tsx
+++ b/plugins/catalog-graph/dev/index.tsx
@@ -13,14 +13,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { GetEntitiesResponse } from '@backstage/catalog-client';
import {
- Entity,
+ GetEntitiesResponse,
+ GetEntityFacetsRequest,
+ GetEntityFacetsResponse,
+} from '@backstage/catalog-client';
+import {
CompoundEntityRef,
DEFAULT_NAMESPACE,
+ Entity,
RELATION_API_CONSUMED_BY,
RELATION_API_PROVIDED_BY,
RELATION_CONSUMES_API,
+ RELATION_DEPENDENCY_OF,
+ RELATION_DEPENDS_ON,
RELATION_HAS_PART,
RELATION_OWNED_BY,
RELATION_OWNER_OF,
@@ -30,22 +36,24 @@ import {
} from '@backstage/catalog-model';
import { Content, Header, Page } from '@backstage/core-components';
import { createDevApp } from '@backstage/dev-utils';
+import { CatalogEntityPage } from '@backstage/plugin-catalog';
import {
CatalogApi,
catalogApiRef,
EntityProvider,
} from '@backstage/plugin-catalog-react';
+import { JsonObject } from '@backstage/types';
import { Grid } from '@material-ui/core';
+import _ from 'lodash';
import React from 'react';
import {
CatalogGraphPage,
catalogGraphPlugin,
EntityCatalogGraphCard,
} from '../src';
-import { CatalogEntityPage } from '@backstage/plugin-catalog';
type DataRelation = [string, string, string];
-type DataEntity = [string, string, DataRelation[]];
+type DataEntity = [string, string, DataRelation[], JsonObject?];
const entities = (
[
@@ -75,8 +83,19 @@ const entities = (
[RELATION_OWNED_BY, 'Group', 'team-a'],
[RELATION_PART_OF, 'System', 'wayback'],
[RELATION_PROVIDES_API, 'API', 'wayback-api'],
+ [RELATION_DEPENDS_ON, 'Resource', 'wayback-archive-storage'],
],
],
+ [
+ 'Resource',
+ 'wayback-archive-storage',
+ [
+ [RELATION_OWNED_BY, 'Group', 'team-a'],
+ [RELATION_PART_OF, 'System', 'wayback'],
+ [RELATION_DEPENDENCY_OF, 'Component', 'wayback-archive'],
+ ],
+ { type: 's3-bucket' },
+ ],
[
'Component',
'wayback-search',
@@ -84,8 +103,19 @@ const entities = (
[RELATION_OWNED_BY, 'Group', 'team-a'],
[RELATION_PART_OF, 'System', 'wayback'],
[RELATION_CONSUMES_API, 'API', 'wayback-api'],
+ [RELATION_DEPENDS_ON, 'Resource', 'wayback-search-db'],
],
],
+ [
+ 'Resource',
+ 'wayback-search-db',
+ [
+ [RELATION_OWNED_BY, 'Group', 'team-a'],
+ [RELATION_PART_OF, 'System', 'wayback'],
+ [RELATION_DEPENDENCY_OF, 'Component', 'wayback-search'],
+ ],
+ { type: 'database' },
+ ],
[
'API',
'wayback-api',
@@ -101,7 +131,9 @@ const entities = (
'team-a',
[
[RELATION_OWNER_OF, 'Component', 'wayback-archive'],
+ [RELATION_OWNER_OF, 'Resource', 'wayback-archive-storage'],
[RELATION_OWNER_OF, 'Component', 'wayback-search'],
+ [RELATION_OWNER_OF, 'Resource', 'wayback-search-db'],
[RELATION_OWNER_OF, 'API', 'wayback-api'],
[RELATION_OWNER_OF, 'Domain', 'wayback'],
[RELATION_OWNER_OF, 'System', 'wayback'],
@@ -109,7 +141,7 @@ const entities = (
],
] as DataEntity[]
).reduce((o, d) => {
- const [kind, name, relations] = d;
+ const [kind, name, relations, spec] = d;
const entity: Entity = {
apiVersion: 'backstage.io/v1alpha1',
@@ -117,6 +149,7 @@ const entities = (
metadata: {
name,
},
+ spec: spec,
relations: relations.map(([type, k, n]) => ({
target: { kind: k, name: n, namespace: DEFAULT_NAMESPACE },
targetRef: stringifyEntityRef({
@@ -149,6 +182,25 @@ createDevApp()
async getEntities(): Promise {
return { items: Object.values(entities) };
},
+ async getEntityFacets(
+ request: GetEntityFacetsRequest,
+ ): Promise {
+ if (request.facets.includes('kind')) {
+ const kinds: [string, number][] = _.chain(entities)
+ .map(e => e.kind)
+ .groupBy(k => k)
+ .mapValues(v => v.length)
+ .toPairs()
+ .value();
+ const kindFacet = kinds.map(([kind, count]) => ({
+ value: kind,
+ count: count,
+ }));
+
+ return { facets: { kind: kindFacet } };
+ }
+ return { facets: {} };
+ },
} as Partial as unknown as CatalogApi;
},
})
diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json
index 8b58b60225..79f98c06a7 100644
--- a/plugins/catalog-graph/package.json
+++ b/plugins/catalog-graph/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-catalog-graph",
- "version": "0.2.17-next.1",
+ "version": "0.2.17-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -24,11 +24,11 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-client": "^1.0.1",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-client": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -45,11 +45,12 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/plugin-catalog": "^1.2.0-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/plugin-catalog": "^1.2.0-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
+ "@backstage/types": "^1.0.0",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
diff --git a/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedKindsFilter.test.tsx b/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedKindsFilter.test.tsx
index 233553620a..e7bf10216f 100644
--- a/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedKindsFilter.test.tsx
+++ b/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedKindsFilter.test.tsx
@@ -109,7 +109,7 @@ describe('', () => {
);
await userEvent.click(getByRole('combobox'));
- userEvent.tab();
+ await userEvent.tab();
await waitFor(() => {
expect(onChange).toBeCalledWith(undefined);
diff --git a/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedRelationsFilter.test.tsx b/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedRelationsFilter.test.tsx
index 8d5acf282c..6bd740ac9e 100644
--- a/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedRelationsFilter.test.tsx
+++ b/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedRelationsFilter.test.tsx
@@ -101,7 +101,7 @@ describe('', () => {
);
await userEvent.click(getByRole('combobox'));
- userEvent.tab();
+ await userEvent.tab();
await waitFor(() => {
expect(onChange).toBeCalledWith(undefined);
diff --git a/plugins/catalog-graphql/CHANGELOG.md b/plugins/catalog-graphql/CHANGELOG.md
index 89601ac921..a7f94802eb 100644
--- a/plugins/catalog-graphql/CHANGELOG.md
+++ b/plugins/catalog-graphql/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-catalog-graphql
+## 0.3.9-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+
## 0.3.8
### Patch Changes
diff --git a/plugins/catalog-graphql/package.json b/plugins/catalog-graphql/package.json
index ea14466192..146eaf9935 100644
--- a/plugins/catalog-graphql/package.json
+++ b/plugins/catalog-graphql/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-graphql",
"description": "An experimental Backstage catalog GraphQL module",
- "version": "0.3.8",
+ "version": "0.3.9-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,8 +34,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/types": "^1.0.0",
"apollo-server": "^3.0.0",
"graphql": "^16.0.0",
@@ -46,8 +46,8 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@graphql-codegen/cli": "^2.3.1",
"@graphql-codegen/graphql-modules-preset": "^2.3.2",
"@graphql-codegen/typescript": "^2.4.2",
diff --git a/plugins/catalog-import/CHANGELOG.md b/plugins/catalog-import/CHANGELOG.md
index 0f6bcf96e5..13ec75945d 100644
--- a/plugins/catalog-import/CHANGELOG.md
+++ b/plugins/catalog-import/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-catalog-import
+## 0.8.8-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/integration@1.2.0-next.1
+ - @backstage/integration-react@1.1.0-next.2
+ - @backstage/catalog-client@1.0.2-next.0
+
## 0.8.8-next.1
### Patch Changes
diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json
index 871893f106..3df0de7a07 100644
--- a/plugins/catalog-import/package.json
+++ b/plugins/catalog-import/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-import",
"description": "A Backstage plugin the helps you import entities into your catalog",
- "version": "0.8.8-next.1",
+ "version": "0.8.8-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,15 +34,15 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-client": "^1.0.1",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-client": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/integration-react": "^1.1.0-next.1",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/integration-react": "^1.1.0-next.2",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.57",
@@ -60,10 +60,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
diff --git a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.test.tsx b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.test.tsx
index 20b4bc986e..90a2987958 100644
--- a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.test.tsx
+++ b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.test.tsx
@@ -67,7 +67,7 @@ describe('', () => {
);
await act(async () => {
- userEvent.clear(getByLabelText('Main Field'));
+ await userEvent.clear(getByLabelText('Main Field'));
await userEvent.type(getByLabelText('Main Field'), 'My Text');
await userEvent.click(getByRole('button', { name: /submit/i }));
});
diff --git a/plugins/catalog-react/CHANGELOG.md b/plugins/catalog-react/CHANGELOG.md
index 8945566002..1f6654a96f 100644
--- a/plugins/catalog-react/CHANGELOG.md
+++ b/plugins/catalog-react/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-catalog-react
+## 1.1.0-next.2
+
+### Patch Changes
+
+- 57f41fb8d6: Make Menu item on filters accessible through keyboard
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/integration@1.2.0-next.1
+ - @backstage/plugin-permission-common@0.6.1-next.0
+ - @backstage/plugin-permission-react@0.4.1-next.1
+ - @backstage/catalog-client@1.0.2-next.0
+ - @backstage/plugin-catalog-common@1.0.2-next.0
+
## 1.1.0-next.1
### Patch Changes
diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json
index 7f84b21235..d1af6de9eb 100644
--- a/plugins/catalog-react/package.json
+++ b/plugins/catalog-react/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-react",
"description": "A frontend library that helps other Backstage plugins interact with the catalog",
- "version": "1.1.0-next.1",
+ "version": "1.1.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,15 +34,15 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/catalog-client": "^1.0.1",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-client": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.1",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/plugin-catalog-common": "^1.0.1",
- "@backstage/plugin-permission-common": "^0.6.0",
- "@backstage/plugin-permission-react": "^0.4.1-next.0",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/plugin-catalog-common": "^1.0.2-next.0",
+ "@backstage/plugin-permission-common": "^0.6.1-next.0",
+ "@backstage/plugin-permission-react": "^0.4.1-next.1",
"@backstage/theme": "^0.2.15",
"@backstage/types": "^1.0.0",
"@backstage/version-bridge": "^1.0.1",
@@ -63,11 +63,11 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-common": "^1.0.1",
- "@backstage/plugin-scaffolder-common": "^1.0.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-common": "^1.0.2-next.0",
+ "@backstage/plugin-scaffolder-common": "^1.1.0-next.0",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
diff --git a/plugins/catalog-react/src/components/InspectEntityDialog/components/common.tsx b/plugins/catalog-react/src/components/InspectEntityDialog/components/common.tsx
index 79a3c69955..d2bc6312dd 100644
--- a/plugins/catalog-react/src/components/InspectEntityDialog/components/common.tsx
+++ b/plugins/catalog-react/src/components/InspectEntityDialog/components/common.tsx
@@ -89,26 +89,30 @@ export function Container(props: {
);
}
+// Extracts a link from a value, if possible
+function findLink(value: string): string | undefined {
+ if (value.match(/^url:https?:\/\//)) {
+ return value.slice('url:'.length);
+ }
+ if (value.match(/^https?:\/\//)) {
+ return value;
+ }
+ return undefined;
+}
+
export function KeyValueListItem(props: {
indent?: boolean;
entry: [string, string];
}) {
const [key, value] = props.entry;
+ const link = findLink(value);
+
return (
{props.indent && }
- {value.substring(0, 4)}
- {value.substring(4)}
- >
- )
- }
+ secondary={link ? {value} : value}
/>
);
diff --git a/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx b/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx
index 8e8c1b24d7..464531a4d9 100644
--- a/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx
+++ b/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx
@@ -96,7 +96,13 @@ export function useEntityTypeFilter(): {
}
// Sort by facet count descending, so the most common types appear on top
- const newTypes = sortBy(facets, f => -f.count).map(f => f.value);
+ const newTypes = [
+ ...new Set(
+ sortBy(facets, f => -f.count).map(f =>
+ f.value.toLocaleLowerCase('en-US'),
+ ),
+ ),
+ ];
setAvailableTypes(newTypes);
// Update type filter to only valid values when the list of available types has changed
diff --git a/plugins/catalog/CHANGELOG.md b/plugins/catalog/CHANGELOG.md
index 960ebb9b16..3a61d54280 100644
--- a/plugins/catalog/CHANGELOG.md
+++ b/plugins/catalog/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-catalog
+## 1.2.0-next.2
+
+### Patch Changes
+
+- 2bcb0a0e2b: Sidebar NAV now includes aria-label. Component AboutField now uses h2 variant instead of subtitle2 (font properties unchanged)
+- 3a74e203a8: Updated search result components to support rendering content with highlighted matched terms
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-search-react@0.2.0-next.2
+ - @backstage/plugin-search-common@0.3.4-next.0
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/integration-react@1.1.0-next.2
+ - @backstage/catalog-client@1.0.2-next.0
+ - @backstage/plugin-catalog-common@1.0.2-next.0
+
## 1.2.0-next.1
### Patch Changes
diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md
index e8da88a4e1..556016941a 100644
--- a/plugins/catalog/api-report.md
+++ b/plugins/catalog/api-report.md
@@ -17,6 +17,7 @@ import { Observable } from '@backstage/types';
import { Overrides } from '@material-ui/core/styles/overrides';
import { default as React_2 } from 'react';
import { ReactNode } from 'react';
+import { ResultHighlight } from '@backstage/plugin-search-common';
import { RouteRef } from '@backstage/core-plugin-api';
import { StarredEntitiesApi } from '@backstage/plugin-catalog-react';
import { StorageApi } from '@backstage/core-plugin-api';
@@ -108,6 +109,8 @@ export function CatalogSearchResultListItem(
// @public
export interface CatalogSearchResultListItemProps {
+ // (undocumented)
+ highlight?: ResultHighlight;
// (undocumented)
result: IndexableDocument;
}
diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json
index 6d58e0fb4a..c78bcf5c20 100644
--- a/plugins/catalog/package.json
+++ b/plugins/catalog/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog",
"description": "The Backstage plugin for browsing the Backstage catalog",
- "version": "1.2.0-next.1",
+ "version": "1.2.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,15 +34,16 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-client": "^1.0.1",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-client": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
- "@backstage/integration-react": "^1.1.0-next.1",
- "@backstage/plugin-catalog-common": "^1.0.1",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
- "@backstage/plugin-search-common": "^0.3.3",
+ "@backstage/integration-react": "^1.1.0-next.2",
+ "@backstage/plugin-catalog-common": "^1.0.2-next.0",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
+ "@backstage/plugin-search-common": "^0.3.4-next.0",
+ "@backstage/plugin-search-react": "^0.2.0-next.2",
"@backstage/theme": "^0.2.15",
"@backstage/types": "^1.0.0",
"@material-ui/core": "^4.12.2",
@@ -60,11 +61,11 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/plugin-permission-react": "^0.4.1-next.0",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/plugin-permission-react": "^0.4.1-next.1",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/catalog/src/components/AboutCard/AboutField.tsx b/plugins/catalog/src/components/AboutCard/AboutField.tsx
index 6ceaa4fd7a..28c22bff37 100644
--- a/plugins/catalog/src/components/AboutCard/AboutField.tsx
+++ b/plugins/catalog/src/components/AboutCard/AboutField.tsx
@@ -66,7 +66,7 @@ export function AboutField(props: AboutFieldProps) {
);
return (
-
+
{label}
{content}
diff --git a/plugins/catalog/src/components/CatalogSearchResultListItem/CatalogSearchResultListItem.tsx b/plugins/catalog/src/components/CatalogSearchResultListItem/CatalogSearchResultListItem.tsx
index aeaa13e3fc..5ba9d09949 100644
--- a/plugins/catalog/src/components/CatalogSearchResultListItem/CatalogSearchResultListItem.tsx
+++ b/plugins/catalog/src/components/CatalogSearchResultListItem/CatalogSearchResultListItem.tsx
@@ -24,7 +24,11 @@ import {
makeStyles,
} from '@material-ui/core';
import { Link } from '@backstage/core-components';
-import { IndexableDocument } from '@backstage/plugin-search-common';
+import {
+ IndexableDocument,
+ ResultHighlight,
+} from '@backstage/plugin-search-common';
+import { HighlightedSearchResultText } from '@backstage/plugin-search-react';
const useStyles = makeStyles({
flexContainer: {
@@ -44,6 +48,7 @@ const useStyles = makeStyles({
*/
export interface CatalogSearchResultListItemProps {
result: IndexableDocument;
+ highlight?: ResultHighlight;
}
/** @public */
@@ -59,8 +64,28 @@ export function CatalogSearchResultListItem(
+ ) : (
+ result.title
+ )
+ }
+ secondary={
+ props.highlight?.fields.text ? (
+
+ ) : (
+ result.text
+ )
+ }
/>
{result.kind && }
diff --git a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md
index 1e227b30af..0f1ef038f4 100644
--- a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md
+++ b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-cicd-statistics-module-gitlab
+## 0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/plugin-cicd-statistics@0.1.7-next.2
+
## 0.1.1-next.1
### Patch Changes
diff --git a/plugins/cicd-statistics-module-gitlab/package.json b/plugins/cicd-statistics-module-gitlab/package.json
index beb0e61545..d95d00c89a 100644
--- a/plugins/cicd-statistics-module-gitlab/package.json
+++ b/plugins/cicd-statistics-module-gitlab/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-cicd-statistics-module-gitlab",
"description": "CI/CD Statistics plugin module; Gitlab CICD",
- "version": "0.1.1-next.1",
+ "version": "0.1.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -29,16 +29,16 @@
"postpack": "backstage-cli package postpack"
},
"dependencies": {
- "@backstage/plugin-cicd-statistics": "^0.1.7-next.1",
+ "@backstage/plugin-cicd-statistics": "^0.1.7-next.2",
"@gitbeaker/browser": "^35.6.0",
"@gitbeaker/core": "^35.6.0",
"luxon": "^2.0.2",
"p-limit": "^4.0.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/catalog-model": "^1.0.1"
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1"
+ "@backstage/cli": "^0.17.1-next.2"
},
"files": [
"dist"
diff --git a/plugins/cicd-statistics/CHANGELOG.md b/plugins/cicd-statistics/CHANGELOG.md
index 5646c0ad5c..95bb87ec3a 100644
--- a/plugins/cicd-statistics/CHANGELOG.md
+++ b/plugins/cicd-statistics/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-cicd-statistics
+## 0.1.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.1.7-next.1
### Patch Changes
diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json
index a62941123a..ec6297538f 100644
--- a/plugins/cicd-statistics/package.json
+++ b/plugins/cicd-statistics/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-cicd-statistics",
"description": "A frontend plugin visualizing CI/CD pipeline statistics (build time)",
- "version": "0.1.7-next.1",
+ "version": "0.1.7-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -37,9 +37,9 @@
"@types/luxon": "^2.0.5"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@date-io/luxon": "^1.3.13",
"@material-ui/core": "^4.9.13",
"@material-ui/icons": "^4.11.2",
diff --git a/plugins/circleci/CHANGELOG.md b/plugins/circleci/CHANGELOG.md
index 197935126d..00985b5591 100644
--- a/plugins/circleci/CHANGELOG.md
+++ b/plugins/circleci/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-circleci
+## 0.3.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.3.5-next.1
### Patch Changes
diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json
index f296fa22f2..7d59e52fe2 100644
--- a/plugins/circleci/package.json
+++ b/plugins/circleci/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-circleci",
"description": "A Backstage plugin that integrates towards Circle CI",
- "version": "0.3.5-next.1",
+ "version": "0.3.5-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -35,10 +35,10 @@
"postpack": "backstage-cli package postpack"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -55,10 +55,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/cloudbuild/CHANGELOG.md b/plugins/cloudbuild/CHANGELOG.md
index 7d1e777dfc..173e645b2c 100644
--- a/plugins/cloudbuild/CHANGELOG.md
+++ b/plugins/cloudbuild/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-cloudbuild
+## 0.3.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.3.5-next.1
### Patch Changes
diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json
index 7fa4117fd6..6d016c1352 100644
--- a/plugins/cloudbuild/package.json
+++ b/plugins/cloudbuild/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-cloudbuild",
"description": "A Backstage plugin that integrates towards Google Cloud Build",
- "version": "0.3.5-next.1",
+ "version": "0.3.5-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,10 +34,10 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -52,10 +52,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/code-climate/CHANGELOG.md b/plugins/code-climate/CHANGELOG.md
index 6e0f408913..5dfe97f9eb 100644
--- a/plugins/code-climate/CHANGELOG.md
+++ b/plugins/code-climate/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-code-climate
+## 0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.1.5-next.1
### Patch Changes
diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json
index ae7611d765..475f6aa9cc 100644
--- a/plugins/code-climate/package.json
+++ b/plugins/code-climate/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-code-climate",
- "version": "0.1.5-next.1",
+ "version": "0.1.5-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,10 +23,10 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -40,9 +40,9 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/code-coverage-backend/CHANGELOG.md b/plugins/code-coverage-backend/CHANGELOG.md
index 0f9ba24be9..060b54ffa3 100644
--- a/plugins/code-coverage-backend/CHANGELOG.md
+++ b/plugins/code-coverage-backend/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-code-coverage-backend
+## 0.1.30-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/integration@1.2.0-next.1
+ - @backstage/catalog-client@1.0.2-next.0
+
## 0.1.30-next.0
### Patch Changes
diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json
index 59e4592d7b..72e96238da 100644
--- a/plugins/code-coverage-backend/package.json
+++ b/plugins/code-coverage-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-code-coverage-backend",
"description": "A Backstage backend plugin that helps you keep track of your code coverage",
- "version": "0.1.30-next.0",
+ "version": "0.1.30-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,12 +23,12 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/catalog-client": "^1.0.1",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/catalog-client": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
+ "@backstage/integration": "^1.2.0-next.1",
"@types/express": "^4.17.6",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
@@ -39,7 +39,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/express-xml-bodyparser": "^0.3.2",
"@types/supertest": "^2.0.8",
"msw": "^0.35.0",
diff --git a/plugins/code-coverage/CHANGELOG.md b/plugins/code-coverage/CHANGELOG.md
index 012f602a89..6a8e7e048f 100644
--- a/plugins/code-coverage/CHANGELOG.md
+++ b/plugins/code-coverage/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-code-coverage
+## 0.1.32-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.1.32-next.1
### Patch Changes
diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json
index 2da750a86c..cbf0a18e68 100644
--- a/plugins/code-coverage/package.json
+++ b/plugins/code-coverage/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-code-coverage",
"description": "A Backstage plugin that helps you keep track of your code coverage",
- "version": "0.1.32-next.1",
+ "version": "0.1.32-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -24,12 +24,12 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -46,10 +46,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/codescene/CHANGELOG.md b/plugins/codescene/CHANGELOG.md
new file mode 100644
index 0000000000..84953448ba
--- /dev/null
+++ b/plugins/codescene/CHANGELOG.md
@@ -0,0 +1,14 @@
+# @backstage/plugin-codescene
+
+## 0.1.0-next.0
+
+### Minor Changes
+
+- 9bc6e9493f: Add CodeScene plugin
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json
index a28973c9c4..128d5200d2 100644
--- a/plugins/codescene/package.json
+++ b/plugins/codescene/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-codescene",
- "version": "0.0.0",
+ "version": "0.1.0-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -22,15 +22,15 @@
"postpack": "backstage-cli package postpack"
},
"dependencies": {
- "@backstage/config": "^1.0.0",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/core-components": "^0.9.4-next.1",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.9.10",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "^4.0.0-alpha.57",
- "rc-progress": "3.2.4",
+ "rc-progress": "3.3.2",
"react-router-dom": "6.0.0-beta.0",
"react-use": "^17.2.4"
},
@@ -38,13 +38,13 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.0",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
- "@testing-library/user-event": "^13.1.8",
+ "@testing-library/user-event": "^14.0.0",
"@types/jest": "*",
"@types/node": "*",
"msw": "^0.35.0",
diff --git a/plugins/config-schema/CHANGELOG.md b/plugins/config-schema/CHANGELOG.md
index a12bc24c8b..42649d9ca9 100644
--- a/plugins/config-schema/CHANGELOG.md
+++ b/plugins/config-schema/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-config-schema
+## 0.1.28-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.1.28-next.0
### Patch Changes
diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json
index d66abe1f58..0a4e160dc8 100644
--- a/plugins/config-schema/package.json
+++ b/plugins/config-schema/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-config-schema",
"description": "A Backstage plugin that lets you browse the configuration schema of your app",
- "version": "0.1.28-next.0",
+ "version": "0.1.28-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -24,9 +24,9 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/config": "^1.0.0",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
"@backstage/theme": "^0.2.15",
"@backstage/types": "^1.0.0",
@@ -41,10 +41,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/cost-insights/CHANGELOG.md b/plugins/cost-insights/CHANGELOG.md
index baf6da53ed..7a8fb7ef5d 100644
--- a/plugins/cost-insights/CHANGELOG.md
+++ b/plugins/cost-insights/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-cost-insights
+## 0.11.27-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.11.27-next.0
### Patch Changes
diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json
index ef1b9e2c63..b9dd30d439 100644
--- a/plugins/cost-insights/package.json
+++ b/plugins/cost-insights/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-cost-insights",
"description": "A Backstage plugin that helps you keep track of your cloud spend",
- "version": "0.11.27-next.0",
+ "version": "0.11.27-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,10 +34,10 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -60,10 +60,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/example-todo-list-backend/CHANGELOG.md b/plugins/example-todo-list-backend/CHANGELOG.md
new file mode 100644
index 0000000000..b7a1410e5f
--- /dev/null
+++ b/plugins/example-todo-list-backend/CHANGELOG.md
@@ -0,0 +1,10 @@
+# @internal/plugin-todo-list-backend
+
+## 1.0.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-auth-node@0.2.1-next.1
diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json
index 471a496fd8..5f82fb2113 100644
--- a/plugins/example-todo-list-backend/package.json
+++ b/plugins/example-todo-list-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@internal/plugin-todo-list-backend",
- "version": "1.0.0",
+ "version": "1.0.1-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -20,10 +20,10 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-auth-node": "^0.2.1-next.0",
+ "@backstage/plugin-auth-node": "^0.2.1-next.1",
"@types/express": "^4.17.6",
"cross-fetch": "^3.1.5",
"express": "^4.17.1",
@@ -33,7 +33,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/supertest": "^2.0.8",
"@types/uuid": "^8.0.0",
"msw": "^0.35.0",
diff --git a/plugins/example-todo-list-common/CHANGELOG.md b/plugins/example-todo-list-common/CHANGELOG.md
new file mode 100644
index 0000000000..5d7d4e5a65
--- /dev/null
+++ b/plugins/example-todo-list-common/CHANGELOG.md
@@ -0,0 +1,8 @@
+# @internal/plugin-todo-list-common
+
+## 1.0.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.6.1-next.0
diff --git a/plugins/example-todo-list-common/package.json b/plugins/example-todo-list-common/package.json
index 48619d7de5..7d2443a3ce 100644
--- a/plugins/example-todo-list-common/package.json
+++ b/plugins/example-todo-list-common/package.json
@@ -1,6 +1,6 @@
{
"name": "@internal/plugin-todo-list-common",
- "version": "1.0.0",
+ "version": "1.0.1-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,13 +23,13 @@
"postpack": "backstage-cli package postpack"
},
"dependencies": {
- "@backstage/plugin-permission-common": "^0.6.0"
+ "@backstage/plugin-permission-common": "^0.6.1-next.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@types/node": "^16.11.26",
"msw": "^0.35.0",
"cross-fetch": "^3.1.5"
diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json
index 93c0ef7c17..46a3789e62 100644
--- a/plugins/example-todo-list/package.json
+++ b/plugins/example-todo-list/package.json
@@ -21,8 +21,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -33,10 +33,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/explore/CHANGELOG.md b/plugins/explore/CHANGELOG.md
index c21c6f838d..edc1389481 100644
--- a/plugins/explore/CHANGELOG.md
+++ b/plugins/explore/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-explore
+## 0.3.36-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.3.36-next.1
### Patch Changes
diff --git a/plugins/explore/package.json b/plugins/explore/package.json
index d1dc142ef0..dcd190861e 100644
--- a/plugins/explore/package.json
+++ b/plugins/explore/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-explore",
"description": "A Backstage plugin for building an exploration page of your software ecosystem",
- "version": "0.3.36-next.1",
+ "version": "0.3.36-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,10 +34,10 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/plugin-explore-react": "^0.0.17-next.0",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
@@ -53,10 +53,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json
index 0e02fc7556..93dab0b183 100644
--- a/plugins/firehydrant/package.json
+++ b/plugins/firehydrant/package.json
@@ -25,8 +25,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/plugin-catalog-react": "^1.1.0-next.1",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
@@ -39,10 +39,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/fossa/CHANGELOG.md b/plugins/fossa/CHANGELOG.md
index 1d3beb2aba..2701e9cb07 100644
--- a/plugins/fossa/CHANGELOG.md
+++ b/plugins/fossa/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-fossa
+## 0.2.37-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.2.37-next.1
### Patch Changes
diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json
index 6b31188a1d..09e41c2e7f 100644
--- a/plugins/fossa/package.json
+++ b/plugins/fossa/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-fossa",
"description": "A Backstage plugin that integrates towards FOSSA",
- "version": "0.2.37-next.1",
+ "version": "0.2.37-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -35,11 +35,11 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -53,10 +53,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json
index a51066b7da..aff29d7e07 100644
--- a/plugins/gcp-projects/package.json
+++ b/plugins/gcp-projects/package.json
@@ -34,8 +34,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -47,10 +47,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json
index 1e2ccc7213..a3537c71c1 100644
--- a/plugins/git-release-manager/package.json
+++ b/plugins/git-release-manager/package.json
@@ -24,8 +24,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/integration": "^1.2.0-next.0",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
@@ -43,10 +43,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
diff --git a/plugins/git-release-manager/src/features/Features.test.tsx b/plugins/git-release-manager/src/features/Features.test.tsx
index 110c3e2351..a77dcfe9fc 100644
--- a/plugins/git-release-manager/src/features/Features.test.tsx
+++ b/plugins/git-release-manager/src/features/Features.test.tsx
@@ -72,7 +72,7 @@ describe('Features', () => {
: The source control system where releases reside in a practical sense. Read more about
{
- it('should render list of tools', async () => {
+ it('should render list of starred entities', async () => {
const mockedApi = new MockStarredEntitiesApi();
mockedApi.toggleStarred('component:default/mock-starred-entity');
mockedApi.toggleStarred('component:default/mock-starred-entity-2');
+ mockedApi.toggleStarred('component:default/mock-starred-entity-3');
- const { getByText } = await renderInTestApp(
-
+ const mockCatalogApi = {
+ getEntities: jest
+ .fn()
+ .mockImplementation(async () => ({ items: entities })),
+ };
+
+ const { getByText, queryByText } = await renderInTestApp(
+
,
{
@@ -40,12 +71,13 @@ describe('StarredEntitiesContent', () => {
);
expect(getByText('mock-starred-entity')).toBeInTheDocument();
- expect(getByText('mock-starred-entity-2')).toBeInTheDocument();
+ expect(getByText('Mock Starred Entity 2!')).toBeInTheDocument();
+ expect(queryByText('mock-starred-entity-3')).not.toBeInTheDocument();
expect(getByText('mock-starred-entity').closest('a')).toHaveAttribute(
'href',
'/catalog/default/component/mock-starred-entity',
);
- expect(getByText('mock-starred-entity-2').closest('a')).toHaveAttribute(
+ expect(getByText('Mock Starred Entity 2!').closest('a')).toHaveAttribute(
'href',
'/catalog/default/component/mock-starred-entity-2',
);
diff --git a/plugins/home/src/homePageComponents/StarredEntities/Content.tsx b/plugins/home/src/homePageComponents/StarredEntities/Content.tsx
index e82d915e3b..31fa00378e 100644
--- a/plugins/home/src/homePageComponents/StarredEntities/Content.tsx
+++ b/plugins/home/src/homePageComponents/StarredEntities/Content.tsx
@@ -15,12 +15,14 @@
*/
import {
+ catalogApiRef,
useStarredEntities,
+ entityRouteParams,
entityRouteRef,
} from '@backstage/plugin-catalog-react';
-import { parseEntityRef } from '@backstage/catalog-model';
-import { useRouteRef } from '@backstage/core-plugin-api';
-import { Link } from '@backstage/core-components';
+import { parseEntityRef, stringifyEntityRef } from '@backstage/catalog-model';
+import { useApi, useRouteRef } from '@backstage/core-plugin-api';
+import { Link, Progress, ResponseErrorPanel } from '@backstage/core-components';
import {
List,
ListItem,
@@ -32,6 +34,7 @@ import {
} from '@material-ui/core';
import StarIcon from '@material-ui/icons/Star';
import React from 'react';
+import useAsync from 'react-use/lib/useAsync';
/**
* A component to display a list of starred entities for the user.
@@ -39,9 +42,37 @@ import React from 'react';
* @public
*/
export const Content = () => {
+ const catalogApi = useApi(catalogApiRef);
const catalogEntityRoute = useRouteRef(entityRouteRef);
const { starredEntities, toggleStarredEntity } = useStarredEntities();
+ // Grab starred entities from catalog to ensure they still exist and also retrieve display titles
+ const entities = useAsync(async () => {
+ if (!starredEntities.size) {
+ return [];
+ }
+
+ const filter = [...starredEntities]
+ .map(ent => parseEntityRef(ent))
+ .map(ref => ({
+ kind: ref.kind,
+ 'metadata.namespace': ref.namespace,
+ 'metadata.name': ref.name,
+ }));
+
+ return (
+ await catalogApi.getEntities({
+ filter,
+ fields: [
+ 'kind',
+ 'metadata.namespace',
+ 'metadata.name',
+ 'metadata.title',
+ ],
+ })
+ ).items;
+ }, [catalogApi, starredEntities]);
+
if (starredEntities.size === 0)
return (
@@ -49,26 +80,40 @@ export const Content = () => {
);
- return (
+ if (entities.loading) {
+ return ;
+ }
+
+ return entities.error ? (
+
+ ) : (
- {Array.from(starredEntities).map(entity => (
-
-
-
-
-
-
- toggleStarredEntity(entity)}
- >
-
-
-
-
-
- ))}
+ {entities.value
+ ?.sort((a, b) =>
+ (a.metadata.title ?? a.metadata.name).localeCompare(
+ b.metadata.title ?? b.metadata.name,
+ ),
+ )
+ .map(entity => (
+
+
+
+
+
+
+ toggleStarredEntity(entity)}
+ >
+
+
+
+
+
+ ))}
);
};
diff --git a/plugins/home/src/homePageComponents/StarredEntities/StarredEntities.stories.tsx b/plugins/home/src/homePageComponents/StarredEntities/StarredEntities.stories.tsx
index 1b01820482..a5e05e56c1 100644
--- a/plugins/home/src/homePageComponents/StarredEntities/StarredEntities.stories.tsx
+++ b/plugins/home/src/homePageComponents/StarredEntities/StarredEntities.stories.tsx
@@ -17,6 +17,7 @@
import { HomePageStarredEntities } from '../../plugin';
import { wrapInTestApp, TestApiProvider } from '@backstage/test-utils';
import {
+ catalogApiRef,
starredEntitiesApiRef,
MockStarredEntitiesApi,
entityRouteRef,
@@ -30,12 +31,56 @@ starredEntitiesApi.toggleStarred('component:default/example-starred-entity-2');
starredEntitiesApi.toggleStarred('component:default/example-starred-entity-3');
starredEntitiesApi.toggleStarred('component:default/example-starred-entity-4');
+const entities = [
+ {
+ apiVersion: '1',
+ kind: 'Component',
+ metadata: {
+ name: 'mock-starred-entity',
+ title: 'Mock Starred Entity!',
+ },
+ },
+ {
+ apiVersion: '1',
+ kind: 'Component',
+ metadata: {
+ name: 'mock-starred-entity-2',
+ title: 'Mock Starred Entity 2!',
+ },
+ },
+ {
+ apiVersion: '1',
+ kind: 'Component',
+ metadata: {
+ name: 'mock-starred-entity-3',
+ title: 'Mock Starred Entity 3!',
+ },
+ },
+ {
+ apiVersion: '1',
+ kind: 'Component',
+ metadata: {
+ name: 'mock-starred-entity-4',
+ title: 'Mock Starred Entity 4!',
+ },
+ },
+];
+
+const mockCatalogApi = {
+ getEntities: async () => ({ items: entities }),
+};
+
export default {
title: 'Plugins/Home/Components/StarredEntities',
decorators: [
(Story: ComponentType<{}>) =>
wrapInTestApp(
-
+
,
{
diff --git a/plugins/ilert/CHANGELOG.md b/plugins/ilert/CHANGELOG.md
index c2d5675ff5..d89b8132c2 100644
--- a/plugins/ilert/CHANGELOG.md
+++ b/plugins/ilert/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-ilert
+## 0.1.31-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.1.31-next.1
### Patch Changes
diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json
index 149b135463..b40b2b9e0e 100644
--- a/plugins/ilert/package.json
+++ b/plugins/ilert/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-ilert",
"description": "A Backstage plugin that integrates towards iLert",
- "version": "0.1.31-next.1",
+ "version": "0.1.31-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -24,11 +24,11 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@date-io/luxon": "1.x",
"@material-ui/core": "^4.12.2",
@@ -43,10 +43,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/jenkins-backend/CHANGELOG.md b/plugins/jenkins-backend/CHANGELOG.md
index 10afcd6c33..e3d456650a 100644
--- a/plugins/jenkins-backend/CHANGELOG.md
+++ b/plugins/jenkins-backend/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-jenkins-backend
+## 0.1.22-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/plugin-auth-node@0.2.1-next.1
+ - @backstage/plugin-permission-common@0.6.1-next.0
+ - @backstage/catalog-client@1.0.2-next.0
+ - @backstage/plugin-jenkins-common@0.1.4-next.0
+
## 0.1.22-next.0
### Patch Changes
diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json
index 861c7fddd6..ee1dc4fada 100644
--- a/plugins/jenkins-backend/package.json
+++ b/plugins/jenkins-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-jenkins-backend",
"description": "A Backstage backend plugin that integrates towards Jenkins",
- "version": "0.1.22-next.0",
+ "version": "0.1.22-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -25,14 +25,14 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/catalog-client": "^1.0.1",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/catalog-client": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-auth-node": "^0.2.1-next.0",
- "@backstage/plugin-jenkins-common": "^0.1.3",
- "@backstage/plugin-permission-common": "^0.6.0",
+ "@backstage/plugin-auth-node": "^0.2.1-next.1",
+ "@backstage/plugin-jenkins-common": "^0.1.4-next.0",
+ "@backstage/plugin-permission-common": "^0.6.1-next.0",
"@types/express": "^4.17.6",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
@@ -41,7 +41,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/jenkins": "^0.23.1",
"@types/supertest": "^2.0.8",
"msw": "^0.35.0",
diff --git a/plugins/jenkins-common/CHANGELOG.md b/plugins/jenkins-common/CHANGELOG.md
index a5883d28f8..b47fb8b3a7 100644
--- a/plugins/jenkins-common/CHANGELOG.md
+++ b/plugins/jenkins-common/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-jenkins-common
+## 0.1.4-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.6.1-next.0
+ - @backstage/plugin-catalog-common@1.0.2-next.0
+
## 0.1.3
### Patch Changes
diff --git a/plugins/jenkins-common/package.json b/plugins/jenkins-common/package.json
index a8c04efef0..5e71854cf4 100644
--- a/plugins/jenkins-common/package.json
+++ b/plugins/jenkins-common/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-jenkins-common",
- "version": "0.1.3",
+ "version": "0.1.4-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -22,11 +22,11 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/plugin-catalog-common": "^1.0.1",
- "@backstage/plugin-permission-common": "^0.6.0"
+ "@backstage/plugin-catalog-common": "^1.0.2-next.0",
+ "@backstage/plugin-permission-common": "^0.6.1-next.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0"
+ "@backstage/cli": "^0.17.1-next.2"
},
"files": [
"dist"
diff --git a/plugins/jenkins/CHANGELOG.md b/plugins/jenkins/CHANGELOG.md
index f84dbdabcc..2f2b38f434 100644
--- a/plugins/jenkins/CHANGELOG.md
+++ b/plugins/jenkins/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-jenkins
+## 0.7.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/plugin-jenkins-common@0.1.4-next.0
+
## 0.7.4-next.1
### Patch Changes
diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json
index 9b9be06bf8..f77afe86e5 100644
--- a/plugins/jenkins/package.json
+++ b/plugins/jenkins/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-jenkins",
"description": "A Backstage plugin that integrates towards Jenkins",
- "version": "0.7.4-next.1",
+ "version": "0.7.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -35,12 +35,12 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
- "@backstage/plugin-jenkins-common": "^0.1.3",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
+ "@backstage/plugin-jenkins-common": "^0.1.4-next.0",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -54,10 +54,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/kafka-backend/CHANGELOG.md b/plugins/kafka-backend/CHANGELOG.md
index 61124c0c96..bafb8181b9 100644
--- a/plugins/kafka-backend/CHANGELOG.md
+++ b/plugins/kafka-backend/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-kafka-backend
+## 0.2.25-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+
## 0.2.25-next.0
### Patch Changes
diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json
index b3f3e0c880..68b8f24f59 100644
--- a/plugins/kafka-backend/package.json
+++ b/plugins/kafka-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-kafka-backend",
"description": "A Backstage backend plugin that integrates towards Kafka",
- "version": "0.2.25-next.0",
+ "version": "0.2.25-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -35,9 +35,9 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
"@types/express": "^4.17.6",
"express": "^4.17.1",
@@ -47,7 +47,7 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/jest-when": "^3.5.0",
"@types/lodash": "^4.14.151",
"jest-when": "^3.1.0",
diff --git a/plugins/kafka/CHANGELOG.md b/plugins/kafka/CHANGELOG.md
index 393b162761..ca0fe5925a 100644
--- a/plugins/kafka/CHANGELOG.md
+++ b/plugins/kafka/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-kafka
+## 0.3.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.3.5-next.1
### Patch Changes
diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json
index 73db72cbb3..e1c452496b 100644
--- a/plugins/kafka/package.json
+++ b/plugins/kafka/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-kafka",
"description": "A Backstage plugin that integrates towards Kafka",
- "version": "0.3.5-next.1",
+ "version": "0.3.5-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -24,10 +24,10 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -39,10 +39,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
diff --git a/plugins/kubernetes-backend/CHANGELOG.md b/plugins/kubernetes-backend/CHANGELOG.md
index d344d8c63d..cad2a5bcc3 100644
--- a/plugins/kubernetes-backend/CHANGELOG.md
+++ b/plugins/kubernetes-backend/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-kubernetes-backend
+## 0.5.1-next.2
+
+### Patch Changes
+
+- 447e060872: Add support for 'oidc' as authProvider for kubernetes authentication
+ and adds optional 'oidcTokenProvider' config value. This will allow
+ users to authenticate to kubernetes cluster using id tokens obtained
+ from the configured auth provider in their backstage instance.
+- Updated dependencies
+ - @backstage/plugin-kubernetes-common@0.2.10-next.1
+
+## 0.5.1-next.1
+
+### Patch Changes
+
+- 1ef98cfe48: add Azure Identity auth provider and AKS dashboard formatter
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/plugin-kubernetes-common@0.2.10-next.0
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+
## 0.5.1-next.0
### Patch Changes
diff --git a/plugins/kubernetes-backend/api-report.md b/plugins/kubernetes-backend/api-report.md
index 03682807e2..1a24e6e1cc 100644
--- a/plugins/kubernetes-backend/api-report.md
+++ b/plugins/kubernetes-backend/api-report.md
@@ -41,6 +41,7 @@ export interface ClusterDetails {
dashboardParameters?: JsonObject;
dashboardUrl?: string;
name: string;
+ oidcTokenProvider?: string | undefined;
// (undocumented)
serviceAccountToken?: string | undefined;
skipMetricsLookup?: boolean;
diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json
index 4d4cd8dfd0..8e2f143e7f 100644
--- a/plugins/kubernetes-backend/package.json
+++ b/plugins/kubernetes-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-kubernetes-backend",
"description": "A Backstage backend plugin that integrates towards Kubernetes",
- "version": "0.5.1-next.0",
+ "version": "0.5.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -36,11 +36,11 @@
},
"dependencies": {
"@azure/identity": "^2.0.4",
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-kubernetes-common": "^0.2.9",
+ "@backstage/plugin-kubernetes-common": "^0.2.10-next.1",
"@google-cloud/container": "^3.0.0",
"@kubernetes/client-node": "^0.16.0",
"@types/express": "^4.17.6",
@@ -61,7 +61,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/aws4": "^1.5.1",
"aws-sdk-mock": "^5.2.1",
"supertest": "^6.1.3"
diff --git a/plugins/kubernetes-backend/schema.d.ts b/plugins/kubernetes-backend/schema.d.ts
index c2ac017713..fed243ef17 100644
--- a/plugins/kubernetes-backend/schema.d.ts
+++ b/plugins/kubernetes-backend/schema.d.ts
@@ -52,7 +52,14 @@ export interface Config {
/** @visibility secret */
serviceAccountToken?: string;
/** @visibility frontend */
- authProvider: 'aws' | 'google' | 'serviceAccount' | 'azure';
+ authProvider:
+ | 'aws'
+ | 'google'
+ | 'serviceAccount'
+ | 'azure'
+ | 'oidc';
+ /** @visibility frontend */
+ oidcTokenProvider?: string;
/** @visibility frontend */
skipTLSVerify?: boolean;
}>;
diff --git a/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.ts b/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.ts
index 5598740873..de5cac6d8d 100644
--- a/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.ts
+++ b/plugins/kubernetes-backend/src/cluster-locator/ConfigClusterLocator.ts
@@ -64,6 +64,11 @@ export class ConfigClusterLocator implements KubernetesClustersSupplier {
case 'azure': {
return clusterDetails;
}
+ case 'oidc': {
+ const oidcTokenProvider = c.getString('oidcTokenProvider');
+
+ return { oidcTokenProvider, ...clusterDetails };
+ }
case 'serviceAccount': {
return clusterDetails;
}
diff --git a/plugins/kubernetes-backend/src/kubernetes-auth-translator/KubernetesAuthTranslatorGenerator.test.ts b/plugins/kubernetes-backend/src/kubernetes-auth-translator/KubernetesAuthTranslatorGenerator.test.ts
index 33592b1c41..b31443cdd1 100644
--- a/plugins/kubernetes-backend/src/kubernetes-auth-translator/KubernetesAuthTranslatorGenerator.test.ts
+++ b/plugins/kubernetes-backend/src/kubernetes-auth-translator/KubernetesAuthTranslatorGenerator.test.ts
@@ -19,6 +19,7 @@ import { GoogleKubernetesAuthTranslator } from './GoogleKubernetesAuthTranslator
import { KubernetesAuthTranslatorGenerator } from './KubernetesAuthTranslatorGenerator';
import { ServiceAccountKubernetesAuthTranslator } from './ServiceAccountKubernetesAuthTranslator';
import { AwsIamKubernetesAuthTranslator } from './AwsIamKubernetesAuthTranslator';
+import { OidcKubernetesAuthTranslator } from './OidcKubernetesAuthTranslator';
describe('getKubernetesAuthTranslatorInstance', () => {
const sut = KubernetesAuthTranslatorGenerator;
@@ -43,6 +44,12 @@ describe('getKubernetesAuthTranslatorInstance', () => {
).toBe(true);
});
+ it('can return an auth translator for oidc auth', () => {
+ const authTranslator: KubernetesAuthTranslator =
+ sut.getKubernetesAuthTranslatorInstance('oidc');
+ expect(authTranslator instanceof OidcKubernetesAuthTranslator).toBe(true);
+ });
+
it('throws an error when asked for an auth translator for an unsupported auth type', () => {
expect(() => sut.getKubernetesAuthTranslatorInstance('linode')).toThrow(
'authProvider "linode" has no KubernetesAuthTranslator associated with it',
diff --git a/plugins/kubernetes-backend/src/kubernetes-auth-translator/KubernetesAuthTranslatorGenerator.ts b/plugins/kubernetes-backend/src/kubernetes-auth-translator/KubernetesAuthTranslatorGenerator.ts
index e9a8a00ae9..4b17653359 100644
--- a/plugins/kubernetes-backend/src/kubernetes-auth-translator/KubernetesAuthTranslatorGenerator.ts
+++ b/plugins/kubernetes-backend/src/kubernetes-auth-translator/KubernetesAuthTranslatorGenerator.ts
@@ -20,6 +20,7 @@ import { ServiceAccountKubernetesAuthTranslator } from './ServiceAccountKubernet
import { AwsIamKubernetesAuthTranslator } from './AwsIamKubernetesAuthTranslator';
import { GoogleServiceAccountAuthTranslator } from './GoogleServiceAccountAuthProvider';
import { AzureIdentityKubernetesAuthTranslator } from './AzureIdentityKubernetesAuthTranslator';
+import { OidcKubernetesAuthTranslator } from './OidcKubernetesAuthTranslator';
export class KubernetesAuthTranslatorGenerator {
static getKubernetesAuthTranslatorInstance(
@@ -41,6 +42,9 @@ export class KubernetesAuthTranslatorGenerator {
case 'googleServiceAccount': {
return new GoogleServiceAccountAuthTranslator();
}
+ case 'oidc': {
+ return new OidcKubernetesAuthTranslator();
+ }
default: {
throw new Error(
`authProvider "${authProvider}" has no KubernetesAuthTranslator associated with it`,
diff --git a/plugins/kubernetes-backend/src/kubernetes-auth-translator/OidcKubernetesAuthTranslator.test.ts b/plugins/kubernetes-backend/src/kubernetes-auth-translator/OidcKubernetesAuthTranslator.test.ts
new file mode 100644
index 0000000000..9f983aedc3
--- /dev/null
+++ b/plugins/kubernetes-backend/src/kubernetes-auth-translator/OidcKubernetesAuthTranslator.test.ts
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2020 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 { OidcKubernetesAuthTranslator } from './OidcKubernetesAuthTranslator';
+import { ClusterDetails } from '../types/types';
+import { Entity } from '@backstage/catalog-model';
+
+describe('OidcKubernetesAuthTranslator tests', () => {
+ const at = new OidcKubernetesAuthTranslator();
+ const entity: Entity = {
+ apiVersion: 'v1',
+ kind: 'service',
+ metadata: { name: 'test' },
+ };
+ const baseClusterDetails: ClusterDetails = {
+ name: 'test',
+ authProvider: 'oidc',
+ url: '',
+ };
+
+ it('returns cluster details with auth token', async () => {
+ const details = await at.decorateClusterDetailsWithAuth(
+ {
+ oidcTokenProvider: 'okta',
+ ...baseClusterDetails,
+ },
+ {
+ auth: {
+ oidc: { okta: 'fakeToken' },
+ },
+ entity,
+ },
+ );
+
+ expect(details.serviceAccountToken).toBe('fakeToken');
+ });
+
+ it('returns error when oidcTokenProvider is not configured', async () => {
+ await expect(
+ at.decorateClusterDetailsWithAuth(baseClusterDetails, { entity }),
+ ).rejects.toThrow(
+ 'oidc authProvider requires a configured oidcTokenProvider',
+ );
+ });
+
+ it('returns error when token is not included in request body', async () => {
+ await expect(
+ at.decorateClusterDetailsWithAuth(
+ { oidcTokenProvider: 'okta', ...baseClusterDetails },
+ { entity },
+ ),
+ ).rejects.toThrow('Auth token not found under oidc.okta in request body');
+ });
+});
diff --git a/plugins/kubernetes-backend/src/kubernetes-auth-translator/OidcKubernetesAuthTranslator.ts b/plugins/kubernetes-backend/src/kubernetes-auth-translator/OidcKubernetesAuthTranslator.ts
new file mode 100644
index 0000000000..c53269abf3
--- /dev/null
+++ b/plugins/kubernetes-backend/src/kubernetes-auth-translator/OidcKubernetesAuthTranslator.ts
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2020 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 { KubernetesAuthTranslator } from './types';
+import { ClusterDetails } from '../types/types';
+import { KubernetesRequestBody } from '@backstage/plugin-kubernetes-common';
+
+export class OidcKubernetesAuthTranslator implements KubernetesAuthTranslator {
+ async decorateClusterDetailsWithAuth(
+ clusterDetails: ClusterDetails,
+ requestBody: KubernetesRequestBody,
+ ): Promise {
+ const clusterDetailsWithAuthToken: ClusterDetails = Object.assign(
+ {},
+ clusterDetails,
+ );
+
+ const { oidcTokenProvider } = clusterDetails;
+
+ if (!oidcTokenProvider || oidcTokenProvider === '') {
+ throw new Error(
+ `oidc authProvider requires a configured oidcTokenProvider`,
+ );
+ }
+
+ const authToken: string | undefined =
+ requestBody.auth?.oidc?.[oidcTokenProvider];
+
+ if (authToken) {
+ clusterDetailsWithAuthToken.serviceAccountToken = authToken;
+ } else {
+ throw new Error(
+ `Auth token not found under oidc.${oidcTokenProvider} in request body`,
+ );
+ }
+ return clusterDetailsWithAuthToken;
+ }
+}
diff --git a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts
index a3dfc8b005..18c3fdc931 100644
--- a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts
+++ b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts
@@ -246,6 +246,7 @@ export class KubernetesBuilder {
name: cd.name,
dashboardUrl: cd.dashboardUrl,
authProvider: cd.authProvider,
+ oidcTokenProvider: cd.oidcTokenProvider,
})),
});
});
diff --git a/plugins/kubernetes-backend/src/types/types.ts b/plugins/kubernetes-backend/src/types/types.ts
index 706582f439..e8665c57eb 100644
--- a/plugins/kubernetes-backend/src/types/types.ts
+++ b/plugins/kubernetes-backend/src/types/types.ts
@@ -105,6 +105,10 @@ export interface ClusterDetails {
url: string;
authProvider: string;
serviceAccountToken?: string | undefined;
+ /**
+ * oidc provider used to get id tokens to authenticate against kubernetes
+ */
+ oidcTokenProvider?: string | undefined;
skipTLSVerify?: boolean;
/**
* Whether to skip the lookup to the metrics server to retrieve pod resource usage.
diff --git a/plugins/kubernetes-common/CHANGELOG.md b/plugins/kubernetes-common/CHANGELOG.md
index 790cc9d3a7..cdc209f88f 100644
--- a/plugins/kubernetes-common/CHANGELOG.md
+++ b/plugins/kubernetes-common/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-kubernetes-common
+## 0.2.10-next.1
+
+### Patch Changes
+
+- 447e060872: Add support for 'oidc' as authProvider for kubernetes authentication
+ and adds optional 'oidcTokenProvider' config value. This will allow
+ users to authenticate to kubernetes cluster using id tokens obtained
+ from the configured auth provider in their backstage instance.
+
+## 0.2.10-next.0
+
+### Patch Changes
+
+- 1ef98cfe48: add Azure Identity auth provider and AKS dashboard formatter
+- Updated dependencies
+ - @backstage/catalog-model@1.0.2-next.0
+
## 0.2.9
### Patch Changes
diff --git a/plugins/kubernetes-common/api-report.md b/plugins/kubernetes-common/api-report.md
index 639c3f63c2..e6f96fa253 100644
--- a/plugins/kubernetes-common/api-report.md
+++ b/plugins/kubernetes-common/api-report.md
@@ -195,6 +195,9 @@ export interface KubernetesRequestBody {
// (undocumented)
auth?: {
google?: string;
+ oidc?: {
+ [key: string]: string;
+ };
};
// (undocumented)
entity: Entity;
diff --git a/plugins/kubernetes-common/package.json b/plugins/kubernetes-common/package.json
index e9158e640a..d250e82780 100644
--- a/plugins/kubernetes-common/package.json
+++ b/plugins/kubernetes-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-kubernetes-common",
"description": "Common functionalities for kubernetes, to be shared between kubernetes and kubernetes-backend plugin",
- "version": "0.2.9",
+ "version": "0.2.10-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -38,11 +38,11 @@
"url": "https://github.com/backstage/backstage/issues"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
"@kubernetes/client-node": "^0.16.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0"
+ "@backstage/cli": "^0.17.1-next.2"
},
"jest": {
"roots": [
diff --git a/plugins/kubernetes-common/src/types.ts b/plugins/kubernetes-common/src/types.ts
index cb388bad0a..9b7c89bbd0 100644
--- a/plugins/kubernetes-common/src/types.ts
+++ b/plugins/kubernetes-common/src/types.ts
@@ -31,6 +31,9 @@ import { Entity } from '@backstage/catalog-model';
export interface KubernetesRequestBody {
auth?: {
google?: string;
+ oidc?: {
+ [key: string]: string;
+ };
};
entity: Entity;
}
diff --git a/plugins/kubernetes/CHANGELOG.md b/plugins/kubernetes/CHANGELOG.md
index 628036cf01..dda45a0409 100644
--- a/plugins/kubernetes/CHANGELOG.md
+++ b/plugins/kubernetes/CHANGELOG.md
@@ -1,5 +1,30 @@
# @backstage/plugin-kubernetes
+## 0.6.5-next.3
+
+### Patch Changes
+
+- 447e060872: Add support for 'oidc' as authProvider for kubernetes authentication
+ and adds optional 'oidcTokenProvider' config value. This will allow
+ users to authenticate to kubernetes cluster using id tokens obtained
+ from the configured auth provider in their backstage instance.
+- Updated dependencies
+ - @backstage/plugin-kubernetes-common@0.2.10-next.1
+ - @backstage/core-components@0.9.4-next.2
+
+## 0.6.5-next.2
+
+### Patch Changes
+
+- 1ef98cfe48: add Azure Identity auth provider and AKS dashboard formatter
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-kubernetes-common@0.2.10-next.0
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.6.5-next.1
### Patch Changes
diff --git a/plugins/kubernetes/api-report.md b/plugins/kubernetes/api-report.md
index e8a3da83a9..99bee06165 100644
--- a/plugins/kubernetes/api-report.md
+++ b/plugins/kubernetes/api-report.md
@@ -17,6 +17,7 @@ import type { JsonObject } from '@backstage/types';
import { KubernetesRequestBody } from '@backstage/plugin-kubernetes-common';
import { OAuthApi } from '@backstage/core-plugin-api';
import { ObjectsByEntityResponse } from '@backstage/plugin-kubernetes-common';
+import { OpenIdConnectApi } from '@backstage/core-plugin-api';
import { default as React_2 } from 'react';
import { RouteRef } from '@backstage/core-plugin-api';
import { V1ConfigMap } from '@kubernetes/client-node';
@@ -225,6 +226,7 @@ export interface KubernetesApi {
{
name: string;
authProvider: string;
+ oidcTokenProvider?: string | undefined;
}[]
>;
// (undocumented)
@@ -242,7 +244,12 @@ export const kubernetesApiRef: ApiRef;
//
// @public (undocumented)
export class KubernetesAuthProviders implements KubernetesAuthProvidersApi {
- constructor(options: { googleAuthApi: OAuthApi });
+ constructor(options: {
+ googleAuthApi: OAuthApi;
+ oidcProviders?: {
+ [key: string]: OpenIdConnectApi;
+ };
+ });
// (undocumented)
decorateRequestBodyForAuth(
authProvider: string,
diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json
index 5309aefe49..61885408e8 100644
--- a/plugins/kubernetes/package.json
+++ b/plugins/kubernetes/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-kubernetes",
"description": "A Backstage plugin that integrates towards Kubernetes",
- "version": "0.6.5-next.1",
+ "version": "0.6.5-next.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,12 +34,12 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
- "@backstage/plugin-kubernetes-common": "^0.2.9",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
+ "@backstage/plugin-kubernetes-common": "^0.2.10-next.1",
"@backstage/theme": "^0.2.15",
"@kubernetes/client-node": "^0.16.0",
"@material-ui/core": "^4.12.2",
@@ -57,10 +57,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
diff --git a/plugins/kubernetes/src/api/types.ts b/plugins/kubernetes/src/api/types.ts
index 8b95dd820c..7c5943a6eb 100644
--- a/plugins/kubernetes/src/api/types.ts
+++ b/plugins/kubernetes/src/api/types.ts
@@ -28,5 +28,11 @@ export interface KubernetesApi {
getObjectsByEntity(
requestBody: KubernetesRequestBody,
): Promise;
- getClusters(): Promise<{ name: string; authProvider: string }[]>;
+ getClusters(): Promise<
+ {
+ name: string;
+ authProvider: string;
+ oidcTokenProvider?: string | undefined;
+ }[]
+ >;
}
diff --git a/plugins/kubernetes/src/hooks/useKubernetesObjects.ts b/plugins/kubernetes/src/hooks/useKubernetesObjects.ts
index d9aca875c7..8e2597c1d2 100644
--- a/plugins/kubernetes/src/hooks/useKubernetesObjects.ts
+++ b/plugins/kubernetes/src/hooks/useKubernetesObjects.ts
@@ -53,8 +53,16 @@ export const useKubernetesObjects = (
}
const authProviders: string[] = [
- ...new Set(clusters.map(c => c.authProvider)),
+ ...new Set(
+ clusters.map(
+ c =>
+ `${c.authProvider}${
+ c.oidcTokenProvider ? `.${c.oidcTokenProvider}` : ''
+ }`,
+ ),
+ ),
];
+
// For each auth type, invoke decorateRequestBodyForAuth on corresponding KubernetesAuthProvider
let requestBody: KubernetesRequestBody = {
entity,
diff --git a/plugins/kubernetes/src/kubernetes-auth-provider/KubernetesAuthProviders.test.ts b/plugins/kubernetes/src/kubernetes-auth-provider/KubernetesAuthProviders.test.ts
new file mode 100644
index 0000000000..a83cbcfaa4
--- /dev/null
+++ b/plugins/kubernetes/src/kubernetes-auth-provider/KubernetesAuthProviders.test.ts
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2020 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 { OAuthApi, OpenIdConnectApi } from '@backstage/core-plugin-api';
+import { KubernetesRequestBody } from '@backstage/plugin-kubernetes-common';
+import { KubernetesAuthProviders } from './KubernetesAuthProviders';
+
+class MockAuthApi implements OAuthApi, OpenIdConnectApi {
+ constructor(private readonly token: string) {}
+
+ getAccessToken = jest.fn(async () => {
+ return this.token;
+ });
+
+ getIdToken = jest.fn(async () => {
+ return this.token;
+ });
+}
+
+const requestBody: KubernetesRequestBody = {
+ entity: {
+ apiVersion: 'v1',
+ kind: 'service',
+ metadata: { name: 'test' },
+ },
+};
+
+describe('KubernetesAuthProviders tests', () => {
+ const kap = new KubernetesAuthProviders({
+ googleAuthApi: new MockAuthApi('googleToken'),
+ oidcProviders: {
+ okta: new MockAuthApi('oktaToken'),
+ },
+ });
+
+ it('adds token to request body for google authProvider', async () => {
+ const details = await kap.decorateRequestBodyForAuth('google', requestBody);
+
+ expect(details.auth?.google).toBe('googleToken');
+ });
+
+ it('adds token to request body for oidc authProvider', async () => {
+ const details = await kap.decorateRequestBodyForAuth(
+ 'oidc.okta',
+ requestBody,
+ );
+
+ expect(details.auth?.oidc?.okta).toBe('oktaToken');
+ });
+
+ it('returns error for unknown authProvider', async () => {
+ await expect(
+ kap.decorateRequestBodyForAuth('unknown', requestBody),
+ ).rejects.toThrow(
+ 'authProvider "unknown" has no KubernetesAuthProvider defined for it',
+ );
+ });
+
+ it('returns error for missconfigured oidc authProvider', async () => {
+ await expect(
+ kap.decorateRequestBodyForAuth('oidc.random', requestBody),
+ ).rejects.toThrow(
+ 'KubernetesAuthProviders has no oidcProvider configured for oidc.random',
+ );
+ });
+});
diff --git a/plugins/kubernetes/src/kubernetes-auth-provider/KubernetesAuthProviders.ts b/plugins/kubernetes/src/kubernetes-auth-provider/KubernetesAuthProviders.ts
index 00d5a17f72..bcd1b2911a 100644
--- a/plugins/kubernetes/src/kubernetes-auth-provider/KubernetesAuthProviders.ts
+++ b/plugins/kubernetes/src/kubernetes-auth-provider/KubernetesAuthProviders.ts
@@ -19,9 +19,10 @@ import { KubernetesAuthProvider, KubernetesAuthProvidersApi } from './types';
import { GoogleKubernetesAuthProvider } from './GoogleKubernetesAuthProvider';
import { ServiceAccountKubernetesAuthProvider } from './ServiceAccountKubernetesAuthProvider';
import { AwsKubernetesAuthProvider } from './AwsKubernetesAuthProvider';
-import { OAuthApi } from '@backstage/core-plugin-api';
+import { OAuthApi, OpenIdConnectApi } from '@backstage/core-plugin-api';
import { GoogleServiceAccountAuthProvider } from './GoogleServiceAccountAuthProvider';
import { AzureKubernetesAuthProvider } from './AzureKubernetesAuthProvider';
+import { OidcKubernetesAuthProvider } from './OidcKubernetesAuthProvider';
export class KubernetesAuthProviders implements KubernetesAuthProvidersApi {
private readonly kubernetesAuthProviderMap: Map<
@@ -29,7 +30,10 @@ export class KubernetesAuthProviders implements KubernetesAuthProvidersApi {
KubernetesAuthProvider
>;
- constructor(options: { googleAuthApi: OAuthApi }) {
+ constructor(options: {
+ googleAuthApi: OAuthApi;
+ oidcProviders?: { [key: string]: OpenIdConnectApi };
+ }) {
this.kubernetesAuthProviderMap = new Map();
this.kubernetesAuthProviderMap.set(
'google',
@@ -48,6 +52,18 @@ export class KubernetesAuthProviders implements KubernetesAuthProvidersApi {
'azure',
new AzureKubernetesAuthProvider(),
);
+
+ if (options.oidcProviders) {
+ Object.keys(options.oidcProviders).forEach(provider => {
+ this.kubernetesAuthProviderMap.set(
+ `oidc.${provider}`,
+ new OidcKubernetesAuthProvider(
+ provider,
+ options.oidcProviders![provider],
+ ),
+ );
+ });
+ }
}
async decorateRequestBodyForAuth(
@@ -61,6 +77,12 @@ export class KubernetesAuthProviders implements KubernetesAuthProvidersApi {
requestBody,
);
}
+
+ if (authProvider.startsWith('oidc.')) {
+ throw new Error(
+ `KubernetesAuthProviders has no oidcProvider configured for ${authProvider}`,
+ );
+ }
throw new Error(
`authProvider "${authProvider}" has no KubernetesAuthProvider defined for it`,
);
diff --git a/plugins/kubernetes/src/kubernetes-auth-provider/OidcKubernetesAuthProvider.ts b/plugins/kubernetes/src/kubernetes-auth-provider/OidcKubernetesAuthProvider.ts
new file mode 100644
index 0000000000..f86df5e73e
--- /dev/null
+++ b/plugins/kubernetes/src/kubernetes-auth-provider/OidcKubernetesAuthProvider.ts
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2020 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 { KubernetesAuthProvider } from './types';
+import { KubernetesRequestBody } from '@backstage/plugin-kubernetes-common';
+import { OpenIdConnectApi } from '@backstage/core-plugin-api';
+
+export class OidcKubernetesAuthProvider implements KubernetesAuthProvider {
+ providerName: string;
+ authProvider: OpenIdConnectApi;
+
+ constructor(providerName: string, authProvider: OpenIdConnectApi) {
+ this.providerName = providerName;
+ this.authProvider = authProvider;
+ }
+
+ async decorateRequestBodyForAuth(
+ requestBody: KubernetesRequestBody,
+ ): Promise {
+ const authToken: string = await this.authProvider.getIdToken();
+ const auth = { ...requestBody.auth };
+ if (auth.oidc) {
+ auth.oidc[this.providerName] = authToken;
+ } else {
+ auth.oidc = { [this.providerName]: authToken };
+ }
+ requestBody.auth = auth;
+ return requestBody;
+ }
+}
diff --git a/plugins/kubernetes/src/plugin.ts b/plugins/kubernetes/src/plugin.ts
index a1f2f57621..b54850307e 100644
--- a/plugins/kubernetes/src/plugin.ts
+++ b/plugins/kubernetes/src/plugin.ts
@@ -24,6 +24,9 @@ import {
discoveryApiRef,
identityApiRef,
googleAuthApiRef,
+ microsoftAuthApiRef,
+ oktaAuthApiRef,
+ oneloginAuthApiRef,
createRoutableExtension,
} from '@backstage/core-plugin-api';
@@ -45,9 +48,26 @@ export const kubernetesPlugin = createPlugin({
}),
createApiFactory({
api: kubernetesAuthProvidersApiRef,
- deps: { googleAuthApi: googleAuthApiRef },
- factory: ({ googleAuthApi }) => {
- return new KubernetesAuthProviders({ googleAuthApi });
+ deps: {
+ googleAuthApi: googleAuthApiRef,
+ microsoftAuthApi: microsoftAuthApiRef,
+ oktaAuthApi: oktaAuthApiRef,
+ oneloginAuthApi: oneloginAuthApiRef,
+ },
+ factory: ({
+ googleAuthApi,
+ microsoftAuthApi,
+ oktaAuthApi,
+ oneloginAuthApi,
+ }) => {
+ const oidcProviders = {
+ google: googleAuthApi,
+ microsoft: microsoftAuthApi,
+ okta: oktaAuthApi,
+ onelogin: oneloginAuthApi,
+ };
+
+ return new KubernetesAuthProviders({ googleAuthApi, oidcProviders });
},
}),
],
diff --git a/plugins/lighthouse/CHANGELOG.md b/plugins/lighthouse/CHANGELOG.md
index ce6a6b092d..82e7b72aa4 100644
--- a/plugins/lighthouse/CHANGELOG.md
+++ b/plugins/lighthouse/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-lighthouse
+## 0.3.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.3.5-next.1
### Patch Changes
diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json
index 7df7f321ad..59aca403ac 100644
--- a/plugins/lighthouse/package.json
+++ b/plugins/lighthouse/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-lighthouse",
"description": "A Backstage plugin that integrates towards Lighthouse",
- "version": "0.3.5-next.1",
+ "version": "0.3.5-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -35,11 +35,11 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -51,10 +51,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
diff --git a/plugins/newrelic-dashboard/CHANGELOG.md b/plugins/newrelic-dashboard/CHANGELOG.md
index f099f3a762..627b1ecb5d 100644
--- a/plugins/newrelic-dashboard/CHANGELOG.md
+++ b/plugins/newrelic-dashboard/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-newrelic-dashboard
+## 0.1.13-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.1.13-next.1
### Patch Changes
diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json
index be2d59a8d0..a8ca2bd9e6 100644
--- a/plugins/newrelic-dashboard/package.json
+++ b/plugins/newrelic-dashboard/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-newrelic-dashboard",
- "version": "0.1.13-next.1",
+ "version": "0.1.13-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,19 +23,19 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.57",
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/dev-utils": "^1.0.2-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/dev-utils": "^1.0.2-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@types/react": "^16.13.1 || ^17.0.0",
"cross-fetch": "^3.1.5"
diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json
index 94970c0b41..d0d8e66787 100644
--- a/plugins/newrelic/package.json
+++ b/plugins/newrelic/package.json
@@ -35,8 +35,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -47,10 +47,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/org/CHANGELOG.md b/plugins/org/CHANGELOG.md
index 81b9b6be6c..7a99844dea 100644
--- a/plugins/org/CHANGELOG.md
+++ b/plugins/org/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-org
+## 0.5.5-next.3
+
+### Patch Changes
+
+- 2025d7c123: Include namespace in `MyGroupSidebarItem` if not default and remove root item routing if there are multiple groups
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.2
+
+## 0.5.5-next.2
+
+### Patch Changes
+
+- dfee1002d7: Fixed overflow bug of name and email on EntitiyMembersListCard component which can occur on specific 'screen width' + ’character length' combinations
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.5.5-next.1
### Patch Changes
diff --git a/plugins/org/package.json b/plugins/org/package.json
index 612410dc7a..1eba133f18 100644
--- a/plugins/org/package.json
+++ b/plugins/org/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-org",
"description": "A Backstage plugin that helps you create entity pages for your organization",
- "version": "0.5.5-next.1",
+ "version": "0.5.5-next.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -29,10 +29,10 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -48,11 +48,11 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/catalog-client": "^1.0.1",
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/catalog-client": "^1.0.2-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx
index 14f02c189f..7e5b683bf1 100644
--- a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx
+++ b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx
@@ -59,6 +59,17 @@ const useStyles = makeStyles((theme: Theme) =>
flex: '1',
minWidth: '0px',
},
+ email: {
+ overflow: 'hidden',
+ whiteSpace: 'nowrap',
+ textOverflow: 'ellipsis',
+ display: 'inline-block',
+ maxWidth: '100%',
+ '&:hover': {
+ overflow: 'visible',
+ whiteSpace: 'normal',
+ },
+ },
}),
);
@@ -88,7 +99,13 @@ const MemberComponent = (props: { member: UserEntity }) => {
top: '-2rem',
}}
/>
-
+
{
{profile?.email && (
- {profile.email}
+
+ {profile.email}
+
)}
{description && (
{description}
diff --git a/plugins/org/src/components/MyGroupsSidebarItem/MyGroupsSidebarItem.tsx b/plugins/org/src/components/MyGroupsSidebarItem/MyGroupsSidebarItem.tsx
index c2473670cf..5a3cc42628 100644
--- a/plugins/org/src/components/MyGroupsSidebarItem/MyGroupsSidebarItem.tsx
+++ b/plugins/org/src/components/MyGroupsSidebarItem/MyGroupsSidebarItem.tsx
@@ -15,6 +15,7 @@
*/
import React from 'react';
+import { stringifyEntityRef } from '@backstage/catalog-model';
import {
SidebarItem,
SidebarSubmenu,
@@ -31,6 +32,7 @@ import {
catalogApiRef,
CatalogApi,
entityRouteRef,
+ humanizeEntityRef,
} from '@backstage/plugin-catalog-react';
import { getCompoundEntityRef } from '@backstage/catalog-model';
@@ -80,15 +82,18 @@ export const MyGroupsSidebarItem = (props: {
// Member of more than one group
return (
-
+
{groups?.map(function groupsMap(group) {
return (
);
})}
diff --git a/plugins/pagerduty/CHANGELOG.md b/plugins/pagerduty/CHANGELOG.md
index cb178cfa3d..06158d356b 100644
--- a/plugins/pagerduty/CHANGELOG.md
+++ b/plugins/pagerduty/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-pagerduty
+## 0.3.32-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.3.32-next.1
### Patch Changes
diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json
index 522147ab4f..35e6ecefa9 100644
--- a/plugins/pagerduty/package.json
+++ b/plugins/pagerduty/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-pagerduty",
"description": "A Backstage plugin that integrates towards PagerDuty",
- "version": "0.3.32-next.1",
+ "version": "0.3.32-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,10 +34,10 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -52,10 +52,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/periskop-backend/CHANGELOG.md b/plugins/periskop-backend/CHANGELOG.md
index 0370c59212..fc39ac9107 100644
--- a/plugins/periskop-backend/CHANGELOG.md
+++ b/plugins/periskop-backend/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-periskop-backend
+## 0.1.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+
## 0.1.3-next.0
### Patch Changes
diff --git a/plugins/periskop-backend/package.json b/plugins/periskop-backend/package.json
index 335546a6aa..07e26f21bf 100644
--- a/plugins/periskop-backend/package.json
+++ b/plugins/periskop-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-periskop-backend",
- "version": "0.1.3-next.0",
+ "version": "0.1.3-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -24,8 +24,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/config": "^1.0.1-next.0",
"@types/express": "*",
"cross-fetch": "^3.0.6",
"express": "^4.17.1",
@@ -35,7 +35,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/supertest": "^2.0.8",
"msw": "^0.35.0",
"supertest": "^6.1.6"
diff --git a/plugins/periskop/CHANGELOG.md b/plugins/periskop/CHANGELOG.md
index 60a49881c5..f0d3e996a8 100644
--- a/plugins/periskop/CHANGELOG.md
+++ b/plugins/periskop/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-periskop
+## 0.1.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.1.3-next.1
### Patch Changes
diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json
index 177e53b4bf..804baccc84 100644
--- a/plugins/periskop/package.json
+++ b/plugins/periskop/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-periskop",
- "version": "0.1.3-next.1",
+ "version": "0.1.3-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -25,11 +25,11 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -42,10 +42,10 @@
"react-dom": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/permission-backend/CHANGELOG.md b/plugins/permission-backend/CHANGELOG.md
index c73248ac4e..f6159ce2e5 100644
--- a/plugins/permission-backend/CHANGELOG.md
+++ b/plugins/permission-backend/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-permission-backend
+## 0.5.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-auth-node@0.2.1-next.1
+ - @backstage/plugin-permission-common@0.6.1-next.0
+ - @backstage/plugin-permission-node@0.6.1-next.1
+
## 0.5.7-next.0
### Patch Changes
diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json
index 404f287669..79ecee9d3c 100644
--- a/plugins/permission-backend/package.json
+++ b/plugins/permission-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-permission-backend",
- "version": "0.5.7-next.0",
+ "version": "0.5.7-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -22,12 +22,12 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-auth-node": "^0.2.1-next.0",
- "@backstage/plugin-permission-common": "^0.6.0",
- "@backstage/plugin-permission-node": "^0.6.1-next.0",
+ "@backstage/plugin-auth-node": "^0.2.1-next.1",
+ "@backstage/plugin-permission-common": "^0.6.1-next.0",
+ "@backstage/plugin-permission-node": "^0.6.1-next.1",
"@types/express": "*",
"dataloader": "^2.0.0",
"express": "^4.17.1",
@@ -39,7 +39,7 @@
"zod": "^3.11.6"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/lodash": "^4.14.151",
"@types/supertest": "^2.0.8",
"supertest": "^6.1.6",
diff --git a/plugins/permission-common/CHANGELOG.md b/plugins/permission-common/CHANGELOG.md
index 99c996d2c0..6eedf4e060 100644
--- a/plugins/permission-common/CHANGELOG.md
+++ b/plugins/permission-common/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-permission-common
+## 0.6.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.1-next.0
+
## 0.6.0
### Minor Changes
diff --git a/plugins/permission-common/package.json b/plugins/permission-common/package.json
index 43084f9ab9..195b3f4441 100644
--- a/plugins/permission-common/package.json
+++ b/plugins/permission-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-permission-common",
"description": "Isomorphic types and client for Backstage permissions and authorization",
- "version": "0.6.0",
+ "version": "0.6.1-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
@@ -41,14 +41,14 @@
"url": "https://github.com/backstage/backstage/issues"
},
"dependencies": {
- "@backstage/config": "^1.0.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
"cross-fetch": "^3.1.5",
"uuid": "^8.0.0",
"zod": "^3.11.6"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/jest": "^26.0.7",
"msw": "^0.35.0"
}
diff --git a/plugins/permission-node/CHANGELOG.md b/plugins/permission-node/CHANGELOG.md
index 25973b1d52..cc3dceedaa 100644
--- a/plugins/permission-node/CHANGELOG.md
+++ b/plugins/permission-node/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-permission-node
+## 0.6.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-auth-node@0.2.1-next.1
+ - @backstage/plugin-permission-common@0.6.1-next.0
+
## 0.6.1-next.0
### Patch Changes
diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json
index d9dfec1859..18b64aca8f 100644
--- a/plugins/permission-node/package.json
+++ b/plugins/permission-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-permission-node",
"description": "Common permission and authorization utilities for backend plugins",
- "version": "0.6.1-next.0",
+ "version": "0.6.1-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,18 +33,18 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-auth-node": "^0.2.1-next.0",
- "@backstage/plugin-permission-common": "^0.6.0",
+ "@backstage/plugin-auth-node": "^0.2.1-next.1",
+ "@backstage/plugin-permission-common": "^0.6.1-next.0",
"@types/express": "^4.17.6",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
"zod": "^3.11.6"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/supertest": "^2.0.8",
"msw": "^0.35.0",
"supertest": "^6.1.3"
diff --git a/plugins/permission-react/CHANGELOG.md b/plugins/permission-react/CHANGELOG.md
index fdcdbb8f69..5cc01341b1 100644
--- a/plugins/permission-react/CHANGELOG.md
+++ b/plugins/permission-react/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-permission-react
+## 0.4.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.1-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/plugin-permission-common@0.6.1-next.0
+
## 0.4.1-next.0
### Patch Changes
diff --git a/plugins/permission-react/package.json b/plugins/permission-react/package.json
index de9709835e..9aa1415661 100644
--- a/plugins/permission-react/package.json
+++ b/plugins/permission-react/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-permission-react",
- "version": "0.4.1-next.0",
+ "version": "0.4.1-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,9 +31,9 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/config": "^1.0.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-permission-common": "^0.6.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-permission-common": "^0.6.1-next.0",
"cross-fetch": "^3.1.5",
"react-router": "6.0.0-beta.0",
"react-use": "^17.2.4",
@@ -44,8 +44,8 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@types/jest": "^26.0.7"
diff --git a/plugins/proxy-backend/CHANGELOG.md b/plugins/proxy-backend/CHANGELOG.md
index 27a8fc1df1..58badecc4f 100644
--- a/plugins/proxy-backend/CHANGELOG.md
+++ b/plugins/proxy-backend/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-proxy-backend
+## 0.2.26-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+
## 0.2.26-next.0
### Patch Changes
diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json
index 47b466e0fc..cb1de16e46 100644
--- a/plugins/proxy-backend/package.json
+++ b/plugins/proxy-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-proxy-backend",
"description": "A Backstage backend plugin that helps you set up proxy endpoints in the backend",
- "version": "0.2.26-next.0",
+ "version": "0.2.26-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -32,8 +32,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/config": "^1.0.1-next.0",
"@types/express": "^4.17.6",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
@@ -46,7 +46,7 @@
"yup": "^0.32.9"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/http-proxy-middleware": "^0.19.3",
"@types/supertest": "^2.0.8",
"@types/uuid": "^8.0.0",
diff --git a/plugins/rollbar-backend/CHANGELOG.md b/plugins/rollbar-backend/CHANGELOG.md
index bd4dfd9bef..142e12051e 100644
--- a/plugins/rollbar-backend/CHANGELOG.md
+++ b/plugins/rollbar-backend/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-rollbar-backend
+## 0.1.29-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+
## 0.1.29-next.1
### Patch Changes
diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json
index 120a3ab3db..798f023159 100644
--- a/plugins/rollbar-backend/package.json
+++ b/plugins/rollbar-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-rollbar-backend",
"description": "A Backstage backend plugin that integrates towards Rollbar",
- "version": "0.1.29-next.1",
+ "version": "0.1.29-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,8 +34,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/config": "^1.0.1-next.0",
"@types/express": "^4.17.6",
"camelcase-keys": "^7.0.1",
"compression": "^1.7.4",
@@ -50,8 +50,8 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.24-next.0",
- "@backstage/cli": "^0.17.1-next.1",
+ "@backstage/backend-test-utils": "^0.1.24-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/supertest": "^2.0.8",
"msw": "^0.36.3",
"supertest": "^6.1.3"
diff --git a/plugins/rollbar/CHANGELOG.md b/plugins/rollbar/CHANGELOG.md
index b10f6f7a46..9697729d16 100644
--- a/plugins/rollbar/CHANGELOG.md
+++ b/plugins/rollbar/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-rollbar
+## 0.4.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.4.5-next.1
### Patch Changes
diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json
index 4d68bd1e35..2b6056b6e6 100644
--- a/plugins/rollbar/package.json
+++ b/plugins/rollbar/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-rollbar",
"description": "A Backstage plugin that integrates towards Rollbar",
- "version": "0.4.5-next.1",
+ "version": "0.4.5-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -35,10 +35,10 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -53,10 +53,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
diff --git a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md
index fdf79fd08f..dfd7157d40 100644
--- a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-scaffolder-backend-module-cookiecutter
+## 0.2.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/plugin-scaffolder-backend@1.2.0-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/integration@1.2.0-next.1
+
## 0.2.7-next.0
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json
index b196b4da99..417ba83eb5 100644
--- a/plugins/scaffolder-backend-module-cookiecutter/package.json
+++ b/plugins/scaffolder-backend-module-cookiecutter/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-backend-module-cookiecutter",
"description": "A module for the scaffolder backend that lets you template projects using cookiecutter",
- "version": "0.2.7-next.0",
+ "version": "0.2.7-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,11 +23,11 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/plugin-scaffolder-backend": "^1.2.0-next.0",
- "@backstage/config": "^1.0.0",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/plugin-scaffolder-backend": "^1.2.0-next.1",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/types": "^1.0.0",
"command-exists": "^1.2.9",
"fs-extra": "10.1.0",
@@ -35,7 +35,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/fs-extra": "^9.0.1",
"@types/mock-fs": "^4.13.0",
"@types/jest": "^26.0.7",
diff --git a/plugins/scaffolder-backend-module-rails/CHANGELOG.md b/plugins/scaffolder-backend-module-rails/CHANGELOG.md
index 3057cd94dc..7b514833cd 100644
--- a/plugins/scaffolder-backend-module-rails/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-rails/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-scaffolder-backend-module-rails
+## 0.4.0-next.1
+
+### Minor Changes
+
+- 3d001a3bcf: **BREAKING**: Added a new `allowedImageNames` option, which needs to list any image name for it to be allowed as `imageName` input.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/plugin-scaffolder-backend@1.2.0-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/integration@1.2.0-next.1
+
## 0.3.7-next.0
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json
index 226d4c0420..171ff66d49 100644
--- a/plugins/scaffolder-backend-module-rails/package.json
+++ b/plugins/scaffolder-backend-module-rails/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-backend-module-rails",
"description": "A module for the scaffolder backend that lets you template projects using Rails",
- "version": "0.3.7-next.0",
+ "version": "0.4.0-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -24,17 +24,17 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/plugin-scaffolder-backend": "^1.2.0-next.0",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/plugin-scaffolder-backend": "^1.2.0-next.1",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
+ "@backstage/integration": "^1.2.0-next.1",
"@backstage/types": "^1.0.0",
"command-exists": "^1.2.9",
"fs-extra": "^10.0.1"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/jest": "^26.0.7",
"@types/node": "^16.11.26",
"@types/command-exists": "^1.2.0",
diff --git a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md
index bc7c0f5b55..1790e0468d 100644
--- a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-scaffolder-backend-module-yeoman
+## 0.2.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@1.2.0-next.1
+ - @backstage/config@1.0.1-next.0
+
## 0.2.5-next.0
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json
index 10371e89af..534eda3c1f 100644
--- a/plugins/scaffolder-backend-module-yeoman/package.json
+++ b/plugins/scaffolder-backend-module-yeoman/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-scaffolder-backend-module-yeoman",
- "version": "0.2.5-next.0",
+ "version": "0.2.5-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,14 +23,14 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/config": "^1.0.0",
- "@backstage/plugin-scaffolder-backend": "^1.2.0-next.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/plugin-scaffolder-backend": "^1.2.0-next.1",
"@backstage/types": "^1.0.0",
"winston": "^3.2.1",
"yeoman-environment": "^3.9.1"
},
"devDependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
"@types/jest": "^26.0.7"
},
"files": [
diff --git a/plugins/scaffolder-backend/CHANGELOG.md b/plugins/scaffolder-backend/CHANGELOG.md
index bf4a9718f0..4d90344c16 100644
--- a/plugins/scaffolder-backend/CHANGELOG.md
+++ b/plugins/scaffolder-backend/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-scaffolder-backend
+## 1.2.0-next.1
+
+### Minor Changes
+
+- f8baf7df44: Added the ability to reference the user in the `template.yaml` manifest
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/plugin-catalog-backend@1.1.2-next.2
+ - @backstage/plugin-scaffolder-common@1.1.0-next.0
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/integration@1.2.0-next.1
+ - @backstage/catalog-client@1.0.2-next.0
+
## 1.2.0-next.0
### Minor Changes
diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json
index d9492902d0..82c1320725 100644
--- a/plugins/scaffolder-backend/package.json
+++ b/plugins/scaffolder-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-backend",
"description": "The Backstage backend plugin that helps you create new things",
- "version": "1.2.0-next.0",
+ "version": "1.2.0-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,14 +34,14 @@
"build:assets": "node scripts/build-nunjucks.js"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/catalog-client": "^1.0.1",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/catalog-client": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/plugin-catalog-backend": "^1.1.2-next.0",
- "@backstage/plugin-scaffolder-common": "^1.0.1",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/plugin-catalog-backend": "^1.1.2-next.2",
+ "@backstage/plugin-scaffolder-common": "^1.1.0-next.0",
"@backstage/types": "^1.0.0",
"@gitbeaker/core": "^35.6.0",
"@gitbeaker/node": "^35.1.0",
@@ -74,8 +74,8 @@
"zen-observable": "^0.8.15"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.24-next.0",
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/backend-test-utils": "^0.1.24-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/command-exists": "^1.2.0",
"@types/fs-extra": "^9.0.1",
"@types/git-url-parse": "^9.0.0",
diff --git a/plugins/scaffolder-common/CHANGELOG.md b/plugins/scaffolder-common/CHANGELOG.md
index a1b2d4511d..d4773d6d91 100644
--- a/plugins/scaffolder-common/CHANGELOG.md
+++ b/plugins/scaffolder-common/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-scaffolder-common
+## 1.1.0-next.0
+
+### Minor Changes
+
+- f8baf7df44: Added the ability to reference the user in the `template.yaml` manifest
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/catalog-model@1.0.2-next.0
+
## 1.0.1
### Patch Changes
diff --git a/plugins/scaffolder-common/package.json b/plugins/scaffolder-common/package.json
index 1f3cad0f4a..2cf1def503 100644
--- a/plugins/scaffolder-common/package.json
+++ b/plugins/scaffolder-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-common",
"description": "Common functionalities for the scaffolder, to be shared between scaffolder and scaffolder-backend plugin",
- "version": "1.0.1",
+ "version": "1.1.0-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -39,10 +39,10 @@
"url": "https://github.com/backstage/backstage/issues"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
"@backstage/types": "^1.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0"
+ "@backstage/cli": "^0.17.1-next.2"
}
}
diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md
index c2f287de82..88cee84d7e 100644
--- a/plugins/scaffolder/CHANGELOG.md
+++ b/plugins/scaffolder/CHANGELOG.md
@@ -1,5 +1,32 @@
# @backstage/plugin-scaffolder
+## 1.2.0-next.3
+
+### Patch Changes
+
+- cc8ddd0979: revert dependency `event-source-polyfill` to `1.0.25`
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.2
+
+## 1.2.0-next.2
+
+### Patch Changes
+
+- 70817dafc0: Updated dependency `use-immer` to `^0.7.0`.
+- 1af133f779: Updated dependency `event-source-polyfill` to `1.0.26`.
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-scaffolder-common@1.1.0-next.0
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/integration@1.2.0-next.1
+ - @backstage/integration-react@1.1.0-next.2
+ - @backstage/plugin-permission-react@0.4.1-next.1
+ - @backstage/catalog-client@1.0.2-next.0
+ - @backstage/plugin-catalog-common@1.0.2-next.0
+
## 1.2.0-next.1
### Patch Changes
diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json
index 4f8b2ba53d..6795af4488 100644
--- a/plugins/scaffolder/package.json
+++ b/plugins/scaffolder/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder",
"description": "The Backstage plugin that helps you create new things",
- "version": "1.2.0-next.1",
+ "version": "1.2.0-next.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -35,18 +35,18 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-client": "^1.0.1",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-client": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/integration-react": "^1.1.0-next.1",
- "@backstage/plugin-catalog-common": "^1.0.1",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
- "@backstage/plugin-permission-react": "^0.4.1-next.0",
- "@backstage/plugin-scaffolder-common": "^1.0.1",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/integration-react": "^1.1.0-next.2",
+ "@backstage/plugin-catalog-common": "^1.0.2-next.0",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
+ "@backstage/plugin-permission-react": "^0.4.1-next.1",
+ "@backstage/plugin-scaffolder-common": "^1.1.0-next.0",
"@backstage/theme": "^0.2.15",
"@backstage/types": "^1.0.0",
"@codemirror/legacy-modes": "^0.20.0",
@@ -79,11 +79,11 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/plugin-catalog": "^1.2.0-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/plugin-catalog": "^1.2.0-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
@@ -92,7 +92,7 @@
"@types/jest": "^26.0.7",
"@types/node": "^16.11.26",
"cross-fetch": "^3.1.5",
- "event-source-polyfill": "1.0.26",
+ "event-source-polyfill": "1.0.25",
"msw": "^0.35.0"
},
"files": [
diff --git a/plugins/search-backend-module-elasticsearch/CHANGELOG.md b/plugins/search-backend-module-elasticsearch/CHANGELOG.md
index a328c09098..38ecaa8486 100644
--- a/plugins/search-backend-module-elasticsearch/CHANGELOG.md
+++ b/plugins/search-backend-module-elasticsearch/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-search-backend-module-elasticsearch
+## 0.1.4-next.1
+
+### Patch Changes
+
+- 71d3432710: Search Engines will now index documents in batches of 1000 instead of 100 (under the hood). This may result in your Backstage backend consuming slightly more memory during index runs, but should dramatically improve indexing performance for large document sets.
+- 3a74e203a8: Support generating highlighted matched terms in search result data
+- Updated dependencies
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-search-backend-node@0.6.1-next.1
+ - @backstage/plugin-search-common@0.3.4-next.0
+
## 0.1.4-next.0
### Patch Changes
diff --git a/plugins/search-backend-module-elasticsearch/api-report.md b/plugins/search-backend-module-elasticsearch/api-report.md
index 10231f3a83..7ef026745f 100644
--- a/plugins/search-backend-module-elasticsearch/api-report.md
+++ b/plugins/search-backend-module-elasticsearch/api-report.md
@@ -98,6 +98,27 @@ export interface ElasticSearchClientOptions {
Transport?: ElasticSearchTransportConstructor;
}
+// @public (undocumented)
+export type ElasticSearchHighlightConfig = {
+ fragmentDelimiter: string;
+ fragmentSize: number;
+ numFragments: number;
+ preTag: string;
+ postTag: string;
+};
+
+// @public (undocumented)
+export type ElasticSearchHighlightOptions = {
+ fragmentDelimiter?: string;
+ fragmentSize?: number;
+ numFragments?: number;
+};
+
+// @public (undocumented)
+export type ElasticSearchQueryTranslatorOptions = {
+ highlightOptions?: ElasticSearchHighlightConfig;
+};
+
// @public (undocumented)
export class ElasticSearchSearchEngine implements SearchEngine {
constructor(
@@ -105,6 +126,7 @@ export class ElasticSearchSearchEngine implements SearchEngine {
aliasPostfix: string,
indexPrefix: string,
logger: Logger,
+ highlightOptions?: ElasticSearchHighlightOptions,
);
// Warning: (ae-forgotten-export) The symbol "ElasticSearchOptions" needs to be exported by the entry point index.d.ts
//
@@ -127,7 +149,10 @@ export class ElasticSearchSearchEngine implements SearchEngine {
// Warning: (ae-forgotten-export) The symbol "ConcreteElasticSearchQuery" needs to be exported by the entry point index.d.ts
//
// (undocumented)
- protected translator(query: SearchQuery): ConcreteElasticSearchQuery;
+ protected translator(
+ query: SearchQuery,
+ options?: ElasticSearchQueryTranslatorOptions,
+ ): ConcreteElasticSearchQuery;
}
// Warning: (ae-missing-release-tag) "ElasticSearchSearchEngineIndexer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
diff --git a/plugins/search-backend-module-elasticsearch/config.d.ts b/plugins/search-backend-module-elasticsearch/config.d.ts
index da403370cd..8f63e66365 100644
--- a/plugins/search-backend-module-elasticsearch/config.d.ts
+++ b/plugins/search-backend-module-elasticsearch/config.d.ts
@@ -21,6 +21,24 @@ export interface Config {
* Options for ElasticSearch
*/
elasticsearch?: {
+ /**
+ * Options for configuring highlight settings
+ * See https://www.elastic.co/guide/en/elasticsearch/reference/7.17/highlighting.html
+ */
+ highlightOptions?: {
+ /**
+ * The size of the highlighted fragment in characters. Defaults to 1000.
+ */
+ fragmentSize?: number;
+ /**
+ * Number of result fragments to extract. Fragments will be concatenated with `fragmentDelimiter`. Defaults to 1.
+ */
+ numFragments?: number;
+ /**
+ * Delimiter string used to concatenate fragments. Defaults to " ... ".
+ */
+ fragmentDelimiter?: string;
+ };
/** Miscellaneous options for the client */
clientOptions?: {
ssl?: {
diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json
index f53b20e377..cf009348aa 100644
--- a/plugins/search-backend-module-elasticsearch/package.json
+++ b/plugins/search-backend-module-elasticsearch/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend-module-elasticsearch",
"description": "A module for the search backend that implements search using ElasticSearch",
- "version": "0.1.4-next.0",
+ "version": "0.1.4-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,19 +23,20 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/config": "^1.0.0",
- "@backstage/plugin-search-backend-node": "^0.6.1-next.0",
- "@backstage/plugin-search-common": "^0.3.3",
- "@elastic/elasticsearch": "7.13.0",
"@acuris/aws-es-connection": "^2.2.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/plugin-search-backend-node": "^0.6.1-next.1",
+ "@backstage/plugin-search-common": "^0.3.4-next.0",
+ "@elastic/elasticsearch": "7.13.0",
"aws-sdk": "^2.948.0",
"elastic-builder": "^2.16.0",
"lodash": "^4.17.21",
+ "uuid": "^8.3.2",
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/cli": "^0.17.1-next.2",
"@elastic/elasticsearch-mock": "^1.0.0"
},
"files": [
diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts
index 467e1b4e77..24ceec2875 100644
--- a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts
+++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts
@@ -26,6 +26,8 @@ import {
} from './ElasticSearchSearchEngine';
import { ElasticSearchSearchEngineIndexer } from './ElasticSearchSearchEngineIndexer';
+jest.mock('uuid', () => ({ v4: () => 'tag' }));
+
class ElasticSearchSearchEngineForTranslatorTests extends ElasticSearchSearchEngine {
getTranslator() {
return this.translator;
@@ -105,10 +107,21 @@ describe('ElasticSearchSearchEngine', () => {
filters: {},
});
- expect(translatorSpy).toHaveBeenCalledWith({
- term: 'testTerm',
- filters: {},
- });
+ expect(translatorSpy).toHaveBeenCalledWith(
+ {
+ term: 'testTerm',
+ filters: {},
+ },
+ {
+ highlightOptions: {
+ preTag: ``,
+ postTag: ``,
+ fragmentSize: 1000,
+ numFragments: 1,
+ fragmentDelimiter: ' ... ',
+ },
+ },
+ );
});
it('should return translated query with 1 filter', async () => {
@@ -281,6 +294,59 @@ describe('ElasticSearchSearchEngine', () => {
});
});
+ it('should accept custom highlight options', async () => {
+ const translatorUnderTest = inspectableSearchEngine.getTranslator();
+
+ const actualTranslatedQuery = translatorUnderTest(
+ {
+ types: ['indexName'],
+ term: 'testTerm',
+ pageCursor: 'MQ==',
+ },
+ {
+ highlightOptions: {
+ preTag: ``,
+ postTag: ``,
+ fragmentSize: 100,
+ numFragments: 3,
+ fragmentDelimiter: ' ... ',
+ },
+ },
+ ) as ConcreteElasticSearchQuery;
+
+ expect(actualTranslatedQuery).toMatchObject({
+ documentTypes: ['indexName'],
+ elasticSearchQuery: expect.any(Object),
+ });
+
+ const queryBody = actualTranslatedQuery.elasticSearchQuery;
+
+ expect(queryBody).toEqual({
+ query: {
+ bool: {
+ filter: [],
+ must: {
+ multi_match: {
+ query: 'testTerm',
+ fields: ['*'],
+ fuzziness: 'auto',
+ minimum_should_match: 1,
+ },
+ },
+ },
+ },
+ highlight: {
+ fields: { '*': {} },
+ fragment_size: 100,
+ number_of_fragments: 3,
+ pre_tags: [''],
+ post_tags: [''],
+ },
+ from: 25,
+ size: 25,
+ });
+ });
+
it('should throw if unsupported filter shapes passed in', async () => {
const translatorUnderTest = inspectableSearchEngine.getTranslator();
const actualTranslatedQuery = () =>
@@ -372,6 +438,50 @@ describe('ElasticSearchSearchEngine', () => {
});
});
+ it('should perform search query with less results than one page', async () => {
+ mock.clear({
+ method: 'POST',
+ path: '/*__search/_search',
+ });
+ mock.add(
+ {
+ method: 'POST',
+ path: '/*__search/_search',
+ },
+ () => {
+ return {
+ hits: {
+ total: { value: 20, relation: 'eq' },
+ hits: Array(20)
+ .fill(null)
+ .map((_, i) => ({
+ _index: 'mytype-index__',
+ _source: {
+ value: `${i}`,
+ },
+ })),
+ },
+ };
+ },
+ );
+
+ const mockedSearchResult = await testSearchEngine.query({
+ term: 'testTerm',
+ filters: {},
+ });
+
+ expect(mockedSearchResult).toMatchObject({
+ results: expect.arrayContaining(
+ Array(20)
+ .fill(null)
+ .map((_, i) => ({
+ type: 'mytype',
+ document: { value: `${i}` },
+ })),
+ ),
+ });
+ });
+
it('should perform search query with more results than one page', async () => {
mock.clear({
method: 'POST',
@@ -465,6 +575,66 @@ describe('ElasticSearchSearchEngine', () => {
});
});
+ it('should handle parsing highlights in search query results', async () => {
+ mock.clear({
+ method: 'POST',
+ path: '/*__search/_search',
+ });
+ mock.add(
+ {
+ method: 'POST',
+ path: '/*__search/_search',
+ },
+ () => {
+ return {
+ hits: {
+ total: { value: 30, relation: 'eq' },
+ hits: Array(25)
+ .fill(null)
+ .map((_, i) => ({
+ _index: 'mytype-index__',
+ _source: {
+ value: `${i}`,
+ },
+ highlight: {
+ foo: [
+ 'highlighted test result',
+ 'another fragment result',
+ ],
+ bar: ['more test results'],
+ },
+ })),
+ },
+ };
+ },
+ );
+
+ const mockedSearchResult = await testSearchEngine.query({
+ term: 'testTerm',
+ filters: {},
+ });
+
+ expect(mockedSearchResult).toMatchObject({
+ results: expect.arrayContaining(
+ Array(25)
+ .fill(null)
+ .map((_, i) => ({
+ type: 'mytype',
+ document: { value: `${i}` },
+ highlight: {
+ preTag: '',
+ postTag: '',
+ fields: {
+ foo: 'highlighted test result ... another fragment result',
+ bar: 'more test results',
+ },
+ },
+ })),
+ ),
+ nextPageCursor: 'MQ==',
+ });
+ });
+
it('should handle index/search type filtering correctly', async () => {
const elasticSearchQuerySpy = jest.spyOn(client, 'search');
await testSearchEngine.query({
@@ -488,6 +658,13 @@ describe('ElasticSearchSearchEngine', () => {
filter: [],
},
},
+ highlight: {
+ fields: { '*': {} },
+ fragment_size: 1000,
+ number_of_fragments: 1,
+ pre_tags: [''],
+ post_tags: [''],
+ },
from: 0,
size: 25,
},
@@ -515,6 +692,13 @@ describe('ElasticSearchSearchEngine', () => {
filter: [],
},
},
+ highlight: {
+ fields: { '*': {} },
+ fragment_size: 1000,
+ number_of_fragments: 1,
+ pre_tags: [''],
+ post_tags: [''],
+ },
from: 0,
size: 25,
},
@@ -543,6 +727,13 @@ describe('ElasticSearchSearchEngine', () => {
filter: [],
},
},
+ highlight: {
+ fields: { '*': {} },
+ fragment_size: 1000,
+ number_of_fragments: 1,
+ pre_tags: [''],
+ post_tags: [''],
+ },
from: 0,
size: 25,
},
@@ -618,7 +809,7 @@ describe('ElasticSearchSearchEngine', () => {
});
describe('ElasticSearchSearchEngine.fromConfig', () => {
- it('accesses the clientOptions config', async () => {
+ it('accesses the clientOptions and highlightOptions config', async () => {
const esOptions = {
clientOptions: {
ssl: {
@@ -635,6 +826,7 @@ describe('ElasticSearchSearchEngine', () => {
const esConfig = new ConfigReader(esOptions);
jest.spyOn(config, 'getConfig').mockImplementation(() => esConfig);
const getOptionalConfig = jest.spyOn(esConfig, 'getOptionalConfig');
+ const getOptional = jest.spyOn(config, 'getOptional');
await ElasticSearchSearchEngine.fromConfig({
logger: getVoidLogger(),
@@ -642,9 +834,12 @@ describe('ElasticSearchSearchEngine', () => {
});
expect(getOptionalConfig.mock.calls[0][0]).toEqual('clientOptions');
+ expect(getOptional.mock.calls[0][0]).toEqual(
+ 'search.elasticsearch.highlightOptions',
+ );
});
- it('does not require the clientOptions config', async () => {
+ it('does not require the clientOptions or highlightOptions config', async () => {
const config = new ConfigReader({
search: {
elasticsearch: {
diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.ts
index aec225a64b..00c25905c3 100644
--- a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.ts
+++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.ts
@@ -21,6 +21,7 @@ import {
import { Config } from '@backstage/config';
import {
IndexableDocument,
+ IndexableResult,
IndexableResultSet,
SearchEngine,
SearchQuery,
@@ -28,6 +29,7 @@ import {
import { Client } from '@elastic/elasticsearch';
import esb from 'elastic-builder';
import { isEmpty, isNaN as nan, isNumber } from 'lodash';
+import { v4 as uuid } from 'uuid';
import { Logger } from 'winston';
import type { ElasticSearchClientOptions } from './ElasticSearchClientOptions';
import { ElasticSearchSearchEngineIndexer } from './ElasticSearchSearchEngineIndexer';
@@ -40,8 +42,16 @@ export type ConcreteElasticSearchQuery = {
pageSize: number;
};
+/**
+ * @public
+ */
+export type ElasticSearchQueryTranslatorOptions = {
+ highlightOptions?: ElasticSearchHighlightConfig;
+};
+
type ElasticSearchQueryTranslator = (
query: SearchQuery,
+ options?: ElasticSearchQueryTranslatorOptions,
) => ConcreteElasticSearchQuery;
type ElasticSearchOptions = {
@@ -51,11 +61,34 @@ type ElasticSearchOptions = {
indexPrefix?: string;
};
+/**
+ * @public
+ */
+export type ElasticSearchHighlightOptions = {
+ fragmentDelimiter?: string;
+ fragmentSize?: number;
+ numFragments?: number;
+};
+
+/**
+ * @public
+ */
+export type ElasticSearchHighlightConfig = {
+ fragmentDelimiter: string;
+ fragmentSize: number;
+ numFragments: number;
+ preTag: string;
+ postTag: string;
+};
+
type ElasticSearchResult = {
_index: string;
_type: string;
_score: number;
_source: IndexableDocument;
+ highlight?: {
+ [field: string]: string[];
+ };
};
function isBlank(str: string) {
@@ -67,14 +100,25 @@ function isBlank(str: string) {
*/
export class ElasticSearchSearchEngine implements SearchEngine {
private readonly elasticSearchClient: Client;
+ private readonly highlightOptions: ElasticSearchHighlightConfig;
constructor(
private readonly elasticSearchClientOptions: ElasticSearchClientOptions,
private readonly aliasPostfix: string,
private readonly indexPrefix: string,
private readonly logger: Logger,
+ highlightOptions?: ElasticSearchHighlightOptions,
) {
this.elasticSearchClient = this.newClient(options => new Client(options));
+ const uuidTag = uuid();
+ this.highlightOptions = {
+ preTag: `<${uuidTag}>`,
+ postTag: `${uuidTag}>`,
+ fragmentSize: 1000,
+ numFragments: 1,
+ fragmentDelimiter: ' ... ',
+ ...highlightOptions,
+ };
}
static async fromConfig({
@@ -99,6 +143,9 @@ export class ElasticSearchSearchEngine implements SearchEngine {
aliasPostfix,
indexPrefix,
logger,
+ config.getOptional(
+ 'search.elasticsearch.highlightOptions',
+ ),
);
}
@@ -111,7 +158,10 @@ export class ElasticSearchSearchEngine implements SearchEngine {
return create(this.elasticSearchClientOptions);
}
- protected translator(query: SearchQuery): ConcreteElasticSearchQuery {
+ protected translator(
+ query: SearchQuery,
+ options?: ElasticSearchQueryTranslatorOptions,
+ ): ConcreteElasticSearchQuery {
const { term, filters = {}, types, pageCursor } = query;
const filter = Object.entries(filters)
@@ -143,13 +193,25 @@ export class ElasticSearchSearchEngine implements SearchEngine {
const pageSize = 25;
const { page } = decodePageCursor(pageCursor);
+ let esbRequestBodySearch = esb
+ .requestBodySearch()
+ .query(esb.boolQuery().filter(filter).must([esbQuery]))
+ .from(page * pageSize)
+ .size(pageSize);
+
+ if (options?.highlightOptions) {
+ esbRequestBodySearch = esbRequestBodySearch.highlight(
+ esb
+ .highlight('*')
+ .numberOfFragments(options.highlightOptions.numFragments as number)
+ .fragmentSize(options.highlightOptions.fragmentSize as number)
+ .preTags(options.highlightOptions.preTag)
+ .postTags(options.highlightOptions.postTag),
+ );
+ }
+
return {
- elasticSearchQuery: esb
- .requestBodySearch()
- .query(esb.boolQuery().filter(filter).must([esbQuery]))
- .from(page * pageSize)
- .size(pageSize)
- .toJSON(),
+ elasticSearchQuery: esbRequestBodySearch.toJSON(),
documentTypes: types,
pageSize,
};
@@ -193,8 +255,10 @@ export class ElasticSearchSearchEngine implements SearchEngine {
}
async query(query: SearchQuery): Promise {
- const { elasticSearchQuery, documentTypes, pageSize } =
- this.translator(query);
+ const { elasticSearchQuery, documentTypes, pageSize } = this.translator(
+ query,
+ { highlightOptions: this.highlightOptions },
+ );
const queryIndices = documentTypes
? documentTypes.map(it => this.constructSearchAlias(it))
: this.constructSearchAlias('*');
@@ -204,7 +268,7 @@ export class ElasticSearchSearchEngine implements SearchEngine {
body: elasticSearchQuery,
});
const { page } = decodePageCursor(query.pageCursor);
- const hasNextPage = result.body.hits.total.value > page * pageSize;
+ const hasNextPage = result.body.hits.total.value > (page + 1) * pageSize;
const hasPreviousPage = page > 0;
const nextPageCursor = hasNextPage
? encodePageCursor({ page: page + 1 })
@@ -214,10 +278,27 @@ export class ElasticSearchSearchEngine implements SearchEngine {
: undefined;
return {
- results: result.body.hits.hits.map((d: ElasticSearchResult) => ({
- type: this.getTypeFromIndex(d._index),
- document: d._source,
- })),
+ results: result.body.hits.hits.map((d: ElasticSearchResult) => {
+ const resultItem: IndexableResult = {
+ type: this.getTypeFromIndex(d._index),
+ document: d._source,
+ };
+
+ if (d.highlight) {
+ resultItem.highlight = {
+ preTag: this.highlightOptions.preTag as string,
+ postTag: this.highlightOptions.postTag as string,
+ fields: Object.fromEntries(
+ Object.entries(d.highlight).map(([field, fragments]) => [
+ field,
+ fragments.join(this.highlightOptions.fragmentDelimiter),
+ ]),
+ ),
+ };
+ }
+
+ return resultItem;
+ }),
nextPageCursor,
previousPageCursor,
};
diff --git a/plugins/search-backend-module-elasticsearch/src/engines/index.ts b/plugins/search-backend-module-elasticsearch/src/engines/index.ts
index 19c24b37ff..c5628776ef 100644
--- a/plugins/search-backend-module-elasticsearch/src/engines/index.ts
+++ b/plugins/search-backend-module-elasticsearch/src/engines/index.ts
@@ -18,6 +18,9 @@ export { ElasticSearchSearchEngine } from './ElasticSearchSearchEngine';
export type {
ConcreteElasticSearchQuery,
ElasticSearchClientOptions,
+ ElasticSearchHighlightConfig,
+ ElasticSearchHighlightOptions,
+ ElasticSearchQueryTranslatorOptions,
} from './ElasticSearchSearchEngine';
export type {
ElasticSearchSearchEngineIndexer,
diff --git a/plugins/search-backend-module-elasticsearch/src/index.ts b/plugins/search-backend-module-elasticsearch/src/index.ts
index 223141be6b..744e12f8c8 100644
--- a/plugins/search-backend-module-elasticsearch/src/index.ts
+++ b/plugins/search-backend-module-elasticsearch/src/index.ts
@@ -23,6 +23,9 @@
export { ElasticSearchSearchEngine } from './engines';
export type {
ElasticSearchClientOptions,
+ ElasticSearchHighlightConfig,
+ ElasticSearchHighlightOptions,
+ ElasticSearchQueryTranslatorOptions,
ElasticSearchSearchEngineIndexer,
ElasticSearchSearchEngineIndexerOptions,
} from './engines';
diff --git a/plugins/search-backend-module-pg/CHANGELOG.md b/plugins/search-backend-module-pg/CHANGELOG.md
index c53a909f11..3a55eb6fc3 100644
--- a/plugins/search-backend-module-pg/CHANGELOG.md
+++ b/plugins/search-backend-module-pg/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-search-backend-module-pg
+## 0.3.3-next.1
+
+### Patch Changes
+
+- 71d3432710: Search Engines will now index documents in batches of 1000 instead of 100 (under the hood). This may result in your Backstage backend consuming slightly more memory during index runs, but should dramatically improve indexing performance for large document sets.
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/plugin-search-backend-node@0.6.1-next.1
+ - @backstage/plugin-search-common@0.3.4-next.0
+
## 0.3.3-next.0
### Patch Changes
diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json
index b86aa62d2f..b033a145d8 100644
--- a/plugins/search-backend-module-pg/package.json
+++ b/plugins/search-backend-module-pg/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend-module-pg",
"description": "A module for the search backend that implements search using PostgreSQL",
- "version": "0.3.3-next.0",
+ "version": "0.3.3-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,15 +23,15 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/plugin-search-backend-node": "^0.6.1-next.0",
- "@backstage/plugin-search-common": "^0.3.3",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/plugin-search-backend-node": "^0.6.1-next.1",
+ "@backstage/plugin-search-common": "^0.3.4-next.0",
"lodash": "^4.17.21",
"knex": "^1.0.2"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.24-next.0",
- "@backstage/cli": "^0.17.1-next.0"
+ "@backstage/backend-test-utils": "^0.1.24-next.1",
+ "@backstage/cli": "^0.17.1-next.2"
},
"files": [
"dist",
diff --git a/plugins/search-backend-node/CHANGELOG.md b/plugins/search-backend-node/CHANGELOG.md
index 23fb80dc3a..0be74d49d1 100644
--- a/plugins/search-backend-node/CHANGELOG.md
+++ b/plugins/search-backend-node/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-search-backend-node
+## 0.6.1-next.1
+
+### Patch Changes
+
+- 71d3432710: Search Engines will now index documents in batches of 1000 instead of 100 (under the hood). This may result in your Backstage backend consuming slightly more memory during index runs, but should dramatically improve indexing performance for large document sets.
+- 3a74e203a8: Support generating highlighted matched terms in search result data
+- Updated dependencies
+ - @backstage/backend-tasks@0.3.1-next.1
+ - @backstage/plugin-search-common@0.3.4-next.0
+
## 0.6.1-next.0
### Patch Changes
diff --git a/plugins/search-backend-node/api-report.md b/plugins/search-backend-node/api-report.md
index 61b8a124f7..0f379b3fc1 100644
--- a/plugins/search-backend-node/api-report.md
+++ b/plugins/search-backend-node/api-report.md
@@ -82,6 +82,10 @@ export class LunrSearchEngine implements SearchEngine {
// (undocumented)
getIndexer(type: string): Promise;
// (undocumented)
+ protected highlightPostTag: string;
+ // (undocumented)
+ protected highlightPreTag: string;
+ // (undocumented)
protected logger: Logger;
// (undocumented)
protected lunrIndices: Record;
diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json
index 433edcfbd0..b55c77c05c 100644
--- a/plugins/search-backend-node/package.json
+++ b/plugins/search-backend-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend-node",
"description": "A library for Backstage backend plugins that want to interact with the search backend plugin",
- "version": "0.6.1-next.0",
+ "version": "0.6.1-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,18 +23,19 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-tasks": "^0.3.1-next.0",
+ "@backstage/backend-tasks": "^0.3.1-next.1",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-search-common": "^0.3.3",
+ "@backstage/plugin-search-common": "^0.3.4-next.0",
"@types/lunr": "^2.3.3",
"lodash": "^4.17.21",
"lunr": "^2.3.9",
"node-abort-controller": "^3.0.1",
+ "uuid": "^8.3.2",
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/cli": "^0.17.1-next.0"
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/cli": "^0.17.1-next.2"
},
"files": [
"dist"
diff --git a/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts b/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts
index b0bd2bca8f..84b1a35165 100644
--- a/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts
+++ b/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts
@@ -25,6 +25,7 @@ import {
LunrSearchEngine,
decodePageCursor,
encodePageCursor,
+ parseHighlightFields,
} from './LunrSearchEngine';
import { LunrSearchEngineIndexer } from './LunrSearchEngineIndexer';
import { TestPipeline } from '../test-utils';
@@ -33,6 +34,12 @@ import { TestPipeline } from '../test-utils';
* Just used to test the default translator shipped with LunrSearchEngine.
*/
class LunrSearchEngineForTests extends LunrSearchEngine {
+ getHighlightTags() {
+ return {
+ pre: this.highlightPreTag,
+ post: this.highlightPostTag,
+ };
+ }
getDocStore() {
return this.docStore;
}
@@ -468,6 +475,58 @@ describe('LunrSearchEngine', () => {
});
});
+ it('should perform search query and return highlight metadata on match', async () => {
+ const inspectableSearchEngine = new LunrSearchEngineForTests({
+ logger: getVoidLogger(),
+ });
+
+ const mockDocuments = [
+ {
+ title: 'testTitle',
+ text: 'testText',
+ location: 'test/location',
+ },
+ ];
+
+ // Mock indexing of 1 document
+ const indexer = await getActualIndexer(
+ inspectableSearchEngine,
+ 'test-index',
+ );
+ await TestPipeline.withSubject(indexer)
+ .withDocuments(mockDocuments)
+ .execute();
+
+ // Perform search query
+ const mockedSearchResult = await inspectableSearchEngine.query({
+ term: 'test',
+ filters: {},
+ });
+
+ const highlightTags = inspectableSearchEngine.getHighlightTags();
+ expect(mockedSearchResult).toMatchObject({
+ results: [
+ {
+ document: {
+ title: 'testTitle',
+ text: 'testText',
+ location: 'test/location',
+ },
+ highlight: {
+ preTag: highlightTags.pre,
+ postTag: highlightTags.post,
+ fields: {
+ title: `${highlightTags.pre}testTitle${highlightTags.post}`,
+ text: `${highlightTags.pre}testText${highlightTags.post}`,
+ location: `${highlightTags.pre}test/location${highlightTags.post}`,
+ },
+ },
+ },
+ ],
+ nextPageCursor: undefined,
+ });
+ });
+
it('should perform search query and return search results on partial match', async () => {
const mockDocuments = [
{
@@ -976,3 +1035,33 @@ describe('encodePageCursor', () => {
expect(encodePageCursor({ page: 1 })).toEqual('MQ==');
});
});
+
+describe('parseHighlightFields', () => {
+ it('should parse highlight metadata', () => {
+ expect(
+ parseHighlightFields({
+ preTag: '<>',
+ postTag: '>',
+ doc: { foo: 'abc def', bar: 'ghi jkl' },
+ positionMetadata: {
+ test: {
+ foo: {
+ position: [[0, 3]],
+ },
+ },
+ anotherTest: {
+ foo: {
+ position: [[4, 3]],
+ },
+ bar: {
+ position: [[4, 3]],
+ },
+ },
+ },
+ }),
+ ).toEqual({
+ foo: '<>abc> <>def>',
+ bar: 'ghi <>jkl>',
+ });
+ });
+});
diff --git a/plugins/search-backend-node/src/engines/LunrSearchEngine.ts b/plugins/search-backend-node/src/engines/LunrSearchEngine.ts
index 09e8729ba8..656cd3e1eb 100644
--- a/plugins/search-backend-node/src/engines/LunrSearchEngine.ts
+++ b/plugins/search-backend-node/src/engines/LunrSearchEngine.ts
@@ -22,6 +22,7 @@ import {
SearchEngine,
} from '@backstage/plugin-search-common';
import lunr from 'lunr';
+import { v4 as uuid } from 'uuid';
import { Logger } from 'winston';
import { LunrSearchEngineIndexer } from './LunrSearchEngineIndexer';
@@ -51,10 +52,15 @@ export class LunrSearchEngine implements SearchEngine {
protected lunrIndices: Record = {};
protected docStore: Record;
protected logger: Logger;
+ protected highlightPreTag: string;
+ protected highlightPostTag: string;
constructor({ logger }: { logger: Logger }) {
this.logger = logger;
this.docStore = {};
+ const uuidTag = uuid();
+ this.highlightPreTag = `<${uuidTag}>`;
+ this.highlightPostTag = `${uuidTag}>`;
}
protected translator: QueryTranslator = ({
@@ -198,9 +204,20 @@ export class LunrSearchEngine implements SearchEngine {
// Translate results into IndexableResultSet
const realResultSet: IndexableResultSet = {
- results: results.slice(offset, offset + pageSize).map(d => {
- return { type: d.type, document: this.docStore[d.result.ref] };
- }),
+ results: results.slice(offset, offset + pageSize).map(d => ({
+ type: d.type,
+ document: this.docStore[d.result.ref],
+ highlight: {
+ preTag: this.highlightPreTag,
+ postTag: this.highlightPostTag,
+ fields: parseHighlightFields({
+ preTag: this.highlightPreTag,
+ postTag: this.highlightPostTag,
+ doc: this.docStore[d.result.ref],
+ positionMetadata: d.result.matchData.metadata as any,
+ }),
+ },
+ })),
nextPageCursor,
previousPageCursor,
};
@@ -222,3 +239,52 @@ export function decodePageCursor(pageCursor?: string): { page: number } {
export function encodePageCursor({ page }: { page: number }): string {
return Buffer.from(`${page}`, 'utf-8').toString('base64');
}
+
+type ParseHighlightFieldsProps = {
+ preTag: string;
+ postTag: string;
+ doc: any;
+ positionMetadata: {
+ [term: string]: {
+ [field: string]: {
+ position: number[][];
+ };
+ };
+ };
+};
+
+export function parseHighlightFields({
+ preTag,
+ postTag,
+ doc,
+ positionMetadata,
+}: ParseHighlightFieldsProps): { [field: string]: string } {
+ // Merge the field positions across all query terms
+ const highlightFieldPositions = Object.values(positionMetadata).reduce(
+ (fieldPositions, metadata) => {
+ Object.keys(metadata).map(fieldKey => {
+ fieldPositions[fieldKey] = fieldPositions[fieldKey] ?? [];
+ fieldPositions[fieldKey].push(...metadata[fieldKey].position);
+ });
+
+ return fieldPositions;
+ },
+ {} as { [field: string]: number[][] },
+ );
+
+ return Object.fromEntries(
+ Object.entries(highlightFieldPositions).map(([field, positions]) => {
+ positions.sort((a, b) => b[0] - a[0]);
+
+ const highlightedField = positions.reduce((content, pos) => {
+ return (
+ `${content.substring(0, pos[0])}${preTag}` +
+ `${content.substring(pos[0], pos[0] + pos[1])}` +
+ `${postTag}${content.substring(pos[0] + pos[1])}`
+ );
+ }, doc[field]);
+
+ return [field, highlightedField];
+ }),
+ );
+}
diff --git a/plugins/search-backend-node/src/engines/LunrSearchEngineIndexer.ts b/plugins/search-backend-node/src/engines/LunrSearchEngineIndexer.ts
index a798f7c81f..4da27be94b 100644
--- a/plugins/search-backend-node/src/engines/LunrSearchEngineIndexer.ts
+++ b/plugins/search-backend-node/src/engines/LunrSearchEngineIndexer.ts
@@ -32,6 +32,7 @@ export class LunrSearchEngineIndexer extends BatchSearchEngineIndexer {
this.builder = new lunr.Builder();
this.builder.pipeline.add(lunr.trimmer, lunr.stopWordFilter, lunr.stemmer);
this.builder.searchPipeline.add(lunr.stemmer);
+ this.builder.metadataWhitelist = ['position'];
}
// No async initialization required.
diff --git a/plugins/search-backend/CHANGELOG.md b/plugins/search-backend/CHANGELOG.md
index 656b969541..d07d86d4aa 100644
--- a/plugins/search-backend/CHANGELOG.md
+++ b/plugins/search-backend/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-search-backend
+## 0.5.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-search-backend-node@0.6.1-next.1
+ - @backstage/plugin-search-common@0.3.4-next.0
+ - @backstage/plugin-auth-node@0.2.1-next.1
+ - @backstage/plugin-permission-common@0.6.1-next.0
+ - @backstage/plugin-permission-node@0.6.1-next.1
+
## 0.5.2-next.0
### Patch Changes
diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json
index b0e35aecd2..e259b7b00b 100644
--- a/plugins/search-backend/package.json
+++ b/plugins/search-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend",
"description": "The Backstage backend plugin that provides your backstage app with search",
- "version": "0.5.2-next.0",
+ "version": "0.5.2-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,14 +23,14 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-auth-node": "^0.2.1-next.0",
- "@backstage/plugin-permission-common": "^0.6.0",
- "@backstage/plugin-permission-node": "^0.6.1-next.0",
- "@backstage/plugin-search-backend-node": "^0.6.1-next.0",
- "@backstage/plugin-search-common": "^0.3.3",
+ "@backstage/plugin-auth-node": "^0.2.1-next.1",
+ "@backstage/plugin-permission-common": "^0.6.1-next.0",
+ "@backstage/plugin-permission-node": "^0.6.1-next.1",
+ "@backstage/plugin-search-backend-node": "^0.6.1-next.1",
+ "@backstage/plugin-search-common": "^0.3.4-next.0",
"@backstage/types": "^1.0.0",
"@types/express": "^4.17.6",
"dataloader": "^2.0.0",
@@ -43,7 +43,7 @@
"zod": "^3.11.6"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/supertest": "^2.0.8",
"supertest": "^6.1.3"
},
diff --git a/plugins/search-common/CHANGELOG.md b/plugins/search-common/CHANGELOG.md
index f8caf9314b..9542374b28 100644
--- a/plugins/search-common/CHANGELOG.md
+++ b/plugins/search-common/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-search-common
+## 0.3.4-next.0
+
+### Patch Changes
+
+- 3a74e203a8: Support generating highlighted matched terms in search result data
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.6.1-next.0
+
## 0.3.3
### Patch Changes
diff --git a/plugins/search-common/api-report.md b/plugins/search-common/api-report.md
index bd5a56c5cc..495d77ed26 100644
--- a/plugins/search-common/api-report.md
+++ b/plugins/search-common/api-report.md
@@ -55,9 +55,21 @@ export interface Result {
// (undocumented)
document: TDocument;
// (undocumented)
+ highlight?: ResultHighlight;
+ // (undocumented)
type: string;
}
+// @beta
+export interface ResultHighlight {
+ // (undocumented)
+ fields: {
+ [field: string]: string;
+ };
+ postTag: string;
+ preTag: string;
+}
+
// @beta (undocumented)
export interface ResultSet {
// (undocumented)
diff --git a/plugins/search-common/package.json b/plugins/search-common/package.json
index db0858f7fc..9f07b557bd 100644
--- a/plugins/search-common/package.json
+++ b/plugins/search-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-common",
"description": "Common functionalities for Search, to be shared between various search-enabled plugins",
- "version": "0.3.3",
+ "version": "0.3.4-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"private": false,
@@ -40,10 +40,10 @@
},
"dependencies": {
"@backstage/types": "^1.0.0",
- "@backstage/plugin-permission-common": "^0.6.0"
+ "@backstage/plugin-permission-common": "^0.6.1-next.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0"
+ "@backstage/cli": "^0.17.1-next.2"
},
"jest": {
"roots": [
diff --git a/plugins/search-common/src/types.ts b/plugins/search-common/src/types.ts
index 4eedabeb71..220ac977e5 100644
--- a/plugins/search-common/src/types.ts
+++ b/plugins/search-common/src/types.ts
@@ -28,12 +28,37 @@ export interface SearchQuery {
pageCursor?: string;
}
+/**
+ * @beta
+ * Metadata for result relevant document fields with matched terms highlighted
+ * via wrapping in associated pre/post tags. The UI is expected to parse these
+ * field excerpts by replacing wrapping tags with applicable UI elements for rendering.
+ */
+export interface ResultHighlight {
+ /**
+ * Prefix tag for wrapping terms to be highlighted.
+ */
+ preTag: string;
+ /**
+ * Postfix tag for wrapping terms to be highlighted.
+ */
+ postTag: string;
+ fields: {
+ /**
+ * Matched document fields and associated excerpts containing highlighted
+ * terms wrapped in preTag and postTag to be parsed and rendered in the UI.
+ */
+ [field: string]: string;
+ };
+}
+
/**
* @beta
*/
export interface Result {
type: string;
document: TDocument;
+ highlight?: ResultHighlight;
}
/**
diff --git a/plugins/search-react/CHANGELOG.md b/plugins/search-react/CHANGELOG.md
index 9202d489ad..a7ee7fac2e 100644
--- a/plugins/search-react/CHANGELOG.md
+++ b/plugins/search-react/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-search-react
+## 0.2.0-next.2
+
+### Patch Changes
+
+- 3a74e203a8: Updated search result components to support rendering content with highlighted matched terms
+- Updated dependencies
+ - @backstage/plugin-search-common@0.3.4-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.2.0-next.1
### Minor Changes
diff --git a/plugins/search-react/api-report.md b/plugins/search-react/api-report.md
index e8d3afff82..9f61070854 100644
--- a/plugins/search-react/api-report.md
+++ b/plugins/search-react/api-report.md
@@ -3,6 +3,8 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
+///
+
import { ApiRef } from '@backstage/core-plugin-api';
import { AsyncState } from 'react-use/lib/useAsync';
import { JsonObject } from '@backstage/types';
@@ -11,6 +13,20 @@ import { default as React_2 } from 'react';
import { SearchQuery } from '@backstage/plugin-search-common';
import { SearchResultSet } from '@backstage/plugin-search-common';
+// @public (undocumented)
+export const HighlightedSearchResultText: ({
+ text,
+ preTag,
+ postTag,
+}: HighlightedSearchResultTextProps) => JSX.Element;
+
+// @public (undocumented)
+export type HighlightedSearchResultTextProps = {
+ text: string;
+ preTag: string;
+ postTag: string;
+};
+
// @public
export class MockSearchApi implements SearchApi {
constructor(mockedResults?: SearchResultSet | undefined);
diff --git a/plugins/search-react/package.json b/plugins/search-react/package.json
index 7579c3b9f8..17f3e1a12f 100644
--- a/plugins/search-react/package.json
+++ b/plugins/search-react/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-search-react",
- "version": "0.2.0-next.1",
+ "version": "0.2.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,19 +31,20 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/plugin-search-common": "^0.3.3",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/plugin-search-common": "^0.3.4-next.0",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/version-bridge": "^1.0.1",
"react-use": "^17.3.2",
- "@backstage/types": "^1.0.0"
+ "@backstage/types": "^1.0.0",
+ "@material-ui/core": "^4.12.2"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0",
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
"@testing-library/jest-dom": "^5.10.1"
diff --git a/plugins/search-react/src/components/HighlightedSearchResultText/HighlightedSearchResultText.test.tsx b/plugins/search-react/src/components/HighlightedSearchResultText/HighlightedSearchResultText.test.tsx
new file mode 100644
index 0000000000..3a78a66541
--- /dev/null
+++ b/plugins/search-react/src/components/HighlightedSearchResultText/HighlightedSearchResultText.test.tsx
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+
+import React from 'react';
+import { screen } from '@testing-library/react';
+import { renderInTestApp } from '@backstage/test-utils';
+import { HighlightedSearchResultText } from './HighlightedSearchResultText';
+
+describe('HighlightedSearchResultText', () => {
+ it('properly highlights result text', async () => {
+ await renderInTestApp(
+ ,
+ );
+
+ expect(
+ screen.getByText('highlighted').tagName.toLocaleLowerCase('en-US'),
+ ).toEqual('mark');
+ expect(screen.getByText('text').tagName.toLocaleLowerCase('en-US')).toEqual(
+ 'mark',
+ );
+ });
+});
diff --git a/plugins/search-react/src/components/HighlightedSearchResultText/HighlightedSearchResultText.tsx b/plugins/search-react/src/components/HighlightedSearchResultText/HighlightedSearchResultText.tsx
new file mode 100644
index 0000000000..a749f184fe
--- /dev/null
+++ b/plugins/search-react/src/components/HighlightedSearchResultText/HighlightedSearchResultText.tsx
@@ -0,0 +1,62 @@
+/*
+ * 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.
+ */
+
+import React, { useMemo } from 'react';
+import { makeStyles } from '@material-ui/core';
+
+const useStyles = makeStyles(
+ () => ({
+ highlight: {},
+ }),
+ { name: 'BackstageHighlightedSearchResultText' },
+);
+
+/**
+ * @public
+ */
+export type HighlightedSearchResultTextProps = {
+ text: string;
+ preTag: string;
+ postTag: string;
+};
+
+/**
+ * @public
+ */
+export const HighlightedSearchResultText = ({
+ text,
+ preTag,
+ postTag,
+}: HighlightedSearchResultTextProps) => {
+ const classes = useStyles();
+ const terms = useMemo(
+ () => text.split(new RegExp(`(${preTag}.+?${postTag})`)),
+ [postTag, preTag, text],
+ );
+ return (
+ <>
+ {terms.map((t, idx) =>
+ t.includes(preTag) ? (
+
+ {t.replace(new RegExp(`${preTag}|${postTag}`, 'g'), '')}
+
+ ) : (
+ t
+ ),
+ )}
+ >
+ );
+};
diff --git a/plugins/search-react/src/components/HighlightedSearchResultText/index.ts b/plugins/search-react/src/components/HighlightedSearchResultText/index.ts
new file mode 100644
index 0000000000..679a254827
--- /dev/null
+++ b/plugins/search-react/src/components/HighlightedSearchResultText/index.ts
@@ -0,0 +1,17 @@
+/*
+ * 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 * from './HighlightedSearchResultText';
diff --git a/plugins/search-react/src/components/index.ts b/plugins/search-react/src/components/index.ts
new file mode 100644
index 0000000000..679a254827
--- /dev/null
+++ b/plugins/search-react/src/components/index.ts
@@ -0,0 +1,17 @@
+/*
+ * 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 * from './HighlightedSearchResultText';
diff --git a/plugins/search-react/src/index.ts b/plugins/search-react/src/index.ts
index d24bd097de..9813661f3e 100644
--- a/plugins/search-react/src/index.ts
+++ b/plugins/search-react/src/index.ts
@@ -22,6 +22,7 @@
export { searchApiRef, MockSearchApi } from './api';
export type { SearchApi } from './api';
+export * from './components';
export {
SearchContextProvider,
useSearch,
diff --git a/plugins/search/CHANGELOG.md b/plugins/search/CHANGELOG.md
index 397357326b..6d3c643c46 100644
--- a/plugins/search/CHANGELOG.md
+++ b/plugins/search/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-search
+## 0.8.1-next.2
+
+### Patch Changes
+
+- 3a74e203a8: Updated search result components to support rendering content with highlighted matched terms
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-search-react@0.2.0-next.2
+ - @backstage/plugin-search-common@0.3.4-next.0
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.8.1-next.1
### Patch Changes
diff --git a/plugins/search/api-report.md b/plugins/search/api-report.md
index 31d357f10c..21b9df5dda 100644
--- a/plugins/search/api-report.md
+++ b/plugins/search/api-report.md
@@ -10,6 +10,7 @@ import { IconComponent } from '@backstage/core-plugin-api';
import { InputBaseProps } from '@material-ui/core';
import { ReactElement } from 'react';
import { ReactNode } from 'react';
+import { ResultHighlight } from '@backstage/plugin-search-common';
import { RouteRef } from '@backstage/core-plugin-api';
import { SearchDocument } from '@backstage/plugin-search-common';
import { SearchResult as SearchResult_2 } from '@backstage/plugin-search-common';
@@ -19,6 +20,7 @@ import { SearchResult as SearchResult_2 } from '@backstage/plugin-search-common'
// @public (undocumented)
export const DefaultResultListItem: ({
result,
+ highlight,
icon,
secondaryAction,
lineClamp,
@@ -26,6 +28,7 @@ export const DefaultResultListItem: ({
icon?: ReactNode;
secondaryAction?: ReactNode;
result: SearchDocument;
+ highlight?: ResultHighlight | undefined;
lineClamp?: number | undefined;
}) => JSX.Element;
@@ -192,6 +195,28 @@ export interface SearchModalProps {
toggleModal: () => void;
}
+// @public
+export const SearchModalProvider: ({
+ children,
+ showInitially,
+}: SearchModalProviderProps) => JSX.Element;
+
+// @public
+export type SearchModalProviderProps = {
+ children: ReactNode;
+ showInitially?: boolean;
+};
+
+// @public
+export type SearchModalValue = {
+ state: {
+ hidden: boolean;
+ open: boolean;
+ };
+ toggleModal: () => void;
+ setOpen: (open: boolean) => void;
+};
+
// Warning: (ae-missing-release-tag) "SearchPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
@@ -294,12 +319,5 @@ export type SidebarSearchProps = {
};
// @public
-export function useSearchModal(initialState?: boolean): {
- state: {
- hidden: boolean;
- open: boolean;
- };
- toggleModal: () => void;
- setOpen: (open: boolean) => void;
-};
+export function useSearchModal(initialState?: boolean): SearchModalValue;
```
diff --git a/plugins/search/package.json b/plugins/search/package.json
index ee8c84fd58..476b67504c 100644
--- a/plugins/search/package.json
+++ b/plugins/search/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search",
"description": "The Backstage plugin that provides your backstage app with search",
- "version": "0.8.1-next.1",
+ "version": "0.8.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,23 +33,23 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
- "@backstage/plugin-search-react": "^0.2.0-next.1",
- "@backstage/plugin-search-common": "^0.3.3",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
+ "@backstage/plugin-search-common": "^0.3.4-next.0",
+ "@backstage/plugin-search-react": "^0.2.0-next.2",
"@backstage/theme": "^0.2.15",
"@backstage/types": "^1.0.0",
+ "@backstage/version-bridge": "^1.0.1",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.57",
"qs": "^6.9.4",
"react-router": "6.0.0-beta.0",
"react-router-dom": "6.0.0-beta.0",
- "react-text-truncate": "^0.18.0",
"react-use": "^17.2.4"
},
"peerDependencies": {
@@ -57,10 +57,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
diff --git a/plugins/search/src/components/DefaultResultListItem/DefaultResultListItem.stories.tsx b/plugins/search/src/components/DefaultResultListItem/DefaultResultListItem.stories.tsx
index 91143bb292..fb56d1ecdb 100644
--- a/plugins/search/src/components/DefaultResultListItem/DefaultResultListItem.stories.tsx
+++ b/plugins/search/src/components/DefaultResultListItem/DefaultResultListItem.stories.tsx
@@ -15,7 +15,10 @@
*/
import { Button } from '@backstage/core-components';
+import { lightTheme } from '@backstage/theme';
import { Grid } from '@material-ui/core';
+import CssBaseline from '@material-ui/core/CssBaseline';
+import { ThemeProvider } from '@material-ui/core/styles';
import FindInPageIcon from '@material-ui/icons/FindInPage';
import GroupIcon from '@material-ui/icons/Group';
import React from 'react';
@@ -77,3 +80,47 @@ export const WithSecondaryAction = () => {
/>
);
};
+export const WithHighlightedResults = () => {
+ return (
+ ',
+ postTag: '',
+ fields: { text: 'some text from the search result' },
+ }}
+ />
+ );
+};
+
+export const WithCustomHighlightedResults = () => {
+ const customTheme = {
+ ...lightTheme,
+ overrides: {
+ ...lightTheme.overrides,
+ BackstageHighlightedSearchResultText: {
+ highlight: {
+ color: 'inherit',
+ backgroundColor: 'inherit',
+ fontWeight: 'bold',
+ textDecoration: 'underline',
+ },
+ },
+ },
+ };
+
+ return (
+
+
+ ',
+ postTag: '',
+ fields: { text: 'some text from the search result' },
+ }}
+ />
+
+
+ );
+};
diff --git a/plugins/search/src/components/DefaultResultListItem/DefaultResultListItem.test.tsx b/plugins/search/src/components/DefaultResultListItem/DefaultResultListItem.test.tsx
index 68f00f9301..26d081b3b6 100644
--- a/plugins/search/src/components/DefaultResultListItem/DefaultResultListItem.test.tsx
+++ b/plugins/search/src/components/DefaultResultListItem/DefaultResultListItem.test.tsx
@@ -20,11 +20,6 @@ import { renderInTestApp } from '@backstage/test-utils';
import FindInPageIcon from '@material-ui/icons/FindInPage';
import { DefaultResultListItem } from './DefaultResultListItem';
-// Using canvas to render text..
-jest.mock('react-text-truncate', () => {
- return ({ text }: { text: string }) => {text};
-});
-
describe('DefaultResultListItem', () => {
const result = {
title: 'title',
diff --git a/plugins/search/src/components/DefaultResultListItem/DefaultResultListItem.tsx b/plugins/search/src/components/DefaultResultListItem/DefaultResultListItem.tsx
index 46045f91ee..5ce2d0744a 100644
--- a/plugins/search/src/components/DefaultResultListItem/DefaultResultListItem.tsx
+++ b/plugins/search/src/components/DefaultResultListItem/DefaultResultListItem.tsx
@@ -15,7 +15,11 @@
*/
import React, { ReactNode } from 'react';
-import { SearchDocument } from '@backstage/plugin-search-common';
+import {
+ ResultHighlight,
+ SearchDocument,
+} from '@backstage/plugin-search-common';
+import { HighlightedSearchResultText } from '@backstage/plugin-search-react';
import {
ListItem,
ListItemIcon,
@@ -24,17 +28,18 @@ import {
Divider,
} from '@material-ui/core';
import { Link } from '@backstage/core-components';
-import TextTruncate from 'react-text-truncate';
type Props = {
icon?: ReactNode;
secondaryAction?: ReactNode;
result: SearchDocument;
+ highlight?: ResultHighlight;
lineClamp?: number;
};
export const DefaultResultListItem = ({
result,
+ highlight,
icon,
secondaryAction,
lineClamp = 5,
@@ -45,14 +50,36 @@ export const DefaultResultListItem = ({
{icon && {icon}}
+ ) : (
+ result.title
+ )
+ }
secondary={
-
+
+ {highlight?.fields.text ? (
+
+ ) : (
+ result.text
+ )}
+
}
/>
{secondaryAction && {secondaryAction}}
diff --git a/plugins/search/src/components/SearchModal/SearchModal.tsx b/plugins/search/src/components/SearchModal/SearchModal.tsx
index 55fd0cb977..b3df52d42e 100644
--- a/plugins/search/src/components/SearchModal/SearchModal.tsx
+++ b/plugins/search/src/components/SearchModal/SearchModal.tsx
@@ -137,7 +137,7 @@ export const Modal = ({ toggleModal }: SearchModalProps) => {
{({ results }) => (
- {results.map(({ document }) => (
+ {results.map(({ document, highlight }) => (
{
))}
diff --git a/plugins/search/src/components/SearchModal/index.tsx b/plugins/search/src/components/SearchModal/index.tsx
index 51e5d94c07..0bb1df4a7b 100644
--- a/plugins/search/src/components/SearchModal/index.tsx
+++ b/plugins/search/src/components/SearchModal/index.tsx
@@ -15,4 +15,8 @@
*/
export { SearchModal } from './SearchModal';
export type { SearchModalChildrenProps, SearchModalProps } from './SearchModal';
-export { useSearchModal } from './useSearchModal';
+export { SearchModalProvider, useSearchModal } from './useSearchModal';
+export type {
+ SearchModalProviderProps,
+ SearchModalValue,
+} from './useSearchModal';
diff --git a/plugins/search/src/components/SearchModal/useSearchModal.tsx b/plugins/search/src/components/SearchModal/useSearchModal.tsx
index 3871687d1a..b813a8db7a 100644
--- a/plugins/search/src/components/SearchModal/useSearchModal.tsx
+++ b/plugins/search/src/components/SearchModal/useSearchModal.tsx
@@ -14,7 +14,88 @@
* limitations under the License.
*/
-import { useCallback, useState } from 'react';
+import React, { ReactNode, useCallback, useContext, useState } from 'react';
+import {
+ createVersionedContext,
+ createVersionedValueMap,
+} from '@backstage/version-bridge';
+
+/**
+ * The state of the search modal, as well as functions for changing the modal's
+ * visibility.
+ *
+ * @public
+ */
+export type SearchModalValue = {
+ state: {
+ hidden: boolean;
+ open: boolean;
+ };
+ toggleModal: () => void;
+ setOpen: (open: boolean) => void;
+};
+
+const SearchModalContext = createVersionedContext<{
+ 1: SearchModalValue | undefined;
+}>('analytics-context');
+
+/**
+ * Props for the SearchModalProvider.
+ * @public
+ */
+export type SearchModalProviderProps = {
+ /**
+ * Children which should have access to the SearchModal context and the
+ * associated useSearchModal() hook.
+ */
+ children: ReactNode;
+
+ /**
+ * Pass true if the modal should be rendered initially.
+ */
+ showInitially?: boolean;
+};
+
+/**
+ * A context provider responsible for storing and managing state related to the
+ * search modal.
+ *
+ * @remarks
+ * If you need to control visibility of the search toggle outside of the modal
+ * itself, you can optionally place this higher up in the react tree where your
+ * custom code and the search modal share the same context.
+ *
+ * @example
+ * ```tsx
+ * import {
+ * SearchModalProvider,
+ * SidebarSearchModal,
+ * } from '@backstage/plugin-search';
+ *
+ * // ...
+ *
+ *
+ *
+ *
+ * {({ toggleModal }) => }
+ *
+ *
+ * ```
+ *
+ * @public
+ */
+export const SearchModalProvider = ({
+ children,
+ showInitially,
+}: SearchModalProviderProps) => {
+ const value = useSearchModal(showInitially);
+ const versionedValue = createVersionedValueMap({ 1: value });
+ return (
+
+ {children}
+
+ );
+};
/**
* Use this hook to manage the state of {@link SearchModal}
@@ -27,6 +108,10 @@ import { useCallback, useState } from 'react';
* functions for changing the visibility of the modal.
*/
export function useSearchModal(initialState = false) {
+ // Check for any existing parent context.
+ const parentContext = useContext(SearchModalContext);
+ const parentContextValue = parentContext?.atVersion(1);
+
const [state, setState] = useState({
hidden: !initialState,
open: initialState,
@@ -50,5 +135,8 @@ export function useSearchModal(initialState = false) {
[],
);
- return { state, toggleModal, setOpen };
+ // Inherit from parent context, if set.
+ return parentContextValue?.state
+ ? parentContextValue
+ : { state, toggleModal, setOpen };
}
diff --git a/plugins/search/src/components/SidebarSearchModal/SidebarSearchModal.tsx b/plugins/search/src/components/SidebarSearchModal/SidebarSearchModal.tsx
index 4310c03b15..191a09395c 100644
--- a/plugins/search/src/components/SidebarSearchModal/SidebarSearchModal.tsx
+++ b/plugins/search/src/components/SidebarSearchModal/SidebarSearchModal.tsx
@@ -20,6 +20,7 @@ import { IconComponent } from '@backstage/core-plugin-api';
import {
SearchModal,
SearchModalChildrenProps,
+ SearchModalProvider,
useSearchModal,
} from '../SearchModal';
@@ -28,7 +29,7 @@ export type SidebarSearchModalProps = {
children?: (props: SearchModalChildrenProps) => JSX.Element;
};
-export const SidebarSearchModal = (props: SidebarSearchModalProps) => {
+const SidebarSearchModalContent = (props: SidebarSearchModalProps) => {
const { state, toggleModal } = useSearchModal();
const Icon = props.icon ? props.icon : SearchIcon;
@@ -48,3 +49,11 @@ export const SidebarSearchModal = (props: SidebarSearchModalProps) => {
>
);
};
+
+export const SidebarSearchModal = (props: SidebarSearchModalProps) => {
+ return (
+
+
+
+ );
+};
diff --git a/plugins/search/src/index.ts b/plugins/search/src/index.ts
index dccb2ce835..1457ac781d 100644
--- a/plugins/search/src/index.ts
+++ b/plugins/search/src/index.ts
@@ -34,10 +34,16 @@ export type {
SearchFilterComponentProps,
SearchFilterWrapperProps,
} from './components/SearchFilter';
-export { SearchModal, useSearchModal } from './components/SearchModal';
+export {
+ SearchModal,
+ SearchModalProvider,
+ useSearchModal,
+} from './components/SearchModal';
export type {
SearchModalChildrenProps,
SearchModalProps,
+ SearchModalProviderProps,
+ SearchModalValue,
} from './components/SearchModal';
export { SearchPage as Router } from './components/SearchPage';
export { SearchResultPager } from './components/SearchResultPager';
diff --git a/plugins/sentry/CHANGELOG.md b/plugins/sentry/CHANGELOG.md
index e07f0b44f1..ad52b9d10b 100644
--- a/plugins/sentry/CHANGELOG.md
+++ b/plugins/sentry/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-sentry
+## 0.3.43-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.3.43-next.1
### Patch Changes
diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json
index 107425858e..2af804803b 100644
--- a/plugins/sentry/package.json
+++ b/plugins/sentry/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-sentry",
"description": "A Backstage plugin that integrates towards Sentry",
- "version": "0.3.43-next.1",
+ "version": "0.3.43-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -35,10 +35,10 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-table/core": "^3.1.0",
"@material-ui/core": "^4.12.2",
@@ -53,10 +53,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json
index 4613df7730..b72eb64a5b 100644
--- a/plugins/shortcuts/package.json
+++ b/plugins/shortcuts/package.json
@@ -24,8 +24,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/theme": "^0.2.15",
"@backstage/types": "^1.0.0",
"@material-ui/core": "^4.12.2",
@@ -42,10 +42,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/sonarqube/CHANGELOG.md b/plugins/sonarqube/CHANGELOG.md
index 51ebbddc91..d76ad6bc83 100644
--- a/plugins/sonarqube/CHANGELOG.md
+++ b/plugins/sonarqube/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-sonarqube
+## 0.3.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.3.5-next.1
### Patch Changes
diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json
index 3bb7cb848f..e41f53d500 100644
--- a/plugins/sonarqube/package.json
+++ b/plugins/sonarqube/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-sonarqube",
"description": "",
- "version": "0.3.5-next.1",
+ "version": "0.3.5-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -36,27 +36,27 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.57",
"@material-ui/styles": "^4.10.0",
"cross-fetch": "^3.1.5",
- "rc-progress": "3.2.4",
+ "rc-progress": "3.3.2",
"react-use": "^17.2.4"
},
"peerDependencies": {
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/splunk-on-call/CHANGELOG.md b/plugins/splunk-on-call/CHANGELOG.md
index f29d621a80..79b30a5761 100644
--- a/plugins/splunk-on-call/CHANGELOG.md
+++ b/plugins/splunk-on-call/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-splunk-on-call
+## 0.3.29-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.3.29-next.1
### Patch Changes
diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json
index c65d348567..c7ca761c1e 100644
--- a/plugins/splunk-on-call/package.json
+++ b/plugins/splunk-on-call/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-splunk-on-call",
"description": "A Backstage plugin that integrates towards Splunk On-Call",
- "version": "0.3.29-next.1",
+ "version": "0.3.29-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,10 +34,10 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -51,10 +51,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/stack-overflow-backend/CHANGELOG.md b/plugins/stack-overflow-backend/CHANGELOG.md
index de81256acb..2df87fa5ab 100644
--- a/plugins/stack-overflow-backend/CHANGELOG.md
+++ b/plugins/stack-overflow-backend/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-stack-overflow-backend
+## 0.1.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-search-common@0.3.4-next.0
+
## 0.1.0
### Minor Changes
diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json
index 19bfe5d68d..571ea0b34e 100644
--- a/plugins/stack-overflow-backend/package.json
+++ b/plugins/stack-overflow-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-stack-overflow-backend",
- "version": "0.1.0",
+ "version": "0.1.1-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,8 +33,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/plugin-search-common": "^0.3.3",
- "@backstage/config": "^1.0.0",
+ "@backstage/plugin-search-common": "^0.3.4-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"qs": "^6.9.4",
"cross-fetch": "^3.1.5",
"winston": "^3.2.1"
diff --git a/plugins/stack-overflow/CHANGELOG.md b/plugins/stack-overflow/CHANGELOG.md
index aa32b2eab6..17e0195963 100644
--- a/plugins/stack-overflow/CHANGELOG.md
+++ b/plugins/stack-overflow/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-stack-overflow
+## 0.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-search-common@0.3.4-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/plugin-home@0.4.21-next.2
+
## 0.1.1-next.1
### Patch Changes
diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json
index cd72199203..7e07f10b33 100644
--- a/plugins/stack-overflow/package.json
+++ b/plugins/stack-overflow/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-stack-overflow",
- "version": "0.1.1-next.1",
+ "version": "0.1.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,11 +23,11 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/config": "^1.0.0",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/plugin-home": "^0.4.21-next.1",
- "@backstage/plugin-search-common": "^0.3.3",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/plugin-home": "^0.4.21-next.2",
+ "@backstage/plugin-search-common": "^0.3.4-next.0",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -42,10 +42,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
"@types/jest": "^26.0.7",
diff --git a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md
index f9e8597d12..c30c6da7e8 100644
--- a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md
+++ b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-tech-insights-backend-module-jsonfc
+## 0.1.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-tech-insights-node@0.3.0-next.2
+
## 0.1.16-next.1
### Patch Changes
diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json
index f8f028e796..4b720cac92 100644
--- a/plugins/tech-insights-backend-module-jsonfc/package.json
+++ b/plugins/tech-insights-backend-module-jsonfc/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-tech-insights-backend-module-jsonfc",
- "version": "0.1.16-next.1",
+ "version": "0.1.16-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,11 +34,11 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
"@backstage/plugin-tech-insights-common": "^0.2.4",
- "@backstage/plugin-tech-insights-node": "^0.3.0-next.1",
+ "@backstage/plugin-tech-insights-node": "^0.3.0-next.2",
"ajv": "^8.10.0",
"json-rules-engine": "^6.1.2",
"lodash": "^4.17.21",
@@ -46,7 +46,7 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1"
+ "@backstage/cli": "^0.17.1-next.2"
},
"files": [
"dist"
diff --git a/plugins/tech-insights-backend/CHANGELOG.md b/plugins/tech-insights-backend/CHANGELOG.md
index e91f179d07..7745f989ba 100644
--- a/plugins/tech-insights-backend/CHANGELOG.md
+++ b/plugins/tech-insights-backend/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-tech-insights-backend
+## 0.4.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/backend-tasks@0.3.1-next.1
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/plugin-tech-insights-node@0.3.0-next.2
+ - @backstage/catalog-client@1.0.2-next.0
+
## 0.4.0-next.1
### Minor Changes
diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json
index e9ae330d21..d6881cb19c 100644
--- a/plugins/tech-insights-backend/package.json
+++ b/plugins/tech-insights-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-tech-insights-backend",
- "version": "0.4.0-next.1",
+ "version": "0.4.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,14 +34,14 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.1",
- "@backstage/backend-tasks": "^0.3.1-next.0",
- "@backstage/catalog-client": "^1.0.1",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/backend-tasks": "^0.3.1-next.1",
+ "@backstage/catalog-client": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
"@backstage/plugin-tech-insights-common": "^0.2.4",
- "@backstage/plugin-tech-insights-node": "^0.3.0-next.1",
+ "@backstage/plugin-tech-insights-node": "^0.3.0-next.2",
"@types/express": "^4.17.6",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
@@ -54,8 +54,8 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.24-next.0",
- "@backstage/cli": "^0.17.1-next.1",
+ "@backstage/backend-test-utils": "^0.1.24-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/supertest": "^2.0.8",
"@types/semver": "^7.3.8",
"supertest": "^6.1.3",
diff --git a/plugins/tech-insights-node/CHANGELOG.md b/plugins/tech-insights-node/CHANGELOG.md
index 4f194c51eb..a9907265aa 100644
--- a/plugins/tech-insights-node/CHANGELOG.md
+++ b/plugins/tech-insights-node/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-tech-insights-node
+## 0.3.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+
## 0.3.0-next.1
### Minor Changes
diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json
index 54e0634c20..4600421e29 100644
--- a/plugins/tech-insights-node/package.json
+++ b/plugins/tech-insights-node/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-tech-insights-node",
- "version": "0.3.0-next.1",
+ "version": "0.3.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,15 +33,15 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/plugin-tech-insights-common": "^0.2.4",
"@types/luxon": "^2.0.5",
"luxon": "^2.0.2",
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1"
+ "@backstage/cli": "^0.17.1-next.2"
},
"files": [
"dist"
diff --git a/plugins/tech-insights/CHANGELOG.md b/plugins/tech-insights/CHANGELOG.md
index 3f60530f37..e59d9d09c3 100644
--- a/plugins/tech-insights/CHANGELOG.md
+++ b/plugins/tech-insights/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-tech-insights
+## 0.2.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.2.1-next.1
### Patch Changes
diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json
index 08796b52e1..be53883371 100644
--- a/plugins/tech-insights/package.json
+++ b/plugins/tech-insights/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-tech-insights",
- "version": "0.2.1-next.1",
+ "version": "0.2.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -28,11 +28,11 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/plugin-tech-insights-common": "^0.2.4",
"@backstage/theme": "^0.2.15",
"@backstage/types": "^1.0.0",
@@ -47,10 +47,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json
index 27be1b33c4..5821d6036c 100644
--- a/plugins/tech-radar/package.json
+++ b/plugins/tech-radar/package.json
@@ -34,8 +34,8 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -49,10 +49,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/techdocs-addons-test-utils/CHANGELOG.md b/plugins/techdocs-addons-test-utils/CHANGELOG.md
index 57ca350fdd..30c46cb6b1 100644
--- a/plugins/techdocs-addons-test-utils/CHANGELOG.md
+++ b/plugins/techdocs-addons-test-utils/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-techdocs-addons-test-utils
+## 0.1.0-next.1
+
+### Patch Changes
+
+- f84e0e2818: Fixed a bug preventing testing of TechDocs Addons whose dom contained `
` tags.
+- 7c398c6473: The `TechDocsAddonTester` class may now be extended if custom test configuration is needed.
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-techdocs@1.1.1-next.2
+ - @backstage/plugin-techdocs-react@0.1.1-next.2
+ - @backstage/plugin-catalog@1.2.0-next.2
+ - @backstage/plugin-search-react@0.2.0-next.2
+ - @backstage/core-app-api@1.0.2-next.1
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/integration-react@1.1.0-next.2
+ - @backstage/test-utils@1.1.0-next.2
+
## 0.1.0-next.0
### Minor Changes
diff --git a/plugins/techdocs-addons-test-utils/api-report.md b/plugins/techdocs-addons-test-utils/api-report.md
index a32d2d4854..3808b65b84 100644
--- a/plugins/techdocs-addons-test-utils/api-report.md
+++ b/plugins/techdocs-addons-test-utils/api-report.md
@@ -10,30 +10,23 @@ import { screen as screen_2 } from 'testing-library__dom';
import { TechDocsEntityMetadata } from '@backstage/plugin-techdocs-react';
import { TechDocsMetadata } from '@backstage/plugin-techdocs-react';
-// @public (undocumented)
+// @public
export class TechDocsAddonTester {
- // (undocumented)
+ protected constructor(addons: ReactElement[]);
atPath(path: string): this;
- // (undocumented)
build(): React_2.ReactElement<
any,
string | React_2.JSXElementConstructor
>;
- // (undocumented)
static buildAddonsInTechDocs(addons: ReactElement[]): TechDocsAddonTester;
- // (undocumented)
renderWithEffects(): Promise<
typeof screen_2 & {
shadowRoot: ShadowRoot | null;
}
>;
- // (undocumented)
- withApis(apis: TechdocsAddonTesterApis): this;
- // (undocumented)
+ withApis(apis: TechdocsAddonTesterApis): this;
withDom(dom: ReactElement): this;
- // (undocumented)
withEntity(entity: Partial): this;
- // (undocumented)
withMetadata(metadata: Partial): this;
}
```
diff --git a/plugins/techdocs-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json
index ef4e01d304..55d8685a28 100644
--- a/plugins/techdocs-addons-test-utils/package.json
+++ b/plugins/techdocs-addons-test-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-techdocs-addons-test-utils",
- "version": "0.1.0-next.0",
+ "version": "0.1.0-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -32,15 +32,15 @@
"postpack": "backstage-cli package postpack"
},
"dependencies": {
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/integration-react": "^1.1.0-next.1",
- "@backstage/plugin-catalog": "^1.2.0-next.1",
- "@backstage/plugin-search-react": "^0.2.0-next.1",
- "@backstage/plugin-techdocs": "^1.1.1-next.1",
- "@backstage/plugin-techdocs-react": "^0.1.1-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/core-components": "^0.9.4-next.1",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/integration-react": "^1.1.0-next.2",
+ "@backstage/plugin-catalog": "^1.2.0-next.2",
+ "@backstage/plugin-search-react": "^0.2.0-next.2",
+ "@backstage/plugin-techdocs": "^1.1.1-next.2",
+ "@backstage/plugin-techdocs-react": "^0.1.1-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.9.13",
"@material-ui/icons": "^4.9.1",
@@ -56,8 +56,8 @@
"react-dom": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/dev-utils": "^1.0.2-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/dev-utils": "^1.0.2-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/techdocs-addons-test-utils/src/test-utils.tsx b/plugins/techdocs-addons-test-utils/src/test-utils.tsx
index 7894b96154..2c20199038 100644
--- a/plugins/techdocs-addons-test-utils/src/test-utils.tsx
+++ b/plugins/techdocs-addons-test-utils/src/test-utils.tsx
@@ -46,6 +46,7 @@ const techdocsApi = {
const techdocsStorageApi = {
getApiOrigin: jest.fn(),
+ getBaseUrl: jest.fn(),
getEntityDocs: jest.fn(),
syncEntityDocs: jest.fn(),
};
@@ -64,14 +65,18 @@ type TechDocsAddonTesterTestApiPair = TApi extends infer TImpl
: never;
/** @ignore */
-type TechdocsAddonTesterApis = TechDocsAddonTesterTestApiPair[];
+type TechdocsAddonTesterApis = {
+ [TIndex in keyof TApiPairs]: TechDocsAddonTesterTestApiPair<
+ TApiPairs[TIndex]
+ >;
+};
type TechDocsAddonTesterOptions = {
dom: ReactElement;
entity: Partial;
metadata: Partial;
componentId: string;
- apis: TechdocsAddonTesterApis;
+ apis: TechdocsAddonTesterApis;
path: string;
};
@@ -108,22 +113,40 @@ const defaultDom = (
);
/**
+ * Utility class for rendering TechDocs Addons end-to-end within the TechDocs
+ * reader page, with a set of givens (e.g. page DOM, metadata, etc).
+ *
+ * @example
+ * ```tsx
+ * const { getByText } = await TechDocsAddonTester.buildAddonsInTechDocs([])
+ * .withDom(TEST_CONTENT)
+ * .renderWithEffects();
+ *
+ * expect(getByText('TEST_CONTENT')).toBeInTheDocument();
+ * ```
+ *
* @public
*/
-
export class TechDocsAddonTester {
private options: TechDocsAddonTesterOptions = defaultOptions;
private addons: ReactElement[];
+ /**
+ * Get a TechDocsAddonTester instance for a given set of Addons.
+ */
static buildAddonsInTechDocs(addons: ReactElement[]) {
return new TechDocsAddonTester(addons);
}
- private constructor(addons: ReactElement[]) {
+ // Protected in order to allow extension but not direct instantiation.
+ protected constructor(addons: ReactElement[]) {
this.addons = addons;
}
- withApis(apis: TechdocsAddonTesterApis) {
+ /**
+ * Provide mock API implementations if your Addon expects any.
+ */
+ withApis(apis: TechdocsAddonTesterApis) {
const refs = apis.map(([ref]) => ref);
this.options.apis = this.options.apis
.filter(([ref]) => !refs.includes(ref))
@@ -131,28 +154,46 @@ export class TechDocsAddonTester {
return this;
}
+ /**
+ * Provide mock HTML if your Addon expects it in the shadow DOM.
+ */
withDom(dom: ReactElement) {
this.options.dom = dom;
return this;
}
+ /**
+ * Provide mock techdocs_metadata.json values if your Addon needs it.
+ */
withMetadata(metadata: Partial) {
this.options.metadata = metadata;
return this;
}
+ /**
+ * Provide a mock entity if your Addon needs it. This also controls the base
+ * path at which the Addon is rendered.
+ */
withEntity(entity: Partial) {
this.options.entity = entity;
return this;
}
+ /**
+ * Provide the TechDocs page path at which the Addon is rendered (e.g. the
+ * part of the path after the entity namespace/kind/name).
+ */
atPath(path: string) {
this.options.path = path;
return this;
}
+ /**
+ * Return a fully configured and mocked TechDocs reader page within a test
+ * App instance, using the given Addon(s).
+ */
build() {
- const apis: TechdocsAddonTesterApis = [
+ const apis: TechdocsAddonTesterApis = [
[techdocsApiRef, techdocsApi],
[techdocsStorageApiRef, techdocsStorageApi],
[searchApiRef, searchApi],
@@ -179,7 +220,9 @@ export class TechDocsAddonTester {
techdocsStorageApi.getApiOrigin.mockResolvedValue(
'https://backstage.example.com/api/techdocs',
);
-
+ techdocsStorageApi.getBaseUrl.mockResolvedValue(
+ `https://backstage.example.com/api/techdocs/${entityName.namespace}/${entityName.kind}/${entityName.name}/${this.options.path}`,
+ );
techdocsStorageApi.getEntityDocs.mockResolvedValue(
renderToStaticMarkup(this.options.dom || defaultDom),
);
@@ -215,11 +258,19 @@ export class TechDocsAddonTester {
});
}
- // Components using useEffect to perform an asynchronous action (such as fetch) must be rendered within an async
- // act call to properly get the final state, even with mocked responses. This utility method makes the signature a bit
- // cleaner, since act doesn't return the result of the evaluated function.
- // https://github.com/testing-library/react-testing-library/issues/281
- // https://github.com/facebook/react/pull/14853
+ /**
+ * Render the Addon within a fully configured and mocked TechDocs reader.
+ *
+ * @remarks
+ * Components using useEffect to perform an asynchronous action (such as
+ * fetch) must be rendered within an async act call to properly get the final
+ * state, even with mocked responses. This utility method makes the signature
+ * a bit cleaner, since act doesn't return the result of the evaluated
+ * function.
+ *
+ * @see https://github.com/testing-library/react-testing-library/issues/281
+ * @see https://github.com/facebook/react/pull/14853
+ */
async renderWithEffects(): Promise<
typeof screen & { shadowRoot: ShadowRoot | null }
> {
diff --git a/plugins/techdocs-backend/CHANGELOG.md b/plugins/techdocs-backend/CHANGELOG.md
index b6f750865b..ddaecb0f1f 100644
--- a/plugins/techdocs-backend/CHANGELOG.md
+++ b/plugins/techdocs-backend/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-techdocs-backend
+## 1.1.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-search-common@0.3.4-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/integration@1.2.0-next.1
+ - @backstage/plugin-permission-common@0.6.1-next.0
+ - @backstage/plugin-techdocs-node@1.1.1-next.1
+ - @backstage/catalog-client@1.0.2-next.0
+ - @backstage/plugin-catalog-common@1.0.2-next.0
+
## 1.1.1-next.0
### Patch Changes
diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json
index c88b970474..124de18d8e 100644
--- a/plugins/techdocs-backend/package.json
+++ b/plugins/techdocs-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-techdocs-backend",
"description": "The Backstage backend plugin that renders technical documentation for your components",
- "version": "1.1.1-next.0",
+ "version": "1.1.1-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,16 +34,16 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/catalog-client": "^1.0.1",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/catalog-client": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/plugin-catalog-common": "^1.0.1",
- "@backstage/plugin-permission-common": "^0.6.0",
- "@backstage/plugin-search-common": "^0.3.3",
- "@backstage/plugin-techdocs-node": "^1.1.1-next.0",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/plugin-catalog-common": "^1.0.2-next.0",
+ "@backstage/plugin-permission-common": "^0.6.1-next.0",
+ "@backstage/plugin-search-common": "^0.3.4-next.0",
+ "@backstage/plugin-techdocs-node": "^1.1.1-next.1",
"@types/express": "^4.17.6",
"dockerode": "^3.3.1",
"express": "^4.17.1",
@@ -56,9 +56,9 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.24-next.0",
- "@backstage/cli": "^0.17.1-next.0",
- "@backstage/plugin-search-backend-node": "0.6.1-next.0",
+ "@backstage/backend-test-utils": "^0.1.24-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/plugin-search-backend-node": "0.6.1-next.1",
"@types/dockerode": "^3.3.0",
"msw": "^0.35.0",
"supertest": "^6.1.3"
diff --git a/plugins/techdocs-backend/src/search/DefaultTechDocsCollatorFactory.ts b/plugins/techdocs-backend/src/search/DefaultTechDocsCollatorFactory.ts
index 915b027854..d458eeaba0 100644
--- a/plugins/techdocs-backend/src/search/DefaultTechDocsCollatorFactory.ts
+++ b/plugins/techdocs-backend/src/search/DefaultTechDocsCollatorFactory.ts
@@ -179,7 +179,18 @@ export class DefaultTechDocsCollatorFactory implements DocumentCollatorFactory {
},
},
);
- const searchIndex = await searchIndexResponse.json();
+
+ // todo(@backstage/techdocs-core): remove Promise.race() when node-fetch is 3.x+
+ // workaround for fetch().json() hanging in node-fetch@2.x.x, fixed in 3.x.x
+ // https://github.com/node-fetch/node-fetch/issues/665
+ const searchIndex = await Promise.race([
+ searchIndexResponse.json(),
+ new Promise((_resolve, reject) => {
+ setTimeout(() => {
+ reject('Could not parse JSON in 5 seconds.');
+ }, 5000);
+ }),
+ ]);
return searchIndex.docs.map((doc: MkSearchIndexDoc) => ({
title: unescape(doc.title),
diff --git a/plugins/techdocs-module-addons-contrib/CHANGELOG.md b/plugins/techdocs-module-addons-contrib/CHANGELOG.md
index 30c428220c..076bc12bb8 100644
--- a/plugins/techdocs-module-addons-contrib/CHANGELOG.md
+++ b/plugins/techdocs-module-addons-contrib/CHANGELOG.md
@@ -1,5 +1,47 @@
# @backstage/plugin-techdocs-module-addons-contrib
+## 0.1.0-next.2
+
+### Patch Changes
+
+- 52419be116: Create a TechDocs `` addon that allows users to set a font size in the browser's local storage for the text of documentation pages.
+
+ Here's an example on how to use it in a Backstage app:
+
+ ```diff
+ import {
+ DefaultTechDocsHome,
+ TechDocsIndexPage,
+ TechDocsReaderPage,
+ } from '@backstage/plugin-techdocs';
+ import { TechDocsAddons } from '@backstage/plugin-techdocs-react/alpha';
+ +import { TextSize } from '@backstage/plugin-techdocs-module-addons-contrib';
+
+ const AppRoutes = () => {
+
+ // other plugin routes
+ }>
+
+
+
}
+ >
+
+ +
+
+
+ ;
+ };
+ ```
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-techdocs-react@0.1.1-next.2
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/integration@1.2.0-next.1
+ - @backstage/integration-react@1.1.0-next.2
+
## 0.1.0-next.1
### Patch Changes
diff --git a/plugins/techdocs-module-addons-contrib/api-report.md b/plugins/techdocs-module-addons-contrib/api-report.md
index 076b05957c..efe88e2d5c 100644
--- a/plugins/techdocs-module-addons-contrib/api-report.md
+++ b/plugins/techdocs-module-addons-contrib/api-report.md
@@ -7,22 +7,25 @@
import { BackstagePlugin } from '@backstage/core-plugin-api';
+// @public
+export const ExpandableNavigation: () => JSX.Element | null;
+
// @public
export const ReportIssue: (props: ReportIssueProps) => JSX.Element | null;
-// @public (undocumented)
+// @public
export type ReportIssueProps = {
debounceTime?: number;
templateBuilder?: ReportIssueTemplateBuilder;
};
-// @public (undocumented)
+// @public
export type ReportIssueTemplate = {
title: string;
body: string;
};
-// @public (undocumented)
+// @public
export type ReportIssueTemplateBuilder = ({
selection,
}: {
@@ -31,4 +34,7 @@ export type ReportIssueTemplateBuilder = ({
// @public
export const techdocsModuleAddonsContribPlugin: BackstagePlugin<{}, {}>;
+
+// @public
+export const TextSize: () => JSX.Element | null;
```
diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json
index 79224ef5fb..074d12a505 100644
--- a/plugins/techdocs-module-addons-contrib/package.json
+++ b/plugins/techdocs-module-addons-contrib/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-techdocs-module-addons-contrib",
"description": "Plugin module for contributed TechDocs Addons",
- "version": "0.1.0-next.1",
+ "version": "0.1.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,15 +34,16 @@
"postpack": "backstage-cli package postpack"
},
"dependencies": {
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/integration-react": "^1.1.0-next.1",
- "@backstage/plugin-techdocs-react": "^0.1.1-next.1",
+ "@backstage/core-components": "^0.9.4-next.1",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/integration-react": "^1.1.0-next.2",
+ "@backstage/plugin-techdocs-react": "^0.1.1-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.9.13",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.57",
+ "@react-hookz/web": "^13.0.0",
"git-url-parse": "^11.6.0",
"react-use": "^17.2.4"
},
@@ -50,11 +51,11 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/plugin-techdocs-addons-test-utils": "^0.1.0-next.0",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/plugin-techdocs-addons-test-utils": "^0.1.0-next.1",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/techdocs-module-addons-contrib/src/ExpandableNavigation/ExpandableNavigation.test.tsx b/plugins/techdocs-module-addons-contrib/src/ExpandableNavigation/ExpandableNavigation.test.tsx
new file mode 100644
index 0000000000..3efc923145
--- /dev/null
+++ b/plugins/techdocs-module-addons-contrib/src/ExpandableNavigation/ExpandableNavigation.test.tsx
@@ -0,0 +1,146 @@
+/*
+ * 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.
+ */
+
+import { TechDocsAddonTester } from '@backstage/plugin-techdocs-addons-test-utils';
+
+import React from 'react';
+import { fireEvent, waitFor } from '@testing-library/react';
+
+import { ExpandableNavigation } from '../plugin';
+
+const mockNavWithSublevels = (
+
+);
+
+const mockNavWithoutSublevels = (
+
+);
+
+describe('ExpandableNavigation', () => {
+ it('renders without exploding', async () => {
+ const { getByRole } = await TechDocsAddonTester.buildAddonsInTechDocs([
+
,
+ ])
+ .withDom(mockNavWithSublevels)
+ .renderWithEffects();
+
+ expect(getByRole('button', { name: 'expand-nav' })).toBeInTheDocument();
+ });
+
+ it('expands and collapses navigation', async () => {
+ const { getByRole, shadowRoot } =
+ await TechDocsAddonTester.buildAddonsInTechDocs([
+
,
+ ])
+ .withDom(mockNavWithSublevels)
+ .renderWithEffects();
+
+ const toggles =
+ shadowRoot!.querySelectorAll
('.md-toggle');
+
+ expect(toggles).toHaveLength(2);
+ toggles.forEach(item => {
+ expect(item).not.toBeChecked();
+ });
+
+ const expandButton = getByRole('button', { name: 'expand-nav' });
+
+ fireEvent.click(expandButton);
+
+ await waitFor(() => {
+ expect(getByRole('button', { name: 'collapse-nav' })).toBeInTheDocument();
+ toggles.forEach(item => {
+ expect(item).toBeChecked();
+ });
+ });
+
+ const collapseButton = getByRole('button', { name: 'collapse-nav' });
+
+ fireEvent.click(collapseButton);
+
+ await waitFor(() => {
+ toggles.forEach(item => {
+ expect(item).not.toBeChecked();
+ });
+ });
+ });
+
+ it('does not render when navigation has no sublevels', async () => {
+ const { queryByRole } = await TechDocsAddonTester.buildAddonsInTechDocs([
+ ,
+ ])
+ .withDom(mockNavWithoutSublevels)
+ .renderWithEffects();
+
+ expect(
+ queryByRole('button', { name: 'expand-nav' }),
+ ).not.toBeInTheDocument();
+ });
+});
diff --git a/plugins/techdocs-module-addons-contrib/src/ExpandableNavigation/ExpandableNavigation.tsx b/plugins/techdocs-module-addons-contrib/src/ExpandableNavigation/ExpandableNavigation.tsx
new file mode 100644
index 0000000000..5ef76187e3
--- /dev/null
+++ b/plugins/techdocs-module-addons-contrib/src/ExpandableNavigation/ExpandableNavigation.tsx
@@ -0,0 +1,126 @@
+/*
+ * 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.
+ */
+
+import React, { useEffect, useCallback, useState } from 'react';
+import { useLocalStorageValue } from '@react-hookz/web';
+import { Button, withStyles } from '@material-ui/core';
+import ChevronRightIcon from '@material-ui/icons/ChevronRight';
+import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
+
+import { useShadowRootElements } from '@backstage/plugin-techdocs-react';
+
+const NESTED_LIST_TOGGLE = '.md-nav__item--nested .md-toggle';
+
+const EXPANDABLE_NAVIGATION_LOCAL_STORAGE =
+ '@backstage/techdocs-addons/nav-expanded';
+
+const StyledButton = withStyles({
+ root: {
+ position: 'absolute',
+ left: '220px',
+ top: '19px',
+ padding: 0,
+ minWidth: 0,
+ },
+})(Button);
+
+const CollapsedIcon = withStyles({
+ root: {
+ height: '20px',
+ width: '20px',
+ },
+})(ChevronRightIcon);
+
+const ExpandedIcon = withStyles({
+ root: {
+ height: '20px',
+ width: '20px',
+ },
+})(ExpandMoreIcon);
+
+type expandableNavigationLocalStorage = {
+ expandAllNestedNavs: boolean;
+};
+
+/**
+ * Show expand/collapse navigation button next to site name in main
+ * navigation menu if documentation site has nested navigation.
+ */
+export const ExpandableNavigationAddon = () => {
+ const defaultValue = { expandAllNestedNavs: false };
+ const [expanded, setExpanded] =
+ useLocalStorageValue(
+ EXPANDABLE_NAVIGATION_LOCAL_STORAGE,
+ defaultValue,
+ );
+ const [hasNavSubLevels, setHasNavSubLevels] = useState(false);
+
+ const [...checkboxToggles] = useShadowRootElements([
+ NESTED_LIST_TOGGLE,
+ ]);
+
+ const shouldToggle = useCallback(
+ (item: HTMLInputElement) => {
+ const isExpanded = item.checked;
+ const shouldExpand = expanded?.expandAllNestedNavs;
+
+ // Is collapsed but should expand
+ if (shouldExpand && !isExpanded) {
+ return true;
+ }
+
+ // Is expanded but should collapse
+ if (!shouldExpand && isExpanded) {
+ return true;
+ }
+
+ return false;
+ },
+ [expanded],
+ );
+
+ useEffect(() => {
+ // There is no nested navs
+ if (!checkboxToggles?.length) return;
+
+ setHasNavSubLevels(true);
+ checkboxToggles.forEach(item => {
+ if (shouldToggle(item)) item.click();
+ });
+ }, [expanded, shouldToggle, checkboxToggles]);
+
+ const handleState = () => {
+ setExpanded(prevState => ({
+ expandAllNestedNavs: !prevState?.expandAllNestedNavs,
+ }));
+ };
+
+ return (
+ <>
+ {hasNavSubLevels ? (
+
+ {expanded?.expandAllNestedNavs ? : }
+
+ ) : null}
+ >
+ );
+};
diff --git a/plugins/techdocs-module-addons-contrib/src/ExpandableNavigation/index.ts b/plugins/techdocs-module-addons-contrib/src/ExpandableNavigation/index.ts
new file mode 100644
index 0000000000..8f1c131d08
--- /dev/null
+++ b/plugins/techdocs-module-addons-contrib/src/ExpandableNavigation/index.ts
@@ -0,0 +1,17 @@
+/*
+ * 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 * from './ExpandableNavigation';
diff --git a/plugins/techdocs-module-addons-contrib/src/ReportIssue/ReportIssue.test.tsx b/plugins/techdocs-module-addons-contrib/src/ReportIssue/ReportIssue.test.tsx
index 68bde5c762..459fa1b65e 100644
--- a/plugins/techdocs-module-addons-contrib/src/ReportIssue/ReportIssue.test.tsx
+++ b/plugins/techdocs-module-addons-contrib/src/ReportIssue/ReportIssue.test.tsx
@@ -20,7 +20,7 @@ import React from 'react';
import { fireEvent, waitFor } from '@testing-library/react';
import { scmIntegrationsApiRef } from '@backstage/integration-react';
-import { ReportIssue } from '..';
+import { ReportIssue } from '../plugin';
const byUrl = jest.fn();
diff --git a/plugins/techdocs-module-addons-contrib/src/ReportIssue/ReportIssue.tsx b/plugins/techdocs-module-addons-contrib/src/ReportIssue/ReportIssue.tsx
index 2fe8d604e6..c8caa5ddbc 100644
--- a/plugins/techdocs-module-addons-contrib/src/ReportIssue/ReportIssue.tsx
+++ b/plugins/techdocs-module-addons-contrib/src/ReportIssue/ReportIssue.tsx
@@ -49,10 +49,21 @@ type Style = {
};
/**
+ * Props customizing the Addon.
+ *
* @public
*/
export type ReportIssueProps = {
+ /**
+ * Number of milliseconds after a user highlights some text before the report
+ * issue link appears above the highlighted text. Defaults to 500ms.
+ */
debounceTime?: number;
+
+ /**
+ * An optional function defining how a custom issue title and body should be
+ * constructed, given some selected text.
+ */
templateBuilder?: ReportIssueTemplateBuilder;
};
diff --git a/plugins/techdocs-module-addons-contrib/src/ReportIssue/types.ts b/plugins/techdocs-module-addons-contrib/src/ReportIssue/types.ts
index a4780535ca..0816b45d9d 100644
--- a/plugins/techdocs-module-addons-contrib/src/ReportIssue/types.ts
+++ b/plugins/techdocs-module-addons-contrib/src/ReportIssue/types.ts
@@ -15,14 +15,26 @@
*/
/**
+ * Properties for creating an issue in a remote issue tracker.
+ *
* @public
*/
export type ReportIssueTemplate = {
+ /**
+ * The title of the issue.
+ */
title: string;
+
+ /**
+ * The body or description of the issue.
+ */
body: string;
};
/**
+ * A function for returning a custom issue template, given a selection of text
+ * on a TechDocs page.
+ *
* @public
*/
export type ReportIssueTemplateBuilder = ({
diff --git a/plugins/techdocs-module-addons-contrib/src/TextSize/TextSize.test.tsx b/plugins/techdocs-module-addons-contrib/src/TextSize/TextSize.test.tsx
new file mode 100644
index 0000000000..6b4a055c2a
--- /dev/null
+++ b/plugins/techdocs-module-addons-contrib/src/TextSize/TextSize.test.tsx
@@ -0,0 +1,124 @@
+/*
+ * 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.
+ */
+
+import { TechDocsAddonTester } from '@backstage/plugin-techdocs-addons-test-utils';
+
+import React from 'react';
+
+import { fireEvent, waitFor } from '@testing-library/react';
+
+import { TextSize } from '../plugin';
+
+describe('TextSize', () => {
+ it('renders without exploding', async () => {
+ const { getByText } = await TechDocsAddonTester.buildAddonsInTechDocs([
+ ,
+ ])
+ .withDom(TEST_CONTENT)
+ .renderWithEffects();
+
+ expect(getByText('TEST_CONTENT')).toBeInTheDocument();
+ });
+
+ it('changes content text size using slider', async () => {
+ const { getByTitle, getByText, getByRole, getByDisplayValue } =
+ await TechDocsAddonTester.buildAddonsInTechDocs([])
+ .withDom(TEST_CONTENT)
+ .renderWithEffects();
+
+ fireEvent.click(getByTitle('Settings'));
+
+ await waitFor(() => {
+ expect(getByText('Text size')).toBeInTheDocument();
+ });
+
+ const slider = getByRole('slider');
+
+ slider.focus();
+
+ fireEvent.keyDown(slider, {
+ key: 'ArrowRight',
+ });
+
+ await waitFor(() => {
+ expect(getByDisplayValue('115')).toBeInTheDocument();
+ });
+
+ expect(slider).toHaveTextContent('115%');
+
+ let style = getComputedStyle(getByText('TEST_CONTENT'));
+
+ expect(style.getPropertyValue('--md-typeset-font-size')).toBe('18.4px');
+
+ fireEvent.keyDown(slider, {
+ key: 'ArrowLeft',
+ });
+
+ await waitFor(() => {
+ expect(getByDisplayValue('100')).toBeInTheDocument();
+ });
+
+ expect(slider).toHaveTextContent('100%');
+
+ style = getComputedStyle(getByText('TEST_CONTENT'));
+
+ expect(style.getPropertyValue('--md-typeset-font-size')).toBe('16px');
+ });
+
+ it('changes content text size using buttons', async () => {
+ const {
+ getByTitle,
+ getByText,
+ getByRole,
+ getByLabelText,
+ getByDisplayValue,
+ } = await TechDocsAddonTester.buildAddonsInTechDocs([])
+ .withDom(TEST_CONTENT)
+ .renderWithEffects();
+
+ fireEvent.click(getByTitle('Settings'));
+
+ await waitFor(() => {
+ expect(getByText('Text size')).toBeInTheDocument();
+ });
+
+ fireEvent.click(getByLabelText('Increase text size'));
+
+ await waitFor(() => {
+ expect(getByDisplayValue('115')).toBeInTheDocument();
+ });
+
+ const slider = getByRole('slider');
+
+ expect(slider).toHaveTextContent('115%');
+
+ let style = getComputedStyle(getByText('TEST_CONTENT'));
+
+ expect(style.getPropertyValue('--md-typeset-font-size')).toBe('18.4px');
+
+ fireEvent.click(getByLabelText('Decrease text size'));
+
+ await waitFor(() => {
+ expect(getByDisplayValue('100')).toBeInTheDocument();
+ });
+
+ expect(slider).toHaveTextContent('100%');
+
+ style = getComputedStyle(getByText('TEST_CONTENT'));
+
+ expect(style.getPropertyValue('--md-typeset-font-size')).toBe('16px');
+ });
+});
diff --git a/plugins/techdocs-module-addons-contrib/src/TextSize/TextSize.tsx b/plugins/techdocs-module-addons-contrib/src/TextSize/TextSize.tsx
new file mode 100644
index 0000000000..fc865c7826
--- /dev/null
+++ b/plugins/techdocs-module-addons-contrib/src/TextSize/TextSize.tsx
@@ -0,0 +1,243 @@
+/*
+ * 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.
+ */
+
+import React, {
+ ChangeEvent,
+ MouseEvent,
+ useMemo,
+ useState,
+ useEffect,
+ useCallback,
+} from 'react';
+
+import {
+ withStyles,
+ makeStyles,
+ useTheme,
+ Box,
+ MenuItem,
+ ListItemText,
+ Slider,
+ IconButton,
+ Typography,
+} from '@material-ui/core';
+import AddIcon from '@material-ui/icons/Add';
+import RemoveIcon from '@material-ui/icons/Remove';
+
+import { BackstageTheme } from '@backstage/theme';
+import { useShadowRootElements } from '@backstage/plugin-techdocs-react';
+
+const boxShadow =
+ '0 3px 1px rgba(0,0,0,0.1),0 4px 8px rgba(0,0,0,0.13),0 0 0 1px rgba(0,0,0,0.02)';
+
+const StyledSlider = withStyles(theme => ({
+ root: {
+ height: 2,
+ padding: '15px 0',
+ },
+ thumb: {
+ height: 18,
+ width: 18,
+ backgroundColor: theme.palette.common.white,
+ boxShadow: boxShadow,
+ marginTop: -9,
+ marginLeft: -9,
+ '&:focus, &:hover, &$active': {
+ boxShadow:
+ '0 3px 1px rgba(0,0,0,0.1),0 4px 8px rgba(0,0,0,0.3),0 0 0 1px rgba(0,0,0,0.02)',
+ // Reset on touch devices, it doesn't add specificity
+ '@media (hover: none)': {
+ boxShadow: boxShadow,
+ },
+ },
+ },
+ active: {},
+ valueLabel: {
+ top: '100%',
+ left: '50%',
+ transform: 'scale(1) translate(-50%, -5px) !important',
+ '& *': {
+ color: theme.palette.common.black,
+ fontSize: theme.typography.caption.fontSize,
+ background: 'transparent',
+ },
+ },
+ track: {
+ height: 2,
+ },
+ rail: {
+ height: 2,
+ opacity: 0.5,
+ },
+ mark: {
+ height: 10,
+ width: 1,
+ marginTop: -4,
+ },
+ markActive: {
+ opacity: 1,
+ backgroundColor: 'currentColor',
+ },
+}))(Slider);
+
+const settings = {
+ key: 'techdocs.addons.settings.textsize',
+ defaultValue: 100,
+};
+
+const marks = [
+ {
+ value: 90,
+ },
+ {
+ value: 100,
+ },
+ {
+ value: 115,
+ },
+ {
+ value: 130,
+ },
+ {
+ value: 150,
+ },
+];
+
+const useStyles = makeStyles((theme: BackstageTheme) => ({
+ container: {
+ color: theme.palette.textSubtle,
+ display: 'flex',
+ alignItems: 'center',
+ margin: 0,
+ minWidth: 200,
+ },
+ menuItem: {
+ '&:hover': {
+ background: 'transparent',
+ },
+ },
+ decreaseButton: {
+ marginRight: theme.spacing(1),
+ },
+ increaseButton: {
+ marginLeft: theme.spacing(1),
+ },
+}));
+
+export const TextSizeAddon = () => {
+ const classes = useStyles();
+ const theme = useTheme();
+ const [body] = useShadowRootElements(['body']);
+
+ const [value, setValue] = useState(() => {
+ const initialValue = localStorage?.getItem(settings.key);
+ return initialValue ? parseInt(initialValue, 10) : settings.defaultValue;
+ });
+
+ const values = useMemo(() => marks.map(mark => mark.value), []);
+ const index = useMemo(() => values.indexOf(value), [values, value]);
+ const min = useMemo(() => values[0], [values]);
+ const max = useMemo(() => values[values.length - 1], [values]);
+
+ const getValueText = useCallback(() => `${value}%`, [value]);
+
+ const handleChangeCommitted = useCallback(
+ (_event: ChangeEvent<{}>, newValue: number | number[]) => {
+ if (!Array.isArray(newValue)) {
+ setValue(newValue);
+ localStorage?.setItem(settings.key, String(newValue));
+ }
+ },
+ [setValue],
+ );
+
+ const handleDecreaseClick = useCallback(
+ (event: MouseEvent) => {
+ handleChangeCommitted(event, values[index - 1]);
+ },
+ [index, values, handleChangeCommitted],
+ );
+
+ const handleIncreaseClick = useCallback(
+ (event: MouseEvent) => {
+ handleChangeCommitted(event, values[index + 1]);
+ },
+ [index, values, handleChangeCommitted],
+ );
+
+ useEffect(() => {
+ if (!body) return;
+ const htmlFontSize =
+ (
+ theme.typography as BackstageTheme['typography'] & {
+ htmlFontSize?: number;
+ }
+ )?.htmlFontSize ?? 16;
+ body.style.setProperty(
+ '--md-typeset-font-size',
+ `${htmlFontSize * (value / 100)}px`,
+ );
+ }, [body, value, theme]);
+
+ return (
+
+ );
+};
diff --git a/plugins/techdocs-module-addons-contrib/src/TextSize/index.ts b/plugins/techdocs-module-addons-contrib/src/TextSize/index.ts
new file mode 100644
index 0000000000..ffcf655f63
--- /dev/null
+++ b/plugins/techdocs-module-addons-contrib/src/TextSize/index.ts
@@ -0,0 +1,16 @@
+/*
+ * 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 * from './TextSize';
diff --git a/plugins/techdocs-module-addons-contrib/src/index.ts b/plugins/techdocs-module-addons-contrib/src/index.ts
index 09fe1f8671..528afe5c0d 100644
--- a/plugins/techdocs-module-addons-contrib/src/index.ts
+++ b/plugins/techdocs-module-addons-contrib/src/index.ts
@@ -20,7 +20,12 @@
* @packageDocumentation
*/
-export { techdocsModuleAddonsContribPlugin, ReportIssue } from './plugin';
+export {
+ techdocsModuleAddonsContribPlugin,
+ ExpandableNavigation,
+ ReportIssue,
+ TextSize,
+} from './plugin';
export type {
ReportIssueProps,
ReportIssueTemplate,
diff --git a/plugins/techdocs-module-addons-contrib/src/plugin.ts b/plugins/techdocs-module-addons-contrib/src/plugin.ts
index e71ec2a5c7..6136f176d0 100644
--- a/plugins/techdocs-module-addons-contrib/src/plugin.ts
+++ b/plugins/techdocs-module-addons-contrib/src/plugin.ts
@@ -19,7 +19,9 @@ import {
createTechDocsAddonExtension,
TechDocsAddonLocations,
} from '@backstage/plugin-techdocs-react';
+import { ExpandableNavigationAddon } from './ExpandableNavigation';
import { ReportIssueAddon, ReportIssueProps } from './ReportIssue';
+import { TextSizeAddon } from './TextSize';
/**
* The TechDocs addons contrib plugin
@@ -32,11 +34,122 @@ export const techdocsModuleAddonsContribPlugin = createPlugin({
});
/**
- * TechDocs addon that lets you select text and open GitHub/Gitlab issues
+ * TechDocs addon that lets you expand/collapse the TechDocs main navigation
+ * and keep the preferred state in local storage. The addon will render as
+ * a button next to the site name if the documentation has nested navigation.
+ *
+ * @example
+ * Here's a simple example:
+ * ```
+ * import {
+ * DefaultTechDocsHome,
+ * TechDocsIndexPage,
+ * TechDocsReaderPage,
+ * } from '@backstage/plugin-techdocs';
+ * import { TechDocsAddons } from '@backstage/plugin-techdocs-react/alpha';
+ * import { ExpandableNavigation } from '@backstage/plugin-techdocs-module-addons-contrib';
+ *
+ *
+ * const AppRoutes = () => {
+ *
+ * // other plugin routes
+ * }>
+ *
+ *
+ * }
+ * >
+ *
+ *
+ *
+ *
+ * ;
+ * };
+ * ```
*
* @public
*/
+export const ExpandableNavigation = techdocsModuleAddonsContribPlugin.provide(
+ createTechDocsAddonExtension({
+ name: 'ExpandableNavigation',
+ location: TechDocsAddonLocations.PrimarySidebar,
+ component: ExpandableNavigationAddon,
+ }),
+);
+
+/**
+ * TechDocs addon that lets you select text and open GitHub/Gitlab issues
+ *
+ * @remarks
+ * Before using it, you should set up an `edit_uri` for your pages as explained {@link https://backstage.io/docs/features/techdocs/faqs#is-it-possible-for-users-to-suggest-changes-or-provide-feedback-on-a-techdocs-page | here} and remember, it only works for Github or Gitlab.
+ *
+ * @example
+ * Here's a simple example:
+ * ```
+ * import {
+ * DefaultTechDocsHome,
+ * TechDocsIndexPage,
+ * TechDocsReaderPage,
+ * } from '@backstage/plugin-techdocs';
+ * import { TechDocsAddons } from '@backstage/plugin-techdocs-react';
+ * import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib';
+ *
+ *
+ * const AppRoutes = () => {
+ *
+ * // other plugin routes
+ * }>
+ *
+ *
+ * }
+ * >
+ *
+ *
+ *
+ *
+ * ;
+ * };
+ * ```
+ *
+ * @example
+ * Here's an example with `debounceTime` and `templateBuilder` props:
+ * ```
+ * import {
+ * DefaultTechDocsHome,
+ * TechDocsIndexPage,
+ * TechDocsReaderPage,
+ * } from '@backstage/plugin-techdocs';
+ * import { TechDocsAddons } from '@backstage/plugin-techdocs-react';
+ * import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib';
+ *
+ * const templateBuilder = ({ selection }: ReportIssueTemplateBuilder) => (({
+ * title: 'Custom issue title',
+ * body: `Custom issue body: ${selection.toString()}`
+ * }))
+ *
+ * const AppRoutes = () => {
+ *
+ * // other plugin routes
+ * }>
+ *
+ *
+ * }
+ * >
+ *
+ *
+ *
+ *
+ * ;
+ * ```
+ * @param props - Object that can optionally contain `debounceTime` and `templateBuilder` properties.
+ * @public
+ */
export const ReportIssue = techdocsModuleAddonsContribPlugin.provide(
createTechDocsAddonExtension({
name: 'ReportIssue',
@@ -44,3 +157,49 @@ export const ReportIssue = techdocsModuleAddonsContribPlugin.provide(
component: ReportIssueAddon,
}),
);
+
+/**
+ * This TechDocs addon allows users to customize text size on documentation pages, they can select how much they want to increase or decrease the font size via slider or buttons.
+ *
+ * @remarks
+ * The default value for the font size is 100% of the HTML font size, if the theme does not have a `htmlFontSize` in its typography object, the addon will assume 16px as 100%, and remember, this setting is kept in the browser local storage.
+ *
+ * @example
+ * Here's a simple example:
+ * ```
+ * import {
+ * DefaultTechDocsHome,
+ * TechDocsIndexPage,
+ * TechDocsReaderPage,
+ * } from '@backstage/plugin-techdocs';
+ * import { TechDocsAddons } from '@backstage/plugin-techdocs-react';
+ * import { TextSize } from '@backstage/plugin-techdocs-module-addons-contrib';
+ *
+ *
+ * const AppRoutes = () => {
+ *
+ * // other plugin routes
+ * }>
+ *
+ *
+ * }
+ * >
+ *
+ *
+ *
+ *
+ * ;
+ * };
+ * ```
+ *
+ * @public
+ */
+export const TextSize = techdocsModuleAddonsContribPlugin.provide(
+ createTechDocsAddonExtension({
+ name: 'TextSize',
+ location: TechDocsAddonLocations.Settings,
+ component: TextSizeAddon,
+ }),
+);
diff --git a/plugins/techdocs-node/CHANGELOG.md b/plugins/techdocs-node/CHANGELOG.md
index 8fa2b168d3..b56e6c9287 100644
--- a/plugins/techdocs-node/CHANGELOG.md
+++ b/plugins/techdocs-node/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-techdocs-node
+## 1.1.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-search-common@0.3.4-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/integration@1.2.0-next.1
+
## 1.1.1-next.0
### Patch Changes
diff --git a/plugins/techdocs-node/api-report.md b/plugins/techdocs-node/api-report.md
index d099f7351a..c584dec40c 100644
--- a/plugins/techdocs-node/api-report.md
+++ b/plugins/techdocs-node/api-report.md
@@ -219,7 +219,7 @@ export class TechdocsGenerator implements GeneratorBase {
config: Config;
scmIntegrations: ScmIntegrationRegistry;
});
- static readonly defaultDockerImage = 'spotify/techdocs:v1.0.2';
+ static readonly defaultDockerImage = 'spotify/techdocs:v1.0.3';
static fromConfig(
config: Config,
options: GeneratorOptions,
diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json
index ff164bad93..930e7f9fde 100644
--- a/plugins/techdocs-node/package.json
+++ b/plugins/techdocs-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-techdocs-node",
"description": "Common node.js functionalities for TechDocs, to be shared between techdocs-backend plugin and techdocs-cli",
- "version": "1.1.1-next.0",
+ "version": "1.1.1-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"private": false,
@@ -42,12 +42,12 @@
"dependencies": {
"@azure/identity": "^2.0.1",
"@azure/storage-blob": "^12.5.0",
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/plugin-search-common": "^0.3.3",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/plugin-search-common": "^0.3.4-next.0",
"@google-cloud/storage": "^5.6.0",
"@trendyol-js/openstack-swift-sdk": "^0.0.5",
"@types/express": "^4.17.6",
@@ -64,7 +64,7 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/fs-extra": "^9.0.5",
"@types/js-yaml": "^4.0.0",
"@types/mime-types": "^2.1.0",
diff --git a/plugins/techdocs-node/src/stages/generate/techdocs.ts b/plugins/techdocs-node/src/stages/generate/techdocs.ts
index 41b17d3bc6..660b8e8cb5 100644
--- a/plugins/techdocs-node/src/stages/generate/techdocs.ts
+++ b/plugins/techdocs-node/src/stages/generate/techdocs.ts
@@ -53,7 +53,7 @@ export class TechdocsGenerator implements GeneratorBase {
* The default docker image (and version) used to generate content. Public
* and static so that techdocs-node consumers can use the same version.
*/
- public static readonly defaultDockerImage = 'spotify/techdocs:v1.0.2';
+ public static readonly defaultDockerImage = 'spotify/techdocs:v1.0.3';
private readonly logger: Logger;
private readonly containerRunner: ContainerRunner;
private readonly options: GeneratorConfig;
diff --git a/plugins/techdocs-react/CHANGELOG.md b/plugins/techdocs-react/CHANGELOG.md
index ae06a45ff3..bb1f2b3097 100644
--- a/plugins/techdocs-react/CHANGELOG.md
+++ b/plugins/techdocs-react/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-techdocs-react
+## 0.1.1-next.2
+
+### Patch Changes
+
+- 52419be116: Create a new addon location called "Settings", it is designed for addons that allow users to customize the reading experience in documentation pages.
+
+ Usage example:
+
+ ```tsx
+ const TextSize = techdocsModuleAddonsContribPlugin.provide(
+ createTechDocsAddonExtension({
+ name: 'TextSize',
+ location: TechDocsAddonLocations.Settings,
+ component: TextSizeAddon,
+ }),
+ );
+ ```
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.1.1-next.1
### Patch Changes
diff --git a/plugins/techdocs-react/api-report.md b/plugins/techdocs-react/api-report.md
index fa38feef14..b3ee9168a6 100644
--- a/plugins/techdocs-react/api-report.md
+++ b/plugins/techdocs-react/api-report.md
@@ -14,37 +14,40 @@ import { default as React_2 } from 'react';
import { ReactNode } from 'react';
import { SetStateAction } from 'react';
-// @alpha
+// @public
+export function createTechDocsAddonExtension(
+ options: TechDocsAddonOptions,
+): Extension<() => JSX.Element | null>;
+
+// @public
export function createTechDocsAddonExtension(
options: TechDocsAddonOptions,
): Extension<(props: TComponentProps) => JSX.Element | null>;
-// @alpha (undocumented)
-export const defaultTechDocsReaderPageValue: TechDocsReaderPageValue;
-
// @public
export type SyncResult = 'cached' | 'updated';
-// @alpha
+// @public
export const TECHDOCS_ADDONS_WRAPPER_KEY = 'techdocs.addons.wrapper.v1';
-// @alpha
+// @public
export const TechDocsAddonLocations: Readonly<{
readonly Header: 'Header';
readonly Subheader: 'Subheader';
+ readonly Settings: 'Settings';
readonly PrimarySidebar: 'PrimarySidebar';
readonly SecondarySidebar: 'SecondarySidebar';
readonly Content: 'Content';
}>;
-// @alpha
+// @public
export type TechDocsAddonOptions = {
name: string;
location: keyof typeof TechDocsAddonLocations;
component: ComponentType;
};
-// @alpha
+// @public
export const TechDocsAddons: React_2.ComponentType;
// @public
@@ -132,20 +135,20 @@ export interface TechDocsStorageApi {
// @public
export const techdocsStorageApiRef: ApiRef;
-// @alpha
+// @public
export const useShadowRoot: () => ShadowRoot | undefined;
-// @alpha
+// @public
export const useShadowRootElements: <
TReturnedElement extends HTMLElement = HTMLElement,
>(
selectors: string[],
) => TReturnedElement[];
-// @alpha
+// @public
export const useShadowRootSelection: (wait?: number) => Selection | null;
-// @alpha
+// @public
export const useTechDocsAddons: () => {
renderComponentByName: (name: string) => JSX.Element | null;
renderComponentsByLocation: (
@@ -153,6 +156,6 @@ export const useTechDocsAddons: () => {
) => (JSX.Element | null)[] | null;
};
-// @alpha
+// @public
export const useTechDocsReaderPage: () => TechDocsReaderPageValue;
```
diff --git a/plugins/techdocs-react/package.json b/plugins/techdocs-react/package.json
index 2d967e1062..9bd0d10e39 100644
--- a/plugins/techdocs-react/package.json
+++ b/plugins/techdocs-react/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-techdocs-react",
"description": "Shared frontend utilities for TechDocs and Addons",
- "version": "0.1.1-next.1",
+ "version": "0.1.1-next.2",
"private": false,
"publishConfig": {
"access": "public",
@@ -35,9 +35,9 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.1",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/version-bridge": "^1.0.1",
"@material-ui/core": "^4.12.2",
"@material-ui/lab": "4.0.0-alpha.57",
@@ -55,7 +55,7 @@
"devDependencies": {
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15"
},
"files": [
diff --git a/plugins/techdocs-react/src/addons.tsx b/plugins/techdocs-react/src/addons.tsx
index 39d110bee3..ce5b3eb5cd 100644
--- a/plugins/techdocs-react/src/addons.tsx
+++ b/plugins/techdocs-react/src/addons.tsx
@@ -31,13 +31,13 @@ export const TECHDOCS_ADDONS_KEY = 'techdocs.addons.addon.v1';
/**
* Marks the registry component.
- * @alpha
+ * @public
*/
export const TECHDOCS_ADDONS_WRAPPER_KEY = 'techdocs.addons.wrapper.v1';
/**
* TechDocs Addon registry.
- * @alpha
+ * @public
*/
export const TechDocsAddons: React.ComponentType = () => null;
@@ -48,8 +48,24 @@ const getDataKeyByName = (name: string) => {
};
/**
- * Create a TechDocs addon.
- * @alpha
+ * Create a TechDocs addon overload signature without props.
+ * @public
+ */
+export function createTechDocsAddonExtension(
+ options: TechDocsAddonOptions,
+): Extension<() => JSX.Element | null>;
+
+/**
+ * Create a TechDocs addon overload signature with props.
+ * @public
+ */
+export function createTechDocsAddonExtension(
+ options: TechDocsAddonOptions,
+): Extension<(props: TComponentProps) => JSX.Element | null>;
+
+/**
+ * Create a TechDocs addon implementation.
+ * @public
*/
export function createTechDocsAddonExtension(
options: TechDocsAddonOptions,
@@ -96,7 +112,7 @@ const getAllTechDocsAddonsData = (collection: ElementCollection) => {
/**
* hook to use addons in components
- * @alpha
+ * @public
*/
export const useTechDocsAddons = () => {
const node = useOutlet();
diff --git a/plugins/techdocs-react/src/context.tsx b/plugins/techdocs-react/src/context.tsx
index 67bf416818..4f2fa26164 100644
--- a/plugins/techdocs-react/src/context.tsx
+++ b/plugins/techdocs-react/src/context.tsx
@@ -66,10 +66,7 @@ export type TechDocsReaderPageValue = {
onReady?: () => void;
};
-/**
- * @alpha
- */
-export const defaultTechDocsReaderPageValue: TechDocsReaderPageValue = {
+const defaultTechDocsReaderPageValue: TechDocsReaderPageValue = {
title: '',
subtitle: '',
setTitle: () => {},
@@ -153,7 +150,7 @@ export const TechDocsReaderPageProvider = memo(
/**
* Hook used to get access to shared state between reader page components.
- * @alpha
+ * @public
*/
export const useTechDocsReaderPage = () => {
const versionedContext = useContext(TechDocsReaderPageContext);
diff --git a/plugins/techdocs-react/src/hooks.ts b/plugins/techdocs-react/src/hooks.ts
index cc141c9e15..560c548156 100644
--- a/plugins/techdocs-react/src/hooks.ts
+++ b/plugins/techdocs-react/src/hooks.ts
@@ -20,7 +20,7 @@ import { useTechDocsReaderPage } from './context';
/**
* Hook for use within TechDocs addons that provides access to the underlying
* shadow root of the current page, allowing the DOM within to be mutated.
- * @alpha
+ * @public
*/
export const useShadowRoot = () => {
const { shadowRoot } = useTechDocsReaderPage();
@@ -31,7 +31,7 @@ export const useShadowRoot = () => {
* Convenience hook for use within TechDocs addons that provides access to
* elements that match a given selector within the shadow root.
*
- * @alpha
+ * @public
*/
export const useShadowRootElements = <
TReturnedElement extends HTMLElement = HTMLElement,
@@ -58,7 +58,7 @@ const isValidSelection = (newSelection: Selection) => {
/**
* Hook for retreiving a selection within the ShadowRoot.
- * @alpha
+ * @public
*/
export const useShadowRootSelection = (wait: number = 0) => {
const shadowRoot = useShadowRoot();
diff --git a/plugins/techdocs-react/src/index.ts b/plugins/techdocs-react/src/index.ts
index c1cc3a1791..d4de5f0d29 100644
--- a/plugins/techdocs-react/src/index.ts
+++ b/plugins/techdocs-react/src/index.ts
@@ -28,11 +28,7 @@ export {
} from './addons';
export { techdocsApiRef, techdocsStorageApiRef } from './api';
export type { SyncResult, TechDocsApi, TechDocsStorageApi } from './api';
-export {
- defaultTechDocsReaderPageValue,
- TechDocsReaderPageProvider,
- useTechDocsReaderPage,
-} from './context';
+export { TechDocsReaderPageProvider, useTechDocsReaderPage } from './context';
export type {
TechDocsReaderPageProviderProps,
TechDocsReaderPageProviderRenderFunction,
diff --git a/plugins/techdocs-react/src/types.ts b/plugins/techdocs-react/src/types.ts
index de74d4f284..d1fcc91db0 100644
--- a/plugins/techdocs-react/src/types.ts
+++ b/plugins/techdocs-react/src/types.ts
@@ -38,7 +38,7 @@ export type TechDocsEntityMetadata = Entity & {
/**
* Locations for which TechDocs addons may be declared and rendered.
- * @alpha
+ * @public
*/
export const TechDocsAddonLocations = Object.freeze({
/**
@@ -53,6 +53,12 @@ export const TechDocsAddonLocations = Object.freeze({
*/
Subheader: 'Subheader',
+ /**
+ * These addons are items added to the settings menu list and are designed to make
+ * the reader experience customizable, for example accessibility options
+ */
+ Settings: 'Settings',
+
/**
* These addons appear left of the content and above the navigation.
*/
@@ -102,7 +108,7 @@ export const TechDocsAddonLocations = Object.freeze({
/**
* Options for creating a TechDocs addon.
- * @alpha
+ * @public
*/
export type TechDocsAddonOptions = {
name: string;
diff --git a/plugins/techdocs/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md
index 8717877fb7..f080aa4e2d 100644
--- a/plugins/techdocs/CHANGELOG.md
+++ b/plugins/techdocs/CHANGELOG.md
@@ -1,5 +1,33 @@
# @backstage/plugin-techdocs
+## 1.1.1-next.3
+
+### Patch Changes
+
+- cc8ddd0979: revert dependency `event-source-polyfill` to `1.0.25`
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.2
+
+## 1.1.1-next.2
+
+### Patch Changes
+
+- 52419be116: Create a menu in the sub header of documentation pages, it is responsible for rendering TechDocs addons that allow users to customize their reading experience.
+- 1af133f779: Updated dependency `event-source-polyfill` to `1.0.26`.
+- 2dcb2c9678: Loading SVGs correctly with `bota` with extended characters
+- 3a74e203a8: Updated search result components to support rendering content with highlighted matched terms
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-techdocs-react@0.1.1-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/plugin-search-react@0.2.0-next.2
+ - @backstage/plugin-search-common@0.3.4-next.0
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+ - @backstage/integration@1.2.0-next.1
+ - @backstage/integration-react@1.1.0-next.2
+
## 1.1.1-next.1
### Patch Changes
diff --git a/plugins/techdocs/api-report.md b/plugins/techdocs/api-report.md
index 131a3a062a..a8204bc9af 100644
--- a/plugins/techdocs/api-report.md
+++ b/plugins/techdocs/api-report.md
@@ -17,6 +17,7 @@ import { IdentityApi } from '@backstage/core-plugin-api';
import { PropsWithChildren } from 'react';
import { default as React_2 } from 'react';
import { ReactNode } from 'react';
+import { ResultHighlight } from '@backstage/plugin-search-common';
import { RouteRef } from '@backstage/core-plugin-api';
import { TableColumn } from '@backstage/core-components';
import { TableProps } from '@backstage/core-components';
@@ -388,6 +389,7 @@ export const TechDocsSearchResultListItem: (
// @public
export type TechDocsSearchResultListItemProps = {
result: any;
+ highlight?: ResultHighlight;
lineClamp?: number;
asListItem?: boolean;
asLink?: boolean;
diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json
index ea899088dd..439cac40c0 100644
--- a/plugins/techdocs/package.json
+++ b/plugins/techdocs/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-techdocs",
"description": "The Backstage plugin that renders technical documentation for your components",
- "version": "1.1.1-next.1",
+ "version": "1.1.1-next.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -35,30 +35,30 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
- "@backstage/integration-react": "^1.1.0-next.1",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
- "@backstage/plugin-search-react": "^0.2.0-next.1",
- "@backstage/plugin-techdocs-react": "^0.1.1-next.1",
+ "@backstage/integration": "^1.2.0-next.1",
+ "@backstage/integration-react": "^1.1.0-next.2",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
+ "@backstage/plugin-search-common": "^0.3.4-next.0",
+ "@backstage/plugin-search-react": "^0.2.0-next.2",
+ "@backstage/plugin-techdocs-react": "^0.1.1-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.57",
"@material-ui/styles": "^4.10.0",
"dompurify": "^2.2.9",
- "event-source-polyfill": "1.0.26",
+ "event-source-polyfill": "1.0.25",
"git-url-parse": "^11.6.0",
"jss": "~10.8.2",
"lodash": "^4.17.21",
"react-helmet": "6.1.0",
"react-router": "6.0.0-beta.0",
"react-router-dom": "6.0.0-beta.0",
- "react-text-truncate": "^0.18.0",
"react-use": "^17.2.4"
},
"peerDependencies": {
@@ -67,10 +67,10 @@
"react-dom": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
diff --git a/plugins/techdocs/src/Router.tsx b/plugins/techdocs/src/Router.tsx
index 0174e3457f..e04090089a 100644
--- a/plugins/techdocs/src/Router.tsx
+++ b/plugins/techdocs/src/Router.tsx
@@ -69,7 +69,9 @@ export const EmbeddedDocsRouter = (props: PropsWithChildren<{}>) => {
return (
- }>{children}
+ }>
+ {children}
+
);
};
diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.tsx
index fbab933571..7c76f75eff 100644
--- a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.tsx
+++ b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.tsx
@@ -32,7 +32,7 @@ import { TechDocsSearch } from '../../../search';
import { TechDocsStateIndicator } from '../TechDocsStateIndicator';
import { useTechDocsReaderDom } from './dom';
-import { withTechDocsReaderProvider } from './context';
+import { withTechDocsReaderProvider } from '../TechDocsReaderProvider';
const useStyles = makeStyles({
search: {
diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/dom.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/dom.tsx
index 7a373ab302..92bfbb2e14 100644
--- a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/dom.tsx
+++ b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/dom.tsx
@@ -28,7 +28,7 @@ import { scmIntegrationsApiRef } from '@backstage/integration-react';
import { techdocsStorageApiRef } from '@backstage/plugin-techdocs-react';
-import { useTechDocsReader } from './context';
+import { useTechDocsReader } from '../TechDocsReaderProvider';
import {
addBaseUrl,
@@ -58,14 +58,6 @@ const headings: TypographyHeadingsKeys[] = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
* Hook that encapsulates the behavior of getting raw HTML and applying
* transforms to it in order to make it function at a basic level in the
* Backstage UI.
- *
- * Note: this hook is currently being exported so that we can rapidly iterate
- * on alternative implementations that extend core functionality.
- * There is no guarantee that this hook will continue to be exported by the
- * package in the future!
- *
- * todo: Make public or stop exporting (see others: "altReaderExperiments")
- * @internal
*/
export const useTechDocsReaderDom = (
entityRef: CompoundEntityRef,
diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/index.ts b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/index.ts
index a7ea76a5d6..b0e2ff856a 100644
--- a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/index.ts
+++ b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/index.ts
@@ -16,5 +16,3 @@
export { TechDocsReaderPageContent, Reader } from './TechDocsReaderPageContent';
export type { TechDocsReaderPageContentProps } from './TechDocsReaderPageContent';
-export * from './context';
-export * from './dom';
diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPageSubheader/TechDocsReaderPageSubheader.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPageSubheader/TechDocsReaderPageSubheader.tsx
index e0eb0ad2b0..a0013e81ab 100644
--- a/plugins/techdocs/src/reader/components/TechDocsReaderPageSubheader/TechDocsReaderPageSubheader.tsx
+++ b/plugins/techdocs/src/reader/components/TechDocsReaderPageSubheader/TechDocsReaderPageSubheader.tsx
@@ -14,9 +14,18 @@
* limitations under the License.
*/
-import React from 'react';
+import React, { MouseEvent, useState, useCallback } from 'react';
-import { Box, makeStyles, Toolbar, ToolbarProps } from '@material-ui/core';
+import {
+ Box,
+ makeStyles,
+ Toolbar,
+ ToolbarProps,
+ Menu,
+ Tooltip,
+ IconButton,
+} from '@material-ui/core';
+import SettingsIcon from '@material-ui/icons/Settings';
import {
TechDocsAddonLocations as locations,
@@ -44,31 +53,67 @@ export const TechDocsReaderPageSubheader = ({
toolbarProps?: ToolbarProps;
}) => {
const classes = useStyles();
+ const [anchorEl, setAnchorEl] = useState(null);
+
+ const handleClick = useCallback((event: MouseEvent) => {
+ setAnchorEl(event.currentTarget);
+ }, []);
+
+ const handleClose = useCallback(() => {
+ setAnchorEl(null);
+ }, []);
+
const {
entityMetadata: { value: entityMetadata, loading: entityMetadataLoading },
} = useTechDocsReaderPage();
+
const addons = useTechDocsAddons();
+
const subheaderAddons = addons.renderComponentsByLocation(
locations.Subheader,
);
- if (!subheaderAddons) return null;
+ const settingsAddons = addons.renderComponentsByLocation(locations.Settings);
+
+ if (!subheaderAddons && !settingsAddons) return null;
// No entity metadata = 404. Don't render subheader on 404.
if (entityMetadataLoading === false && !entityMetadata) return null;
return (
- {subheaderAddons && (
-
- {subheaderAddons}
-
- )}
+
+ {subheaderAddons}
+ {settingsAddons ? (
+ <>
+
+
+
+
+
+
+ >
+ ) : null}
+
);
};
diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/context.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderProvider.tsx
similarity index 73%
rename from plugins/techdocs/src/reader/components/TechDocsReaderPageContent/context.tsx
rename to plugins/techdocs/src/reader/components/TechDocsReaderProvider.tsx
index 5779ade90c..8ddc4cad69 100644
--- a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/context.tsx
+++ b/plugins/techdocs/src/reader/components/TechDocsReaderProvider.tsx
@@ -23,20 +23,10 @@ import React, {
import { useParams } from 'react-router-dom';
import { useTechDocsReaderPage } from '@backstage/plugin-techdocs-react';
-import { useReaderState, ReaderState } from '../useReaderState';
+import { useReaderState, ReaderState } from './useReaderState';
const TechDocsReaderContext = createContext({} as ReaderState);
-/**
- * Note: this hook is currently being exported so that we can rapidly
- * iterate on alternative implementations that extend core
- * functionality. There is no guarantee that this hook will continue to be
- * exported by the package in the future!
- *
- * todo: Make public or stop exporting (ctrl+f "altReaderExperiments")
- * @internal
- */
-
export const useTechDocsReader = () => useContext(TechDocsReaderContext);
/**
@@ -73,15 +63,6 @@ export const TechDocsReaderProvider = ({
);
};
-/**
- * Note: this HOC is currently being exported so that we can rapidly
- * iterate on alternative implementations that extend core
- * functionality. There is no guarantee that this HOC will continue to be
- * exported by the package in the future!
- *
- * todo: Make public or stop exporting (ctrl+f "altReaderExperiments")
- * @internal
- */
export const withTechDocsReaderProvider =
(Component: ComponentType) =>
(props: T) =>
diff --git a/plugins/techdocs/src/reader/components/TechDocsStateIndicator.tsx b/plugins/techdocs/src/reader/components/TechDocsStateIndicator.tsx
index 93694280d7..6967356194 100644
--- a/plugins/techdocs/src/reader/components/TechDocsStateIndicator.tsx
+++ b/plugins/techdocs/src/reader/components/TechDocsStateIndicator.tsx
@@ -21,7 +21,7 @@ import { Alert } from '@material-ui/lab';
import { TechDocsBuildLogs } from './TechDocsBuildLogs';
import { TechDocsNotFound } from './TechDocsNotFound';
-import { useTechDocsReader } from './TechDocsReaderPageContent';
+import { useTechDocsReader } from './TechDocsReaderProvider';
const useStyles = makeStyles(theme => ({
root: {
@@ -35,15 +35,6 @@ const useStyles = makeStyles(theme => ({
},
}));
-/**
- * Note: this component is currently being exported so that we can rapidly
- * iterate on alternative implementations that extend core
- * functionality. There is no guarantee that this component will continue to be
- * exported by the package in the future!
- *
- * todo: Make public or stop exporting (ctrl+f "altReaderExperiments")
- * @internal
- */
export const TechDocsStateIndicator = () => {
let StateAlert: JSX.Element | null = null;
const classes = useStyles();
diff --git a/plugins/techdocs/src/reader/components/index.ts b/plugins/techdocs/src/reader/components/index.ts
index 406d623bda..f063501814 100644
--- a/plugins/techdocs/src/reader/components/index.ts
+++ b/plugins/techdocs/src/reader/components/index.ts
@@ -14,6 +14,11 @@
* limitations under the License.
*/
+export { TechDocsReaderProvider } from './TechDocsReaderProvider';
+export type {
+ TechDocsReaderProviderRenderFunction,
+ TechDocsReaderProviderProps,
+} from './TechDocsReaderProvider';
export type {
TechDocsReaderPageProps,
TechDocsReaderLayoutProps,
@@ -22,5 +27,4 @@ export { TechDocsReaderLayout } from './TechDocsReaderPage';
export * from './TechDocsReaderPageHeader';
export * from './TechDocsReaderPageContent';
export * from './TechDocsReaderPageSubheader';
-export * from './TechDocsStateIndicator';
export type { ReaderState, ContentStateTypes } from './useReaderState';
diff --git a/plugins/techdocs/src/reader/transformers/addBaseUrl.ts b/plugins/techdocs/src/reader/transformers/addBaseUrl.ts
index 2e3b853e42..96a5888a2a 100644
--- a/plugins/techdocs/src/reader/transformers/addBaseUrl.ts
+++ b/plugins/techdocs/src/reader/transformers/addBaseUrl.ts
@@ -69,7 +69,9 @@ export const addBaseUrl = ({
const svgContent = await svg.text();
elem.setAttribute(
attributeName,
- `data:image/svg+xml;base64,${btoa(svgContent)}`,
+ `data:image/svg+xml;base64,${btoa(
+ unescape(encodeURIComponent(svgContent)),
+ )}`,
);
} catch (e) {
elem.setAttribute('alt', `Error: ${elemAttribute}`);
diff --git a/plugins/techdocs/src/search/components/TechDocsSearch.tsx b/plugins/techdocs/src/search/components/TechDocsSearch.tsx
index f11fa38948..509c991353 100644
--- a/plugins/techdocs/src/search/components/TechDocsSearch.tsx
+++ b/plugins/techdocs/src/search/components/TechDocsSearch.tsx
@@ -143,13 +143,14 @@ const TechDocsSearchBar = (props: TechDocsSearchProps) => {
noOptionsText="No results found"
value={null}
options={options}
- renderOption={({ document }) => (
+ renderOption={({ document, highlight }) => (
)}
loading={loading}
diff --git a/plugins/techdocs/src/search/components/TechDocsSearchResultListItem.tsx b/plugins/techdocs/src/search/components/TechDocsSearchResultListItem.tsx
index db5751654d..6181e05235 100644
--- a/plugins/techdocs/src/search/components/TechDocsSearchResultListItem.tsx
+++ b/plugins/techdocs/src/search/components/TechDocsSearchResultListItem.tsx
@@ -17,7 +17,8 @@
import React, { PropsWithChildren } from 'react';
import { Divider, ListItem, ListItemText, makeStyles } from '@material-ui/core';
import { Link } from '@backstage/core-components';
-import TextTruncate from 'react-text-truncate';
+import { ResultHighlight } from '@backstage/plugin-search-common';
+import { HighlightedSearchResultText } from '@backstage/plugin-search-react';
const useStyles = makeStyles({
flexContainer: {
@@ -36,6 +37,7 @@ const useStyles = makeStyles({
*/
export type TechDocsSearchResultListItemProps = {
result: any;
+ highlight?: ResultHighlight;
lineClamp?: number;
asListItem?: boolean;
asLink?: boolean;
@@ -52,31 +54,80 @@ export const TechDocsSearchResultListItem = (
) => {
const {
result,
+ highlight,
lineClamp = 5,
asListItem = true,
asLink = true,
title,
} = props;
const classes = useStyles();
- const TextItem = () => (
-
- }
- />
- );
+ const TextItem = () => {
+ const resultTitle = highlight?.fields.title ? (
+
+ ) : (
+ result.title
+ );
+
+ const entityTitle = highlight?.fields.entityTitle ? (
+
+ ) : (
+ result.entityTitle
+ );
+
+ const resultName = highlight?.fields.name ? (
+
+ ) : (
+ result.name
+ );
+
+ return (
+
+ {resultTitle} | {entityTitle ?? resultName} docs
+ >
+ )
+ }
+ secondary={
+
+ {highlight?.fields.text ? (
+
+ ) : (
+ result.text
+ )}
+
+ }
+ />
+ );
+ };
const LinkWrapper = ({ children }: PropsWithChildren<{}>) =>
asLink ? {children} : <>{children}>;
diff --git a/plugins/todo-backend/CHANGELOG.md b/plugins/todo-backend/CHANGELOG.md
index 637d1dd93f..a16b25a673 100644
--- a/plugins/todo-backend/CHANGELOG.md
+++ b/plugins/todo-backend/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-todo-backend
+## 0.1.29-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.13.3-next.2
+ - @backstage/config@1.0.1-next.0
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/integration@1.2.0-next.1
+ - @backstage/catalog-client@1.0.2-next.0
+
## 0.1.29-next.0
### Patch Changes
diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json
index 83e21cb0e7..690b9be4e1 100644
--- a/plugins/todo-backend/package.json
+++ b/plugins/todo-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-todo-backend",
"description": "A Backstage backend plugin that lets you browse TODO comments in your source code",
- "version": "0.1.29-next.0",
+ "version": "0.1.29-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -29,12 +29,12 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/backend-common": "^0.13.3-next.0",
- "@backstage/catalog-client": "^1.0.1",
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/config": "^1.0.0",
+ "@backstage/backend-common": "^0.13.3-next.2",
+ "@backstage/catalog-client": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/config": "^1.0.1-next.0",
"@backstage/errors": "^1.0.0",
- "@backstage/integration": "^1.2.0-next.0",
+ "@backstage/integration": "^1.2.0-next.1",
"@types/express": "^4.17.6",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
@@ -43,7 +43,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.0",
+ "@backstage/cli": "^0.17.1-next.2",
"@types/supertest": "^2.0.8",
"msw": "^0.35.0",
"supertest": "^6.1.3"
diff --git a/plugins/todo/CHANGELOG.md b/plugins/todo/CHANGELOG.md
index 6d343f7e67..87de10a707 100644
--- a/plugins/todo/CHANGELOG.md
+++ b/plugins/todo/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-todo
+## 0.2.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.9.4-next.1
+ - @backstage/plugin-catalog-react@1.1.0-next.2
+ - @backstage/catalog-model@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
## 0.2.7-next.1
### Patch Changes
diff --git a/plugins/todo/package.json b/plugins/todo/package.json
index 36ae1d199e..1185eb6b74 100644
--- a/plugins/todo/package.json
+++ b/plugins/todo/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-todo",
"description": "A Backstage plugin that lets you browse TODO comments in your source code",
- "version": "0.2.7-next.1",
+ "version": "0.2.7-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,11 +30,11 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/catalog-model": "^1.0.1",
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/catalog-model": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
- "@backstage/plugin-catalog-react": "^1.1.0-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.0-next.2",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -45,10 +45,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json
index fa3edcf546..6461ba753b 100644
--- a/plugins/user-settings/package.json
+++ b/plugins/user-settings/package.json
@@ -34,8 +34,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -48,10 +48,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json
index 9112ad9c38..f7396220d7 100644
--- a/plugins/xcmetrics/package.json
+++ b/plugins/xcmetrics/package.json
@@ -24,8 +24,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/core-components": "^0.9.4-next.0",
- "@backstage/core-plugin-api": "^1.0.2-next.0",
+ "@backstage/core-components": "^0.9.4-next.2",
+ "@backstage/core-plugin-api": "^1.0.2-next.1",
"@backstage/errors": "^1.0.0",
"@backstage/theme": "^0.2.15",
"@material-ui/core": "^4.12.2",
@@ -40,10 +40,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.17.1-next.1",
- "@backstage/core-app-api": "^1.0.2-next.0",
- "@backstage/dev-utils": "^1.0.2-next.1",
- "@backstage/test-utils": "^1.1.0-next.1",
+ "@backstage/cli": "^0.17.1-next.2",
+ "@backstage/core-app-api": "^1.0.2-next.1",
+ "@backstage/dev-utils": "^1.0.2-next.2",
+ "@backstage/test-utils": "^1.1.0-next.2",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/storybook/.storybook/main.js b/storybook/.storybook/main.js
index 8ed4949cf3..f493bd2de6 100644
--- a/storybook/.storybook/main.js
+++ b/storybook/.storybook/main.js
@@ -32,6 +32,7 @@ module.exports = ({ args }) => {
return {
stories,
addons: [
+ '@storybook/addon-controls',
'@storybook/addon-a11y',
'@storybook/addon-actions',
'@storybook/addon-links',
diff --git a/storybook/package.json b/storybook/package.json
index 9a9c7d4a8c..eafe73a991 100644
--- a/storybook/package.json
+++ b/storybook/package.json
@@ -9,14 +9,15 @@
},
"dependencies": {
"@sucrase/webpack-loader": "^2.0.0",
- "sucrase": "^3.21.0",
"react": "^17.0.2",
+ "react-dom": "^17.0.2",
"react-hot-loader": "^4.13.0",
- "react-dom": "^17.0.2"
+ "sucrase": "^3.21.0"
},
"devDependencies": {
"@storybook/addon-a11y": "^6.4.21",
"@storybook/addon-actions": "^6.4.21",
+ "@storybook/addon-controls": "^6.4.22",
"@storybook/addon-links": "^6.4.21",
"@storybook/addon-storysource": "^6.4.21",
"@storybook/addons": "^6.4.21",
@@ -24,9 +25,9 @@
"storybook-dark-mode": "^1.0.9"
},
"peerDependencies": {
- "@backstage/theme": "link:../packages/theme",
- "@backstage/test-utils": "link:../packages/test-utils",
"@backstage/core-app-api": "link:../packages/core-app-api",
- "@backstage/core-plugin-api": "link:../packages/core-plugin-api"
+ "@backstage/core-plugin-api": "link:../packages/core-plugin-api",
+ "@backstage/test-utils": "link:../packages/test-utils",
+ "@backstage/theme": "link:../packages/theme"
}
}
diff --git a/storybook/yarn.lock b/storybook/yarn.lock
index 4660d682bc..8c6380c291 100644
--- a/storybook/yarn.lock
+++ b/storybook/yarn.lock
@@ -1381,6 +1381,24 @@
util-deprecate "^1.0.2"
uuid-browser "^3.1.0"
+"@storybook/addon-controls@^6.4.22":
+ version "6.4.22"
+ resolved "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.4.22.tgz#42c7f426eb7ba6d335e8e14369d6d13401878665"
+ integrity sha512-f/M/W+7UTEUnr/L6scBMvksq+ZA8GTfh3bomE5FtWyOyaFppq9k8daKAvdYNlzXAOrUUsoZVJDgpb20Z2VBiSQ==
+ dependencies:
+ "@storybook/addons" "6.4.22"
+ "@storybook/api" "6.4.22"
+ "@storybook/client-logger" "6.4.22"
+ "@storybook/components" "6.4.22"
+ "@storybook/core-common" "6.4.22"
+ "@storybook/csf" "0.0.2--canary.87bc651.0"
+ "@storybook/node-logger" "6.4.22"
+ "@storybook/store" "6.4.22"
+ "@storybook/theming" "6.4.22"
+ core-js "^3.8.2"
+ lodash "^4.17.21"
+ ts-dedent "^2.0.0"
+
"@storybook/addon-links@^6.4.21":
version "6.4.22"
resolved "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.4.22.tgz#c0ed9e9ef6505cf1562e1476bbc5064c82dadbe2"
diff --git a/yarn.lock b/yarn.lock
index 1ab7c7cc65..be009c8b08 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1428,6 +1428,36 @@
"@babel/helper-validator-identifier" "^7.16.7"
to-fast-properties "^2.0.0"
+"@backstage/catalog-client@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/@backstage/catalog-client/-/catalog-client-1.0.1.tgz#f19888635825b3104b0e293409d924fb5e21feb9"
+ integrity sha512-2JUEqtR3v361JM6JDjTt8k/tlZd27RB/ZQ2Vwp5seJf4QYXfR9s5AM4M35l/A5vosDKhGrxMAq3t2s4gcH9vVg==
+ dependencies:
+ "@backstage/catalog-model" "^1.0.1"
+ "@backstage/errors" "^1.0.0"
+ cross-fetch "^3.1.5"
+
+"@backstage/catalog-model@^1.0.0", "@backstage/catalog-model@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/@backstage/catalog-model/-/catalog-model-1.0.1.tgz#16acb8cf52083dd038da7d9fae38811fd88d55e5"
+ integrity sha512-VxKQ+WzcsxAWtwWyeGw04vTefkmwxi6XweXSNRhNddXAVqsAbDcCYBUc9jylu0bYVXXWYJkEl8kiwyawUloPPQ==
+ dependencies:
+ "@backstage/config" "^1.0.0"
+ "@backstage/errors" "^1.0.0"
+ "@backstage/types" "^1.0.0"
+ ajv "^8.10.0"
+ json-schema "^0.4.0"
+ lodash "^4.17.21"
+ uuid "^8.0.0"
+
+"@backstage/config@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/@backstage/config/-/config-1.0.0.tgz#7af40758ae3f8e1d9ef3a07f063a1fd9cf5c364e"
+ integrity sha512-0M8UPHjCev3i/Puz/DGV7hor/vujx27bpWip5UTjachzBorI5xB0CBV1GfZ1UZMm5R5py7RJ+lKdmSJVFdw9IA==
+ dependencies:
+ "@backstage/types" "^1.0.0"
+ lodash "^4.17.21"
+
"@backstage/core-components@^0.9.0", "@backstage/core-components@^0.9.3":
version "0.9.3"
resolved "https://registry.npmjs.org/@backstage/core-components/-/core-components-0.9.3.tgz#79d8bcea06281da492730fe8eb14aa18877b27c4"
@@ -1513,6 +1543,14 @@
lodash "^4.17.21"
luxon "^2.0.2"
+"@backstage/plugin-catalog-common@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/@backstage/plugin-catalog-common/-/plugin-catalog-common-1.0.1.tgz#97d70bfb6083e576e2163af19fd096e9f97f7b88"
+ integrity sha512-zPf8OGSjH+ZftMnjBxTgwLtgapnO1L7fzulLQ2RRaWrUcXGk8N3szQBDcqwxfBFiWSIX1G4vvRi/BGXFMUMlnw==
+ dependencies:
+ "@backstage/plugin-permission-common" "^0.6.0"
+ "@backstage/search-common" "^0.3.3"
+
"@backstage/plugin-catalog-react@^1.0.0", "@backstage/plugin-catalog-react@^1.0.1":
version "1.0.1"
resolved "https://registry.npmjs.org/@backstage/plugin-catalog-react/-/plugin-catalog-react-1.0.1.tgz#647cb19bff2885bb4e1e289bb1b751a7e9a36477"
@@ -1561,6 +1599,17 @@
react-router "6.0.0-beta.0"
react-use "^17.2.4"
+"@backstage/plugin-permission-common@^0.6.0":
+ version "0.6.0"
+ resolved "https://registry.npmjs.org/@backstage/plugin-permission-common/-/plugin-permission-common-0.6.0.tgz#85464aa10d1f271252775e5eb30ecfd88e2af152"
+ integrity sha512-wx5TUDFilRqmMJP8TxjR5GuulFFOPHNwoK6eNMuz5ESzLzPhiJDovqaXjqpxsdCVGNb2VJOUlND3SzbwjQ65aA==
+ dependencies:
+ "@backstage/config" "^1.0.0"
+ "@backstage/errors" "^1.0.0"
+ cross-fetch "^3.1.5"
+ uuid "^8.0.0"
+ zod "^3.11.6"
+
"@backstage/plugin-permission-react@^0.4.0":
version "0.4.0"
resolved "https://registry.npmjs.org/@backstage/plugin-permission-react/-/plugin-permission-react-0.4.0.tgz#3135b8bbd0e303afafeeae7b9a0d4de7d9e1198c"
@@ -1574,6 +1623,14 @@
react-use "^17.2.4"
swr "^1.1.2"
+"@backstage/plugin-search-common@0.3.3", "@backstage/plugin-search-common@^0.3.3":
+ version "0.3.3"
+ resolved "https://registry.npmjs.org/@backstage/plugin-search-common/-/plugin-search-common-0.3.3.tgz#e9251172163731aef61626b3e1ec40504a38cb11"
+ integrity sha512-CARcpoMFEQJdpe+Rm9m/mPhMOsWM0V+zncIHOLuKlzsMrQRTcwmcFoPqBdtlfdT9wEJTu1bci2ccsDsnZiSrhA==
+ dependencies:
+ "@backstage/plugin-permission-common" "^0.6.0"
+ "@backstage/types" "^1.0.0"
+
"@backstage/plugin-stack-overflow@^0.1.0":
version "0.1.0"
resolved "https://registry.npmjs.org/@backstage/plugin-stack-overflow/-/plugin-stack-overflow-0.1.0.tgz#5f5ee8b30d684b7c71f746fe923c16875a62d621"
@@ -1593,6 +1650,13 @@
qs "^6.9.4"
react-use "^17.2.4"
+"@backstage/search-common@^0.3.3":
+ version "0.3.3"
+ resolved "https://registry.npmjs.org/@backstage/search-common/-/search-common-0.3.3.tgz#756af22187283b754aefdc436c651231054be269"
+ integrity sha512-DtWd1Nrpvm2fkJRkw6bW8WeB6cFOvxsJ//o/fcoMsD5NCnaFtE1kFlCEt6QuUl6chAg6d+cX0rU+DJjSIC1rgQ==
+ dependencies:
+ "@backstage/plugin-search-common" "0.3.3"
+
"@balena/dockerignore@^1.0.2":
version "1.0.2"
resolved "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz#9ffe4726915251e8eb69f44ef3547e0da2c03e0d"
@@ -2181,10 +2245,10 @@
teeny-request "^7.1.3"
xdg-basedir "^4.0.0"
-"@graphiql/toolkit@^0.4.3":
- version "0.4.3"
- resolved "https://registry.npmjs.org/@graphiql/toolkit/-/toolkit-0.4.3.tgz#2653d045693d902f7faaf87b9047e8786397ec48"
- integrity sha512-L0l6BezvTXmWZhtdmZxirhYwKzcZToAciQY0A13KRAWSpJ9bb/ZdkBpcz3fOXrsjuJHf0wBr6Vk9kztJ6lV7uA==
+"@graphiql/toolkit@^0.4.4":
+ version "0.4.5"
+ resolved "https://registry.npmjs.org/@graphiql/toolkit/-/toolkit-0.4.5.tgz#9fb5020444712562eae9581724695c235f610836"
+ integrity sha512-QXuuMSSK/0GfBS7tltrGZdyhIvm6oe9TK4VW9pfa8dALYttpzyJ64Q4Sx9I1Ng++yOMJWziM/ksa043zkNHsjQ==
dependencies:
"@n1ru4l/push-pull-async-iterable-iterator" "^3.1.0"
meros "^1.1.4"
@@ -3231,11 +3295,11 @@
integrity sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw==
"@keyv/redis@^2.2.3":
- version "2.3.4"
- resolved "https://registry.npmjs.org/@keyv/redis/-/redis-2.3.4.tgz#441b7fd1e27d2c361ae0180afd9182a45ac6ee68"
- integrity sha512-9DqSKV2v5nEcEJa6WajOiWw4GX1rE07Z2oNWaE4XjfPHWLvG46+uOlF0b3Xa5WBaExkWVc7bo5pLAOSK7lAaew==
+ version "2.3.5"
+ resolved "https://registry.npmjs.org/@keyv/redis/-/redis-2.3.5.tgz#8ff4fecf9b5520cac2a346e6216db59474df3385"
+ integrity sha512-dO9sn1HEPVkh1b7Cn/jcLyi7sDFKmnGQIaXw4wTIhJzkwcev24CffvEU26B+KRUNBu/2PgNVNRfFmEpy1smb4w==
dependencies:
- ioredis "^5.0.3"
+ ioredis "^5.0.4"
"@kubernetes/client-node@^0.16.0":
version "0.16.3"
@@ -4136,9 +4200,9 @@
react-is "^16.8.0 || ^17.0.0"
"@maxim_mazurok/gapi.client.calendar@^3.0.20220408":
- version "3.0.20220429"
- resolved "https://registry.npmjs.org/@maxim_mazurok/gapi.client.calendar/-/gapi.client.calendar-3.0.20220429.tgz#ccd5116bd5222a586782e83c4f1370179c600a2b"
- integrity sha512-vzjnM+bRo2Heq8BuaWEQUxnB+yi7KmCqs6YfgZITp/84r3IKRLQuu5vAiaHu37kOYKKswRVJ+K5vBU6B742jag==
+ version "3.0.20220505"
+ resolved "https://registry.npmjs.org/@maxim_mazurok/gapi.client.calendar/-/gapi.client.calendar-3.0.20220505.tgz#14a72876308481cb97a2ffa859543b1fa0ee258e"
+ integrity sha512-ZzsJdybuX/RvcDU8eF7XCyHdKYuHU6Z12326hB2+f4IWkMrDTQCayu05cRXZEuvP2YwoPm8gglPpV+flYk1d3g==
dependencies:
"@types/gapi.client" "*"
@@ -4918,9 +4982,9 @@
zustand "3.6.9"
"@roadiehq/backstage-plugin-github-pull-requests@^2.0.0":
- version "2.1.1"
- resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-pull-requests/-/backstage-plugin-github-pull-requests-2.1.1.tgz#90bc2e82c47ddf5fe40063ddcfff9efdb464f046"
- integrity sha512-/855fB7F0Ss4h7iTayBu/SVbWLM5iw3401ER5uWf1IoSpXorJECEW0lfzroJtWMGse6LfNfbuWqTKnp2vTSosg==
+ version "2.1.2"
+ resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-pull-requests/-/backstage-plugin-github-pull-requests-2.1.2.tgz#1c8289679bb109a70c30b5ba090ea7d751553764"
+ integrity sha512-VXv1D1JhifX0B9nukxFa61MyXouPTXEYkeNwYB+Y3e0VfoPEGzAeE/Ub23rP8aVcYsbuyCA+6u/HQsrw6Vgpxw==
dependencies:
"@backstage/catalog-model" "^1.0.0"
"@backstage/core-components" "^0.9.0"
@@ -5343,17 +5407,10 @@
"@testing-library/dom" "^8.0.0"
"@types/react-dom" "<18.0.0"
-"@testing-library/user-event@^13.1.8":
- version "13.5.0"
- resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295"
- integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==
- dependencies:
- "@babel/runtime" "^7.12.5"
-
"@testing-library/user-event@^14.0.0":
- version "14.1.1"
- resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.1.1.tgz#e1ff6118896e4b22af31e5ea2f9da956adde23d8"
- integrity sha512-XrjH/iEUqNl9lF2HX9YhPNV7Amntkcnpw0Bo1KkRzowNDcgSN9i0nm4Q8Oi5wupgdfPaJNMAWa61A+voD6Kmwg==
+ version "14.2.0"
+ resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.2.0.tgz#8293560f8f80a00383d6c755ec3e0b918acb1683"
+ integrity sha512-+hIlG4nJS6ivZrKnOP7OGsDu9Fxmryj9vCl8x0ZINtTJcCHs2zLsYif5GzuRiBF2ck5GZG2aQr7Msg+EHlnYVQ==
"@tokenizer/token@^0.3.0":
version "0.3.0"
@@ -6227,9 +6284,9 @@
integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==
"@types/node@^16.0.0", "@types/node@^16.11.26", "@types/node@^16.9.2":
- version "16.11.33"
- resolved "https://registry.npmjs.org/@types/node/-/node-16.11.33.tgz#566713b1b626f781c5c58fe3531307283e00720c"
- integrity sha512-0PJ0vg+JyU0MIan58IOIFRtSvsb7Ri+7Wltx2qAg94eMOrpg4+uuP3aUHCpxXc1i0jCXiC+zIamSZh3l9AbcQA==
+ version "16.11.35"
+ resolved "https://registry.npmjs.org/@types/node/-/node-16.11.35.tgz#6642bdce5b5cee23314b91a7c069981c6bd68791"
+ integrity sha512-QXu45LyepgnhUfnIAj/FyT4uM87ug5KpIrgXfQtUPNAlx8w5hmd8z8emqCLNvG11QkpRSCG9Qg2buMxvqfjfsQ==
"@types/normalize-package-data@^2.4.0":
version "2.4.1"
@@ -6353,9 +6410,9 @@
integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==
"@types/react-dom@*", "@types/react-dom@<18.0.0", "@types/react-dom@^17":
- version "17.0.16"
- resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.16.tgz#7caba93cf2806c51e64d620d8dff4bae57e06cc4"
- integrity sha512-DWcXf8EbMrO/gWnQU7Z88Ws/p16qxGpPyjTKTpmBSFKeE+HveVubqGO1CVK7FrwlWD5MuOcvh8gtd0/XO38NdQ==
+ version "17.0.17"
+ resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.17.tgz#2e3743277a793a96a99f1bf87614598289da68a1"
+ integrity sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg==
dependencies:
"@types/react" "^17"
@@ -6419,9 +6476,9 @@
"@types/react" "*"
"@types/react@*", "@types/react@^16.13.1 || ^17.0.0", "@types/react@^17":
- version "17.0.44"
- resolved "https://registry.npmjs.org/@types/react/-/react-17.0.44.tgz#c3714bd34dd551ab20b8015d9d0dbec812a51ec7"
- integrity sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g==
+ version "17.0.45"
+ resolved "https://registry.npmjs.org/@types/react/-/react-17.0.45.tgz#9b3d5b661fd26365fefef0e766a1c6c30ccf7b3f"
+ integrity sha512-YfhQ22Lah2e3CHPsb93tRwIGNiSwkuz1/blk4e6QrWS0jQzCSNbGLtOEYhPg02W0yGTTmpajp7dCTbBAMN3qsg==
dependencies:
"@types/prop-types" "*"
"@types/scheduler" "*"
@@ -6628,9 +6685,9 @@
"@types/node" "*"
"@types/swagger-ui-react@^4.1.1":
- version "4.1.1"
- resolved "https://registry.npmjs.org/@types/swagger-ui-react/-/swagger-ui-react-4.1.1.tgz#6ae70f5b966941eb6655d79d1114d9b9ef69a980"
- integrity sha512-tZqX/nShvNqtJ7WAfwOK7mphK1jqmEre4mUJh+R1RyCFVODsMTG4My2nqjXpSm8NfhVGmbFH3giD17AXmgsaJw==
+ version "4.11.0"
+ resolved "https://registry.npmjs.org/@types/swagger-ui-react/-/swagger-ui-react-4.11.0.tgz#3ac84bc8e2f6e57b9ff4533ec31934f697e1a2c4"
+ integrity sha512-WPMR+GWbLd7zvY/uOTGzGzP44zK2rIZSnU00+pDR2YANnEV6/qj0kqYfdSY1Vk6qdvI7dR0Tx8JEMgUUrUQDjw==
dependencies:
"@types/react" "*"
@@ -6802,13 +6859,13 @@
integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==
"@typescript-eslint/eslint-plugin@^5.9.0":
- version "5.22.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.22.0.tgz#7b52a0de2e664044f28b36419210aea4ab619e2a"
- integrity sha512-YCiy5PUzpAeOPGQ7VSGDEY2NeYUV1B0swde2e0HzokRsHBYjSdF6DZ51OuRZxVPHx0032lXGLvOMls91D8FXlg==
+ version "5.23.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.23.0.tgz#bc4cbcf91fbbcc2e47e534774781b82ae25cc3d8"
+ integrity sha512-hEcSmG4XodSLiAp1uxv/OQSGsDY6QN3TcRU32gANp+19wGE1QQZLRS8/GV58VRUoXhnkuJ3ZxNQ3T6Z6zM59DA==
dependencies:
- "@typescript-eslint/scope-manager" "5.22.0"
- "@typescript-eslint/type-utils" "5.22.0"
- "@typescript-eslint/utils" "5.22.0"
+ "@typescript-eslint/scope-manager" "5.23.0"
+ "@typescript-eslint/type-utils" "5.23.0"
+ "@typescript-eslint/utils" "5.23.0"
debug "^4.3.2"
functional-red-black-tree "^1.0.1"
ignore "^5.1.8"
@@ -6829,13 +6886,13 @@
eslint-utils "^3.0.0"
"@typescript-eslint/parser@^5.9.0":
- version "5.22.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.22.0.tgz#7bedf8784ef0d5d60567c5ba4ce162460e70c178"
- integrity sha512-piwC4krUpRDqPaPbFaycN70KCP87+PC5WZmrWs+DlVOxxmF+zI6b6hETv7Quy4s9wbkV16ikMeZgXsvzwI3icQ==
+ version "5.23.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.23.0.tgz#443778e1afc9a8ff180f91b5e260ac3bec5e2de1"
+ integrity sha512-V06cYUkqcGqpFjb8ttVgzNF53tgbB/KoQT/iB++DOIExKmzI9vBJKjZKt/6FuV9c+zrDsvJKbJ2DOCYwX91cbw==
dependencies:
- "@typescript-eslint/scope-manager" "5.22.0"
- "@typescript-eslint/types" "5.22.0"
- "@typescript-eslint/typescript-estree" "5.22.0"
+ "@typescript-eslint/scope-manager" "5.23.0"
+ "@typescript-eslint/types" "5.23.0"
+ "@typescript-eslint/typescript-estree" "5.23.0"
debug "^4.3.2"
"@typescript-eslint/scope-manager@5.20.0":
@@ -6846,13 +6903,13 @@
"@typescript-eslint/types" "5.20.0"
"@typescript-eslint/visitor-keys" "5.20.0"
-"@typescript-eslint/scope-manager@5.22.0":
- version "5.22.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.22.0.tgz#590865f244ebe6e46dc3e9cab7976fc2afa8af24"
- integrity sha512-yA9G5NJgV5esANJCO0oF15MkBO20mIskbZ8ijfmlKIvQKg0ynVKfHZ15/nhAJN5m8Jn3X5qkwriQCiUntC9AbA==
+"@typescript-eslint/scope-manager@5.23.0":
+ version "5.23.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz#4305e61c2c8e3cfa3787d30f54e79430cc17ce1b"
+ integrity sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==
dependencies:
- "@typescript-eslint/types" "5.22.0"
- "@typescript-eslint/visitor-keys" "5.22.0"
+ "@typescript-eslint/types" "5.23.0"
+ "@typescript-eslint/visitor-keys" "5.23.0"
"@typescript-eslint/scope-manager@5.9.0":
version "5.9.0"
@@ -6862,12 +6919,12 @@
"@typescript-eslint/types" "5.9.0"
"@typescript-eslint/visitor-keys" "5.9.0"
-"@typescript-eslint/type-utils@5.22.0":
- version "5.22.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.22.0.tgz#0c0e93b34210e334fbe1bcb7250c470f4a537c19"
- integrity sha512-iqfLZIsZhK2OEJ4cQ01xOq3NaCuG5FQRKyHicA3xhZxMgaxQazLUHbH/B2k9y5i7l3+o+B5ND9Mf1AWETeMISA==
+"@typescript-eslint/type-utils@5.23.0":
+ version "5.23.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.23.0.tgz#f852252f2fc27620d5bb279d8fed2a13d2e3685e"
+ integrity sha512-iuI05JsJl/SUnOTXA9f4oI+/4qS/Zcgk+s2ir+lRmXI+80D8GaGwoUqs4p+X+4AxDolPpEpVUdlEH4ADxFy4gw==
dependencies:
- "@typescript-eslint/utils" "5.22.0"
+ "@typescript-eslint/utils" "5.23.0"
debug "^4.3.2"
tsutils "^3.21.0"
@@ -6876,10 +6933,10 @@
resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.20.0.tgz#fa39c3c2aa786568302318f1cb51fcf64258c20c"
integrity sha512-+d8wprF9GyvPwtoB4CxBAR/s0rpP25XKgnOvMf/gMXYDvlUC3rPFHupdTQ/ow9vn7UDe5rX02ovGYQbv/IUCbg==
-"@typescript-eslint/types@5.22.0":
- version "5.22.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.22.0.tgz#50a4266e457a5d4c4b87ac31903b28b06b2c3ed0"
- integrity sha512-T7owcXW4l0v7NTijmjGWwWf/1JqdlWiBzPqzAWhobxft0SiEvMJB56QXmeCQjrPuM8zEfGUKyPQr/L8+cFUBLw==
+"@typescript-eslint/types@5.23.0":
+ version "5.23.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz#8733de0f58ae0ed318dbdd8f09868cdbf9f9ad09"
+ integrity sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==
"@typescript-eslint/types@5.9.0":
version "5.9.0"
@@ -6899,13 +6956,13 @@
semver "^7.3.5"
tsutils "^3.21.0"
-"@typescript-eslint/typescript-estree@5.22.0":
- version "5.22.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.22.0.tgz#e2116fd644c3e2fda7f4395158cddd38c0c6df97"
- integrity sha512-EyBEQxvNjg80yinGE2xdhpDYm41so/1kOItl0qrjIiJ1kX/L/L8WWGmJg8ni6eG3DwqmOzDqOhe6763bF92nOw==
+"@typescript-eslint/typescript-estree@5.23.0":
+ version "5.23.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz#dca5f10a0a85226db0796e8ad86addc9aee52065"
+ integrity sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==
dependencies:
- "@typescript-eslint/types" "5.22.0"
- "@typescript-eslint/visitor-keys" "5.22.0"
+ "@typescript-eslint/types" "5.23.0"
+ "@typescript-eslint/visitor-keys" "5.23.0"
debug "^4.3.2"
globby "^11.0.4"
is-glob "^4.0.3"
@@ -6925,15 +6982,15 @@
semver "^7.3.5"
tsutils "^3.21.0"
-"@typescript-eslint/utils@5.22.0":
- version "5.22.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.22.0.tgz#1f2c4897e2cf7e44443c848a13c60407861babd8"
- integrity sha512-HodsGb037iobrWSUMS7QH6Hl1kppikjA1ELiJlNSTYf/UdMEwzgj0WIp+lBNb6WZ3zTwb0tEz51j0Wee3iJ3wQ==
+"@typescript-eslint/utils@5.23.0":
+ version "5.23.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.23.0.tgz#4691c3d1b414da2c53d8943310df36ab1c50648a"
+ integrity sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA==
dependencies:
"@types/json-schema" "^7.0.9"
- "@typescript-eslint/scope-manager" "5.22.0"
- "@typescript-eslint/types" "5.22.0"
- "@typescript-eslint/typescript-estree" "5.22.0"
+ "@typescript-eslint/scope-manager" "5.23.0"
+ "@typescript-eslint/types" "5.23.0"
+ "@typescript-eslint/typescript-estree" "5.23.0"
eslint-scope "^5.1.1"
eslint-utils "^3.0.0"
@@ -6957,12 +7014,12 @@
"@typescript-eslint/types" "5.20.0"
eslint-visitor-keys "^3.0.0"
-"@typescript-eslint/visitor-keys@5.22.0":
- version "5.22.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.22.0.tgz#f49c0ce406944ffa331a1cfabeed451ea4d0909c"
- integrity sha512-DbgTqn2Dv5RFWluG88tn0pP6Ex0ROF+dpDO1TNNZdRtLjUr6bdznjA6f/qNqJLjd2PgguAES2Zgxh/JzwzETDg==
+"@typescript-eslint/visitor-keys@5.23.0":
+ version "5.23.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz#057c60a7ca64667a39f991473059377a8067c87b"
+ integrity sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==
dependencies:
- "@typescript-eslint/types" "5.22.0"
+ "@typescript-eslint/types" "5.23.0"
eslint-visitor-keys "^3.0.0"
"@typescript-eslint/visitor-keys@5.9.0":
@@ -7857,9 +7914,9 @@ aws-sdk-mock@^5.2.1:
traverse "^0.6.6"
aws-sdk@^2.1122.0, aws-sdk@^2.840.0, aws-sdk@^2.948.0:
- version "2.1130.0"
- resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1130.0.tgz#3aeeceaf1cfe82a8400295e7c2c6642a16a6a4fc"
- integrity sha512-bkLXuOpHphKvaMAbbmqaHQtYsGICmoyEJdLlNOTCq7dH0uKxARcZEj01ebCifsJJ/fOrPt8EbNUHPu4/DOueDA==
+ version "2.1133.0"
+ resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1133.0.tgz#db530faaa8dbe98503fd600b4e95efdd1c3996c7"
+ integrity sha512-TK7lcDxkrAc15Lmx030u4Wn3P798oxBVs79DBsD8+cZcW5Y8Gvat+evIZpkDoqh8YsfegvlI2jFg4ECQxKYPVA==
dependencies:
buffer "4.9.2"
events "1.1.1"
@@ -8175,12 +8232,12 @@ better-path-resolve@1.0.0:
is-windows "^1.0.0"
better-sqlite3@^7.5.0:
- version "7.5.1"
- resolved "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.5.1.tgz#22c87135b871afd60f7cb0469d73d5339ad38665"
- integrity sha512-+i6tH1y9KEIol1iYpZJrqDwBDQZGHioDENU49Rnidorp3bSXvw/QTYDjQGq9+TFF7RX4q0YV1sEOIRq4vDZdRg==
+ version "7.5.3"
+ resolved "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.5.3.tgz#b42e02941f918cb8048971273abc458d937ab2b9"
+ integrity sha512-tNIrDsThpWT8j1mg+svI1pqCYROqNOWMbB2qXVg+TJqH9UR5XnbAHyRsLZoJagldGTTqJPj/sUPVOkW0GRpYqw==
dependencies:
bindings "^1.5.0"
- prebuild-install "^7.0.0"
+ prebuild-install "^7.1.0"
bfj@^7.0.2:
version "7.0.2"
@@ -9448,10 +9505,10 @@ component-inherit@0.0.3:
resolved "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=
-compress-brotli@^1.3.6:
- version "1.3.6"
- resolved "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.6.tgz#64bd6f21f4f3e9841dbac392f4c29218caf5e9d9"
- integrity sha512-au99/GqZtUtiCBliqLFbWlhnCxn+XSYjwZ77q6mKN4La4qOXDoLVPZ50iXr0WmAyMxl8yqoq3Yq4OeQNPPkyeQ==
+compress-brotli@^1.3.8:
+ version "1.3.8"
+ resolved "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz#0c0a60c97a989145314ec381e84e26682e7b38db"
+ integrity sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==
dependencies:
"@types/json-buffer" "~3.0.0"
json-buffer "~3.0.1"
@@ -9715,16 +9772,16 @@ cookie@0.4.1:
resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1"
integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
+cookie@0.4.2, cookie@^0.4.1, cookie@^0.4.2, cookie@~0.4.1:
+ version "0.4.2"
+ resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
+ integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
+
cookie@0.5.0:
version "0.5.0"
resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
-cookie@^0.4.1, cookie@^0.4.2, cookie@~0.4.1:
- version "0.4.2"
- resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
- integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
-
cookiejar@^2.1.3:
version "2.1.3"
resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc"
@@ -9761,9 +9818,9 @@ core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.10:
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
core-js@^3.4.1, core-js@^3.6.5:
- version "3.22.4"
- resolved "https://registry.npmjs.org/core-js/-/core-js-3.22.4.tgz#f4b3f108d45736935aa028444a69397e40d8c531"
- integrity sha512-1uLykR+iOfYja+6Jn/57743gc9n73EWiOnSJJ4ba3B4fOEYDBv25MagmEZBxTp5cWq4b/KPx/l77zgsp28ju4w==
+ version "3.22.5"
+ resolved "https://registry.npmjs.org/core-js/-/core-js-3.22.5.tgz#a5f5a58e663d5c0ebb4e680cd7be37536fb2a9cf"
+ integrity sha512-VP/xYuvJ0MJWRAobcmQ8F2H6Bsn+s7zqAAjFaHGBMc5AQm7zaelhD1LGduFn2EehEcQcU+br6t+fwbpQ5d1ZWA==
core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
@@ -10209,9 +10266,9 @@ cypress-plugin-snapshots@^1.4.4:
unidiff "1.0.2"
cypress@^9.5.0:
- version "9.6.0"
- resolved "https://registry.npmjs.org/cypress/-/cypress-9.6.0.tgz#84473b3362255fa8f5e627a596e58575c9e5320f"
- integrity sha512-nNwt9eBQmSENamwa8LxvggXksfyzpyYaQ7lNBLgks3XZ6dPE/6BCQFBzeAyAPt/bNXfH3tKPkAyhiAZPYkWoEg==
+ version "9.6.1"
+ resolved "https://registry.npmjs.org/cypress/-/cypress-9.6.1.tgz#a7d6b5a53325b3dc4960181f5800a5ade0f085eb"
+ integrity sha512-ECzmV7pJSkk+NuAhEw6C3D+RIRATkSb2VAHXDY6qGZbca/F9mv5pPsj2LO6Ty6oIFVBTrwCyL9agl28MtJMe2g==
dependencies:
"@cypress/request" "^2.88.10"
"@cypress/xvfb" "^1.2.4"
@@ -10853,10 +10910,10 @@ detect-port-alt@^1.1.6:
address "^1.0.1"
debug "^2.6.0"
-devtools-protocol@0.0.981744:
- version "0.0.981744"
- resolved "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz#9960da0370284577d46c28979a0b32651022bacf"
- integrity sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==
+devtools-protocol@0.0.982423:
+ version "0.0.982423"
+ resolved "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.982423.tgz#39ac3791d4c5b90ebb416d4384663b7b0cc44154"
+ integrity sha512-FnVW2nDbjGNw1uD/JRC+9U5768W7e1TfUwqbDTcSsAu1jXFjITSX8w3rkW5FEpHRMPPGpvNSmO1pOpqByiWscA==
dezalgo@1.0.3, dezalgo@^1.0.0:
version "1.0.3"
@@ -11051,9 +11108,9 @@ dompurify@=2.3.3:
integrity sha512-dqnqRkPMAjOZE0FogZ+ceJNM2dZ3V/yNOuFB7+39qpO93hHhfRpHw3heYQC7DPK9FqbQTfBKUJhiSfz4MvXYwg==
dompurify@^2.2.7, dompurify@^2.2.9, dompurify@^2.3.6:
- version "2.3.6"
- resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.3.6.tgz#2e019d7d7617aacac07cbbe3d88ae3ad354cf875"
- integrity sha512-OFP2u/3T1R5CEgWCEONuJ1a5+MFKnOYpkywpUSxv/dj1LeBT1erK+JwM7zK0ROy2BRhqVCf0LRw/kHqKuMkVGg==
+ version "2.3.8"
+ resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.3.8.tgz#224fe9ae57d7ebd9a1ae1ac18c1c1ca3f532226f"
+ integrity sha512-eVhaWoVibIzqdGYjwsBWodIQIaXFSB+cKDf4cfxLMsK0xiud6SE+/WCVx/Xw/UwQsa4cS3T2eITcdtmTg2UKcw==
domutils@^2.5.2, domutils@^2.6.0:
version "2.8.0"
@@ -11297,10 +11354,10 @@ engine.io@~3.5.0:
engine.io-parser "~2.2.0"
ws "~7.4.2"
-enhanced-resolve@^5.9.2:
- version "5.9.2"
- resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz#0224dcd6a43389ebfb2d55efee517e5466772dd9"
- integrity sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==
+enhanced-resolve@^5.9.3:
+ version "5.9.3"
+ resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88"
+ integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==
dependencies:
graceful-fs "^4.2.4"
tapable "^2.2.0"
@@ -11411,75 +11468,75 @@ es6-error@^4.1.1:
resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d"
integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==
-esbuild-android-64@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz#5b94a1306df31d55055f64a62ff6b763a47b7f64"
- integrity sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==
+esbuild-android-64@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.39.tgz#09f12a372eed9743fd77ff6d889ac14f7b340c21"
+ integrity sha512-EJOu04p9WgZk0UoKTqLId9VnIsotmI/Z98EXrKURGb3LPNunkeffqQIkjS2cAvidh+OK5uVrXaIP229zK6GvhQ==
-esbuild-android-arm64@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz#78acc80773d16007de5219ccce544c036abd50b8"
- integrity sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==
+esbuild-android-arm64@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.39.tgz#f608d00ea03fe26f3b1ab92a30f99220390f3071"
+ integrity sha512-+twajJqO7n3MrCz9e+2lVOnFplRsaGRwsq1KL/uOy7xK7QdRSprRQcObGDeDZUZsacD5gUkk6OiHiYp6RzU3CA==
-esbuild-darwin-64@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz#e02b1291f629ebdc2aa46fabfacc9aa28ff6aa46"
- integrity sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==
+esbuild-darwin-64@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.39.tgz#31528daa75b4c9317721ede344195163fae3e041"
+ integrity sha512-ImT6eUw3kcGcHoUxEcdBpi6LfTRWaV6+qf32iYYAfwOeV+XaQ/Xp5XQIBiijLeo+LpGci9M0FVec09nUw41a5g==
-esbuild-darwin-arm64@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz#01eb6650ec010b18c990e443a6abcca1d71290a9"
- integrity sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==
+esbuild-darwin-arm64@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.39.tgz#247f770d86d90a215fa194f24f90e30a0bd97245"
+ integrity sha512-/fcQ5UhE05OiT+bW5v7/up1bDsnvaRZPJxXwzXsMRrr7rZqPa85vayrD723oWMT64dhrgWeA3FIneF8yER0XTw==
-esbuild-freebsd-64@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz#790b8786729d4aac7be17648f9ea8e0e16475b5e"
- integrity sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==
+esbuild-freebsd-64@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.39.tgz#479414d294905055eb396ebe455ed42213284ee0"
+ integrity sha512-oMNH8lJI4wtgN5oxuFP7BQ22vgB/e3Tl5Woehcd6i2r6F3TszpCnNl8wo2d/KvyQ4zvLvCWAlRciumhQg88+kQ==
-esbuild-freebsd-arm64@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz#b66340ab28c09c1098e6d9d8ff656db47d7211e6"
- integrity sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==
+esbuild-freebsd-arm64@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.39.tgz#cedeb10357c88533615921ae767a67dc870a474c"
+ integrity sha512-1GHK7kwk57ukY2yI4ILWKJXaxfr+8HcM/r/JKCGCPziIVlL+Wi7RbJ2OzMcTKZ1HpvEqCTBT/J6cO4ZEwW4Ypg==
-esbuild-linux-32@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz#7927f950986fd39f0ff319e92839455912b67f70"
- integrity sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==
+esbuild-linux-32@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.39.tgz#d9f008c4322d771f3958f59c1eee5a05cdf92485"
+ integrity sha512-g97Sbb6g4zfRLIxHgW2pc393DjnkTRMeq3N1rmjDUABxpx8SjocK4jLen+/mq55G46eE2TA0MkJ4R3SpKMu7dg==
-esbuild-linux-64@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz#4893d07b229d9cfe34a2b3ce586399e73c3ac519"
- integrity sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==
+esbuild-linux-64@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.39.tgz#ba58d7f66858913aeb1ab5c6bde1bbd824731795"
+ integrity sha512-4tcgFDYWdI+UbNMGlua9u1Zhu0N5R6u9tl5WOM8aVnNX143JZoBZLpCuUr5lCKhnD0SCO+5gUyMfupGrHtfggQ==
-esbuild-linux-arm64@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz#8442402e37d0b8ae946ac616784d9c1a2041056a"
- integrity sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==
+esbuild-linux-arm64@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.39.tgz#708785a30072702b5b1c16b65cf9c25c51202529"
+ integrity sha512-23pc8MlD2D6Px1mV8GMglZlKgwgNKAO8gsgsLLcXWSs9lQsCYkIlMo/2Ycfo5JrDIbLdwgP8D2vpfH2KcBqrDQ==
-esbuild-linux-arm@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz#d5dbf32d38b7f79be0ec6b5fb2f9251fd9066986"
- integrity sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==
+esbuild-linux-arm@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.39.tgz#4e8b5deaa7ab60d0d28fab131244ef82b40684f4"
+ integrity sha512-t0Hn1kWVx5UpCzAJkKRfHeYOLyFnXwYynIkK54/h3tbMweGI7dj400D1k0Vvtj2u1P+JTRT9tx3AjtLEMmfVBQ==
-esbuild-linux-mips64le@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz#95081e42f698bbe35d8ccee0e3a237594b337eb5"
- integrity sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==
+esbuild-linux-mips64le@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.39.tgz#6f3bf3023f711084e5a1e8190487d2020f39f0f7"
+ integrity sha512-epwlYgVdbmkuRr5n4es3B+yDI0I2e/nxhKejT9H0OLxFAlMkeQZxSpxATpDc9m8NqRci6Kwyb/SfmD1koG2Zuw==
-esbuild-linux-ppc64le@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz#dceb0a1b186f5df679618882a7990bd422089b47"
- integrity sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==
+esbuild-linux-ppc64le@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.39.tgz#900e718a4ea3f6aedde8424828eeefdd4b48d4b9"
+ integrity sha512-W/5ezaq+rQiQBThIjLMNjsuhPHg+ApVAdTz2LvcuesZFMsJoQAW2hutoyg47XxpWi7aEjJGrkS26qCJKhRn3QQ==
-esbuild-linux-riscv64@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz#61fb8edb75f475f9208c4a93ab2bfab63821afd2"
- integrity sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==
+esbuild-linux-riscv64@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.39.tgz#dcbff622fa37047a75d2ff7a1d8d2949d80277e4"
+ integrity sha512-IS48xeokcCTKeQIOke2O0t9t14HPvwnZcy+5baG13Z1wxs9ZrC5ig5ypEQQh4QMKxURD5TpCLHw2W42CLuVZaA==
-esbuild-linux-s390x@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz#34c7126a4937406bf6a5e69100185fd702d12fe0"
- integrity sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==
+esbuild-linux-s390x@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.39.tgz#3f725a7945b419406c99d93744b28552561dcdfd"
+ integrity sha512-zEfunpqR8sMomqXhNTFEKDs+ik7HC01m3M60MsEjZOqaywHu5e5682fMsqOlZbesEAAaO9aAtRBsU7CHnSZWyA==
esbuild-loader@^2.18.0:
version "2.18.0"
@@ -11493,61 +11550,61 @@ esbuild-loader@^2.18.0:
tapable "^2.2.0"
webpack-sources "^2.2.0"
-esbuild-netbsd-64@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz#322ea9937d9e529183ee281c7996b93eb38a5d95"
- integrity sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==
+esbuild-netbsd-64@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.39.tgz#e10e40b6a765798b90d4eb85901cc85c8b7ff85e"
+ integrity sha512-Uo2suJBSIlrZCe4E0k75VDIFJWfZy+bOV6ih3T4MVMRJh1lHJ2UyGoaX4bOxomYN3t+IakHPyEoln1+qJ1qYaA==
-esbuild-openbsd-64@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz#1ca29bb7a2bf09592dcc26afdb45108f08a2cdbd"
- integrity sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==
+esbuild-openbsd-64@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.39.tgz#935ec143f75ce10bd9cdb1c87fee00287eb0edbc"
+ integrity sha512-secQU+EpgUPpYjJe3OecoeGKVvRMLeKUxSMGHnK+aK5uQM3n1FPXNJzyz1LHFOo0WOyw+uoCxBYdM4O10oaCAA==
-esbuild-sunos-64@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz#c9446f7d8ebf45093e7bb0e7045506a88540019b"
- integrity sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==
+esbuild-sunos-64@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.39.tgz#0e7aa82b022a2e6d55b0646738b2582c2d72c3c0"
+ integrity sha512-qHq0t5gePEDm2nqZLb+35p/qkaXVS7oIe32R0ECh2HOdiXXkj/1uQI9IRogGqKkK+QjDG+DhwiUw7QoHur/Rwg==
-esbuild-windows-32@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz#f8e9b4602fd0ccbd48e5c8d117ec0ba4040f2ad1"
- integrity sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==
+esbuild-windows-32@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.39.tgz#3f1538241f31b538545f4b5841b248cac260fa35"
+ integrity sha512-XPjwp2OgtEX0JnOlTgT6E5txbRp6Uw54Isorm3CwOtloJazeIWXuiwK0ONJBVb/CGbiCpS7iP2UahGgd2p1x+Q==
-esbuild-windows-64@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz#280f58e69f78535f470905ce3e43db1746518107"
- integrity sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==
+esbuild-windows-64@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.39.tgz#b100c59f96d3c2da2e796e42fee4900d755d3e03"
+ integrity sha512-E2wm+5FwCcLpKsBHRw28bSYQw0Ikxb7zIMxw3OPAkiaQhLVr3dnVO8DofmbWhhf6b97bWzg37iSZ45ZDpLw7Ow==
-esbuild-windows-arm64@0.14.38:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz#d97e9ac0f95a4c236d9173fa9f86c983d6a53f54"
- integrity sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==
+esbuild-windows-arm64@0.14.39:
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.39.tgz#00268517e665b33c89778d61f144e4256b39f631"
+ integrity sha512-sBZQz5D+Gd0EQ09tZRnz/PpVdLwvp/ufMtJ1iDFYddDaPpZXKqPyaxfYBLs3ueiaksQ26GGa7sci0OqFzNs7KA==
esbuild@^0.14.1, esbuild@^0.14.10, esbuild@^0.14.6:
- version "0.14.38"
- resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.38.tgz#99526b778cd9f35532955e26e1709a16cca2fb30"
- integrity sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==
+ version "0.14.39"
+ resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.39.tgz#c926b2259fe6f6d3a94f528fb42e103c5a6d909a"
+ integrity sha512-2kKujuzvRWYtwvNjYDY444LQIA3TyJhJIX3Yo4+qkFlDDtGlSicWgeHVJqMUP/2sSfH10PGwfsj+O2ro1m10xQ==
optionalDependencies:
- esbuild-android-64 "0.14.38"
- esbuild-android-arm64 "0.14.38"
- esbuild-darwin-64 "0.14.38"
- esbuild-darwin-arm64 "0.14.38"
- esbuild-freebsd-64 "0.14.38"
- esbuild-freebsd-arm64 "0.14.38"
- esbuild-linux-32 "0.14.38"
- esbuild-linux-64 "0.14.38"
- esbuild-linux-arm "0.14.38"
- esbuild-linux-arm64 "0.14.38"
- esbuild-linux-mips64le "0.14.38"
- esbuild-linux-ppc64le "0.14.38"
- esbuild-linux-riscv64 "0.14.38"
- esbuild-linux-s390x "0.14.38"
- esbuild-netbsd-64 "0.14.38"
- esbuild-openbsd-64 "0.14.38"
- esbuild-sunos-64 "0.14.38"
- esbuild-windows-32 "0.14.38"
- esbuild-windows-64 "0.14.38"
- esbuild-windows-arm64 "0.14.38"
+ esbuild-android-64 "0.14.39"
+ esbuild-android-arm64 "0.14.39"
+ esbuild-darwin-64 "0.14.39"
+ esbuild-darwin-arm64 "0.14.39"
+ esbuild-freebsd-64 "0.14.39"
+ esbuild-freebsd-arm64 "0.14.39"
+ esbuild-linux-32 "0.14.39"
+ esbuild-linux-64 "0.14.39"
+ esbuild-linux-arm "0.14.39"
+ esbuild-linux-arm64 "0.14.39"
+ esbuild-linux-mips64le "0.14.39"
+ esbuild-linux-ppc64le "0.14.39"
+ esbuild-linux-riscv64 "0.14.39"
+ esbuild-linux-s390x "0.14.39"
+ esbuild-netbsd-64 "0.14.39"
+ esbuild-openbsd-64 "0.14.39"
+ esbuild-sunos-64 "0.14.39"
+ esbuild-windows-32 "0.14.39"
+ esbuild-windows-64 "0.14.39"
+ esbuild-windows-arm64 "0.14.39"
escalade@^3.1.1:
version "3.1.1"
@@ -11888,10 +11945,10 @@ etag@~1.8.1:
resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
-event-source-polyfill@1.0.26:
- version "1.0.26"
- resolved "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.26.tgz#86c04d088ef078279168eefa028f928fec5059a4"
- integrity sha512-IwDLs9fUTcGAyacHBeS53T8wcEkDyDn0UP4tfQqJ4wQP8AyH0mszuQf2ULTylnpI0sMquzJ4usrNV7+uztwI9A==
+event-source-polyfill@1.0.25:
+ version "1.0.25"
+ resolved "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.25.tgz#d8bb7f99cb6f8119c2baf086d9f6ee0514b6d9c8"
+ integrity sha512-hQxu6sN1Eq4JjoI7ITdQeGGUN193A2ra83qC0Ltm9I2UJVAten3OFVN6k5RX4YWeCS0BoC8xg/5czOCIHVosQg==
event-stream@=3.3.4:
version "3.3.4"
@@ -11940,60 +11997,60 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
safe-buffer "^5.1.1"
"example-app@link:packages/app":
- version "0.2.71-next.1"
+ version "0.2.71-next.2"
dependencies:
"@backstage/app-defaults" "^1.0.2-next.0"
- "@backstage/catalog-model" "^1.0.1"
- "@backstage/cli" "^0.17.1-next.1"
- "@backstage/config" "^1.0.0"
- "@backstage/core-app-api" "^1.0.2-next.0"
- "@backstage/core-components" "^0.9.4-next.0"
- "@backstage/core-plugin-api" "^1.0.2-next.0"
- "@backstage/integration-react" "^1.1.0-next.1"
- "@backstage/plugin-airbrake" "^0.3.5-next.1"
+ "@backstage/catalog-model" "^1.0.2-next.0"
+ "@backstage/cli" "^0.17.1-next.2"
+ "@backstage/config" "^1.0.1-next.0"
+ "@backstage/core-app-api" "^1.0.2-next.1"
+ "@backstage/core-components" "^0.9.4-next.1"
+ "@backstage/core-plugin-api" "^1.0.2-next.1"
+ "@backstage/integration-react" "^1.1.0-next.2"
+ "@backstage/plugin-airbrake" "^0.3.5-next.2"
"@backstage/plugin-apache-airflow" "^0.1.13-next.0"
- "@backstage/plugin-api-docs" "^0.8.5-next.1"
- "@backstage/plugin-azure-devops" "^0.1.21-next.1"
- "@backstage/plugin-badges" "^0.2.29-next.1"
- "@backstage/plugin-catalog" "^1.2.0-next.1"
- "@backstage/plugin-catalog-common" "^1.0.1"
- "@backstage/plugin-catalog-graph" "^0.2.17-next.1"
- "@backstage/plugin-catalog-import" "^0.8.8-next.1"
- "@backstage/plugin-catalog-react" "^1.1.0-next.1"
- "@backstage/plugin-circleci" "^0.3.5-next.1"
- "@backstage/plugin-cloudbuild" "^0.3.5-next.1"
- "@backstage/plugin-code-coverage" "^0.1.32-next.1"
- "@backstage/plugin-cost-insights" "^0.11.27-next.0"
- "@backstage/plugin-explore" "^0.3.36-next.1"
+ "@backstage/plugin-api-docs" "^0.8.5-next.2"
+ "@backstage/plugin-azure-devops" "^0.1.21-next.2"
+ "@backstage/plugin-badges" "^0.2.29-next.2"
+ "@backstage/plugin-catalog" "^1.2.0-next.2"
+ "@backstage/plugin-catalog-common" "^1.0.2-next.0"
+ "@backstage/plugin-catalog-graph" "^0.2.17-next.2"
+ "@backstage/plugin-catalog-import" "^0.8.8-next.2"
+ "@backstage/plugin-catalog-react" "^1.1.0-next.2"
+ "@backstage/plugin-circleci" "^0.3.5-next.2"
+ "@backstage/plugin-cloudbuild" "^0.3.5-next.2"
+ "@backstage/plugin-code-coverage" "^0.1.32-next.2"
+ "@backstage/plugin-cost-insights" "^0.11.27-next.1"
+ "@backstage/plugin-explore" "^0.3.36-next.2"
"@backstage/plugin-gcalendar" "^0.3.1-next.1"
"@backstage/plugin-gcp-projects" "^0.3.24-next.0"
- "@backstage/plugin-github-actions" "^0.5.5-next.1"
- "@backstage/plugin-gocd" "^0.1.11-next.1"
- "@backstage/plugin-graphiql" "^0.2.37-next.0"
- "@backstage/plugin-home" "^0.4.21-next.1"
- "@backstage/plugin-jenkins" "^0.7.4-next.1"
- "@backstage/plugin-kafka" "^0.3.5-next.1"
- "@backstage/plugin-kubernetes" "^0.6.5-next.1"
- "@backstage/plugin-lighthouse" "^0.3.5-next.1"
+ "@backstage/plugin-github-actions" "^0.5.5-next.2"
+ "@backstage/plugin-gocd" "^0.1.11-next.2"
+ "@backstage/plugin-graphiql" "^0.2.37-next.1"
+ "@backstage/plugin-home" "^0.4.21-next.2"
+ "@backstage/plugin-jenkins" "^0.7.4-next.2"
+ "@backstage/plugin-kafka" "^0.3.5-next.2"
+ "@backstage/plugin-kubernetes" "^0.6.5-next.2"
+ "@backstage/plugin-lighthouse" "^0.3.5-next.2"
"@backstage/plugin-newrelic" "^0.3.23-next.0"
- "@backstage/plugin-newrelic-dashboard" "^0.1.13-next.1"
- "@backstage/plugin-org" "^0.5.5-next.1"
- "@backstage/plugin-pagerduty" "0.3.32-next.1"
- "@backstage/plugin-permission-react" "^0.4.1-next.0"
- "@backstage/plugin-rollbar" "^0.4.5-next.1"
- "@backstage/plugin-scaffolder" "^1.2.0-next.1"
- "@backstage/plugin-search" "^0.8.1-next.1"
- "@backstage/plugin-search-common" "^0.3.3"
- "@backstage/plugin-search-react" "^0.2.0-next.1"
- "@backstage/plugin-sentry" "^0.3.43-next.1"
+ "@backstage/plugin-newrelic-dashboard" "^0.1.13-next.2"
+ "@backstage/plugin-org" "^0.5.5-next.2"
+ "@backstage/plugin-pagerduty" "0.3.32-next.2"
+ "@backstage/plugin-permission-react" "^0.4.1-next.1"
+ "@backstage/plugin-rollbar" "^0.4.5-next.2"
+ "@backstage/plugin-scaffolder" "^1.2.0-next.2"
+ "@backstage/plugin-search" "^0.8.1-next.2"
+ "@backstage/plugin-search-common" "^0.3.4-next.0"
+ "@backstage/plugin-search-react" "^0.2.0-next.2"
+ "@backstage/plugin-sentry" "^0.3.43-next.2"
"@backstage/plugin-shortcuts" "^0.2.6-next.0"
- "@backstage/plugin-stack-overflow" "^0.1.1-next.1"
- "@backstage/plugin-tech-insights" "^0.2.1-next.1"
+ "@backstage/plugin-stack-overflow" "^0.1.1-next.2"
+ "@backstage/plugin-tech-insights" "^0.2.1-next.2"
"@backstage/plugin-tech-radar" "^0.5.12-next.0"
- "@backstage/plugin-techdocs" "^1.1.1-next.1"
- "@backstage/plugin-techdocs-module-addons-contrib" "^0.1.0-next.1"
- "@backstage/plugin-techdocs-react" "^0.1.1-next.1"
- "@backstage/plugin-todo" "^0.2.7-next.1"
+ "@backstage/plugin-techdocs" "^1.1.1-next.2"
+ "@backstage/plugin-techdocs-module-addons-contrib" "^0.1.0-next.2"
+ "@backstage/plugin-techdocs-react" "^0.1.1-next.2"
+ "@backstage/plugin-todo" "^0.2.7-next.2"
"@backstage/plugin-user-settings" "^0.4.4-next.0"
"@backstage/theme" "^0.2.15"
"@material-ui/core" "^4.12.2"
@@ -12140,11 +12197,11 @@ express-promise-router@^4.1.0:
methods "^1.0.0"
express-session@^1.17.1:
- version "1.17.2"
- resolved "https://registry.npmjs.org/express-session/-/express-session-1.17.2.tgz#397020374f9bf7997f891b85ea338767b30d0efd"
- integrity sha512-mPcYcLA0lvh7D4Oqr5aNJFMtBMKPLl++OKKxkHzZ0U0oDq1rpKBnkR5f5vCHR26VeArlTOEF9td4x5IjICksRQ==
+ version "1.17.3"
+ resolved "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz#14b997a15ed43e5949cb1d073725675dd2777f36"
+ integrity sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==
dependencies:
- cookie "0.4.1"
+ cookie "0.4.2"
cookie-signature "1.0.6"
debug "2.6.9"
depd "~2.0.0"
@@ -13346,11 +13403,11 @@ grapheme-splitter@^1.0.4:
integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
graphiql@^1.5.12, graphiql@^1.8.8:
- version "1.8.8"
- resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.8.8.tgz#eef760097b20901c0427f831ee6403fbdb2711b8"
- integrity sha512-0AwnT7YnLU0Y+rQSZgdL7HxFJtAC2emyQAzsaqTglur/gSqw+4115LYi9tNRLGnFpxGE8giTslYLh9P0RdhiWg==
+ version "1.8.9"
+ resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.8.9.tgz#96063ace9379699e873da078bf0f2ae7062f370e"
+ integrity sha512-X+olqol3VfOrFrsAfYzgNbvHoEE0lDUtg52+f3yLeNY4Ens+rAH4RSdH4wVtoRdh3CafmhVsfLQvn04hHkgftQ==
dependencies:
- "@graphiql/toolkit" "^0.4.3"
+ "@graphiql/toolkit" "^0.4.4"
codemirror "^5.65.3"
codemirror-graphql "^1.3.0"
copy-to-clipboard "^3.2.0"
@@ -13439,9 +13496,9 @@ graphql@^15.5.1:
integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==
graphql@^16.0.0, graphql@^16.3.0:
- version "16.4.0"
- resolved "https://registry.npmjs.org/graphql/-/graphql-16.4.0.tgz#bb10b1b4683045dedcb67000eb4ad134a36c59e6"
- integrity sha512-tYDNcRvKCcfHREZYje3v33NSrSD/ZpbWWdPtBtUUuXx9NCo/2QDxYzNqCnMvfsrnbwRpEHMovVrPu/ERoLrIRg==
+ version "16.5.0"
+ resolved "https://registry.npmjs.org/graphql/-/graphql-16.5.0.tgz#41b5c1182eaac7f3d47164fb247f61e4dfb69c85"
+ integrity sha512-qbHgh8Ix+j/qY+a/ZcJnFQ+j8ezakqPiHwPiZhV/3PgGlgf96QMBB5/f2rkiC9sgLoy/xvT6TSiaf2nTHJh5iA==
grouped-queue@^2.0.0:
version "2.0.0"
@@ -13956,10 +14013,10 @@ humanize-ms@^1.2.1:
dependencies:
ms "^2.0.0"
-husky@^7.0.4:
- version "7.0.4"
- resolved "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535"
- integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==
+husky@^8.0.0:
+ version "8.0.1"
+ resolved "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz#511cb3e57de3e3190514ae49ed50f6bc3f50b3e9"
+ integrity sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==
hyphenate-style-name@^1.0.2, hyphenate-style-name@^1.0.3:
version "1.0.3"
@@ -14054,9 +14111,9 @@ immer@9.0.7:
integrity sha512-KGllzpbamZDvOIxnmJ0jI840g7Oikx58lBPWV0hUh7dtAyZpFqqrBZdKka5GlTwMTZ1Tjc/bKKW4VSFAt6BqMA==
immer@^9.0.1, immer@^9.0.7:
- version "9.0.12"
- resolved "https://registry.npmjs.org/immer/-/immer-9.0.12.tgz#2d33ddf3ee1d247deab9d707ca472c8c942a0f20"
- integrity sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==
+ version "9.0.14"
+ resolved "https://registry.npmjs.org/immer/-/immer-9.0.14.tgz#e05b83b63999d26382bb71676c9d827831248a48"
+ integrity sha512-ubBeqQutOSLIFCUBN03jGeOS6a3DoYlSYwYJTa+gSKEZKU5redJIqkIdZ3JVv/4RZpfcXdAWH5zCNLWPRv2WDw==
immutable@^3.x.x:
version "3.8.2"
@@ -14293,7 +14350,7 @@ invert-kv@^1.0.0:
resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
-ioredis@^5.0.3:
+ioredis@^5.0.4:
version "5.0.4"
resolved "https://registry.npmjs.org/ioredis/-/ioredis-5.0.4.tgz#0d4abfd818adfc5ef5029fddac4b8f503a1433b7"
integrity sha512-qFJw3MnPNsJF1lcIOP3vztbsasOXK3nDdNAgjQj7t7/Bn/w10PGchTOpqylQNxjzPbLoYDu34LjeJtSWiKBntQ==
@@ -14984,9 +15041,9 @@ isomorphic-form-data@^2.0.0:
form-data "^2.3.2"
isomorphic-git@^1.8.0:
- version "1.17.1"
- resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.17.1.tgz#ac5a095b78cf5ceef51954f5df4b1bdd24943e5f"
- integrity sha512-JLZzAmc78yELH6+bZgMzqV0KGEi2duo+URWmyEnSbhhibHwDsMIlUw5tr1ZVHjC2CUQtU0X/5EY9Sbzsyx7nug==
+ version "1.17.2"
+ resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.17.2.tgz#d49eda3122dfa3b860f0c68d651297c6403b715f"
+ integrity sha512-KtYyJye7Ad1XSgObsw7dwn3OaEcGUy04BHv6D+qBz2BWY7T7q7HXBzoSOiVvVMbOo+K2EZ2MUT+g2QkpJCPQLQ==
dependencies:
async-lock "^1.1.0"
clean-git-ref "^2.0.1"
@@ -15739,7 +15796,7 @@ json-buffer@3.0.1, json-buffer@^3.0.1, json-buffer@~3.0.1:
resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
-json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
+json-parse-better-errors@^1.0.1:
version "1.0.2"
resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
@@ -16121,11 +16178,11 @@ keyv@^3.0.0:
json-buffer "3.0.0"
keyv@^4.0.0, keyv@^4.0.3:
- version "4.2.2"
- resolved "https://registry.npmjs.org/keyv/-/keyv-4.2.2.tgz#4b6f602c0228ef4d8214c03c520bef469ed6b768"
- integrity sha512-uYS0vKTlBIjNCAUqrjlxmruxOEiZxZIHXyp32sdcGmP+ukFrmWUnE//RcPXJH3Vxrni1H2gsQbjHE0bH7MtMQQ==
+ version "4.2.7"
+ resolved "https://registry.npmjs.org/keyv/-/keyv-4.2.7.tgz#00b8994d46098e8eb8c933cb29aaaf18be5effea"
+ integrity sha512-HeOstD8SXvtWoQhMMBCelcUuZsiV7T7MwsADtOXT0KuwYP9nCxrSoMDeLXNDTLN3VFSuRp38JzoGbbTboq3QQw==
dependencies:
- compress-brotli "^1.3.6"
+ compress-brotli "^1.3.8"
json-buffer "3.0.1"
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
@@ -18877,9 +18934,9 @@ openid-client@^4.1.1:
oidc-token-hash "^5.0.1"
openid-client@^5.1.3:
- version "5.1.5"
- resolved "https://registry.npmjs.org/openid-client/-/openid-client-5.1.5.tgz#cac1e50015937e5af70be45e1ae5b1cb113f1f74"
- integrity sha512-m41p7V/iXyqc0WZeo20uwKk8NPDAtYd3JS0uWjttcqwvFo4YNYAKegMAMea1qG5RClddQ6rV9ec/TP6ZvsCrYw==
+ version "5.1.6"
+ resolved "https://registry.npmjs.org/openid-client/-/openid-client-5.1.6.tgz#e5eb2032ecfdcfc108660b5c525910a14e352f11"
+ integrity sha512-HTFaXWdUHvLFw4GaEMgC0jXYBgpjgzQQNHW1pZsSqJorSgrXzxJ+4u/LWCGaClDEse5HLjXRV+zU5Bn3OefiZw==
dependencies:
jose "^4.1.4"
lru-cache "^6.0.0"
@@ -20184,10 +20241,10 @@ postgres-interval@^1.1.0:
dependencies:
xtend "^4.0.0"
-prebuild-install@^7.0.0:
- version "7.0.1"
- resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.0.1.tgz#c10075727c318efe72412f333e0ef625beaf3870"
- integrity sha512-QBSab31WqkyxpnMWQxubYAHR5S9B2+r81ucocew34Fkl98FhvKIF50jIJnNOBmAZfyNV7vE5T6gd3hTVWgY6tg==
+prebuild-install@^7.1.0:
+ version "7.1.0"
+ resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.0.tgz#991b6ac16c81591ba40a6d5de93fb33673ac1370"
+ integrity sha512-CNcMgI1xBypOyGqjp3wOc8AAo1nMhZS3Cwd3iHIxOdAUbb+YxdNuM4Z5iIrZ8RLvOsf3F3bl7b7xGq6DjQoNYA==
dependencies:
detect-libc "^2.0.0"
expand-template "^2.0.3"
@@ -20542,14 +20599,14 @@ pupa@^2.1.1:
dependencies:
escape-goat "^2.0.0"
-puppeteer@^13.1.1:
- version "13.7.0"
- resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz#18e16f83e397cf02f7a0804c67c1603d381cfb0b"
- integrity sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA==
+puppeteer@^14.0.0:
+ version "14.0.0"
+ resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-14.0.0.tgz#829e97b70fa81746bb88ec2d72f11a7429cc84ab"
+ integrity sha512-Aj/cySGBMWpUYEWV0YOcwyhq5lOxuuiGScgdj/OvslAm/ydoywiI8OzAIXT4HzKmNTmzm/fKKHHtcsQa/fFgdw==
dependencies:
cross-fetch "3.1.5"
debug "4.3.4"
- devtools-protocol "0.0.981744"
+ devtools-protocol "0.0.982423"
extract-zip "2.0.1"
https-proxy-agent "5.0.1"
pkg-dir "4.2.0"
@@ -20558,7 +20615,7 @@ puppeteer@^13.1.1:
rimraf "3.0.2"
tar-fs "2.1.1"
unbzip2-stream "1.4.3"
- ws "8.5.0"
+ ws "8.6.0"
q@^1.5.1:
version "1.5.1"
@@ -20711,6 +20768,15 @@ rc-progress@3.2.4:
classnames "^2.2.6"
rc-util "^5.16.1"
+rc-progress@3.3.2:
+ version "3.3.2"
+ resolved "https://registry.npmjs.org/rc-progress/-/rc-progress-3.3.2.tgz#57362d49bb6b7b09fec84bf18220619294bde675"
+ integrity sha512-m+1LtVlXIomz8lcghfF/kViT5h/NtdWp87hnFL+FlnrxyZCEuB4N5BKNN6ctZa3a1Mae+4SMO8AG5lScjU06Ig==
+ dependencies:
+ "@babel/runtime" "^7.10.1"
+ classnames "^2.2.6"
+ rc-util "^5.16.1"
+
rc-util@^5.16.1:
version "5.16.1"
resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.16.1.tgz#374db7cb735512f05165ddc3d6b2c61c21b8b4e3"
@@ -20836,9 +20902,9 @@ react-helmet@6.1.0:
react-side-effect "^2.1.0"
react-hook-form@^7.12.2, react-hook-form@^7.13.0:
- version "7.30.0"
- resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.30.0.tgz#c9e2fd54d3627e43bd94bf38ef549df2e80c1371"
- integrity sha512-DzjiM6o2vtDGNMB9I4yCqW8J21P314SboNG1O0obROkbg7KVS0I7bMtwSdKyapnCPjHgnxc3L7E5PEdISeEUcQ==
+ version "7.31.1"
+ resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.31.1.tgz#16c357dd366bc226172e6acbb5a1672873bbfb28"
+ integrity sha512-QjtjZ8r8KtEBWWpcXLyQordCraTFxILtyQpaz5KLLxN2YzcC+FZ9LLtOnNGuOnzZo9gCoB+viK3ZHV9Mb2htmQ==
react-hot-loader@^4.13.0:
version "4.13.0"
@@ -20917,9 +20983,9 @@ react-markdown@^8.0.0:
vfile "^5.0.0"
react-query@^3.34.16:
- version "3.38.1"
- resolved "https://registry.npmjs.org/react-query/-/react-query-3.38.1.tgz#4892304dae7eca7fa0ab5c8ae3e9748f0fca2df9"
- integrity sha512-CM9hsz6oib17hsBguGaMJr+a0swMzou2gvNHHjAusnXvkfTx6CTzx0Iwuplox1jI2j3WiY91BGrcIN6bp1n1Iw==
+ version "3.39.0"
+ resolved "https://registry.npmjs.org/react-query/-/react-query-3.39.0.tgz#0caca7b0da98e65008bbcd4df0d25618c2100050"
+ integrity sha512-Od0IkSuS79WJOhzWBx/ys0x13+7wFqgnn64vBqqAAnZ9whocVhl/y1padD5uuZ6EIkXbFbInax0qvY7zGM0thA==
dependencies:
"@babel/runtime" "^7.5.5"
broadcast-channel "^3.4.1"
@@ -23597,20 +23663,20 @@ tdigest@^0.1.1:
bintrees "1.0.1"
"techdocs-cli-embedded-app@link:packages/techdocs-cli-embedded-app":
- version "0.2.70-next.1"
+ version "0.2.70-next.2"
dependencies:
"@backstage/app-defaults" "^1.0.2-next.0"
- "@backstage/catalog-model" "^1.0.1"
- "@backstage/cli" "^0.17.1-next.1"
- "@backstage/config" "^1.0.0"
- "@backstage/core-app-api" "^1.0.2-next.0"
- "@backstage/core-components" "^0.9.4-next.0"
- "@backstage/core-plugin-api" "^1.0.2-next.0"
- "@backstage/integration-react" "^1.1.0-next.1"
- "@backstage/plugin-catalog" "^1.2.0-next.1"
- "@backstage/plugin-techdocs" "^1.1.1-next.1"
- "@backstage/plugin-techdocs-react" "^0.1.1-next.1"
- "@backstage/test-utils" "^1.1.0-next.1"
+ "@backstage/catalog-model" "^1.0.2-next.0"
+ "@backstage/cli" "^0.17.1-next.2"
+ "@backstage/config" "^1.0.1-next.0"
+ "@backstage/core-app-api" "^1.0.2-next.1"
+ "@backstage/core-components" "^0.9.4-next.1"
+ "@backstage/core-plugin-api" "^1.0.2-next.1"
+ "@backstage/integration-react" "^1.1.0-next.2"
+ "@backstage/plugin-catalog" "^1.2.0-next.2"
+ "@backstage/plugin-techdocs" "^1.1.1-next.2"
+ "@backstage/plugin-techdocs-react" "^0.1.1-next.2"
+ "@backstage/test-utils" "^1.1.0-next.2"
"@backstage/theme" "^0.2.15"
"@material-ui/core" "^4.11.0"
"@material-ui/icons" "^4.9.1"
@@ -25073,9 +25139,9 @@ webpack-sources@^3.2.3:
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
webpack@^5, webpack@^5.66.0:
- version "5.72.0"
- resolved "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz#f8bc40d9c6bb489a4b7a8a685101d6022b8b6e28"
- integrity sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==
+ version "5.72.1"
+ resolved "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz#3500fc834b4e9ba573b9f430b2c0a61e1bb57d13"
+ integrity sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==
dependencies:
"@types/eslint-scope" "^3.7.3"
"@types/estree" "^0.0.51"
@@ -25086,13 +25152,13 @@ webpack@^5, webpack@^5.66.0:
acorn-import-assertions "^1.7.6"
browserslist "^4.14.5"
chrome-trace-event "^1.0.2"
- enhanced-resolve "^5.9.2"
+ enhanced-resolve "^5.9.3"
es-module-lexer "^0.9.0"
eslint-scope "5.1.1"
events "^3.2.0"
glob-to-regexp "^0.4.1"
graceful-fs "^4.2.9"
- json-parse-better-errors "^1.0.2"
+ json-parse-even-better-errors "^2.3.1"
loader-runner "^4.2.0"
mime-types "^2.1.27"
neo-async "^2.6.2"
@@ -25371,20 +25437,20 @@ write-pkg@^4.0.0:
type-fest "^0.4.1"
write-json-file "^3.2.0"
-ws@8.5.0, ws@^8.4.2:
- version "8.5.0"
- resolved "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
- integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==
+ws@8.6.0, ws@^8.0.0, ws@^8.3.0:
+ version "8.6.0"
+ resolved "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23"
+ integrity sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==
ws@^7.3.1, ws@^7.4.6:
version "7.5.7"
resolved "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67"
integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==
-ws@^8.0.0, ws@^8.3.0:
- version "8.6.0"
- resolved "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23"
- integrity sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==
+ws@^8.4.2:
+ version "8.5.0"
+ resolved "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
+ integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==
ws@~7.4.2:
version "7.4.6"
@@ -25791,9 +25857,9 @@ zip-stream@^4.1.0:
readable-stream "^3.6.0"
zod@^3.11.6, zod@^3.9.5:
- version "3.15.1"
- resolved "https://registry.npmjs.org/zod/-/zod-3.15.1.tgz#9e404cd8002ccffb03baa94cff2e1638ed49d82f"
- integrity sha512-WAdjcoOxa4S9oc/u7fTbC3CC7uVqptLLU0LKqS8RDBOrCXp2t5avM8BUfgNVZJymGWAx6SEUYxWPPoYuQ5rgwQ==
+ version "3.16.0"
+ resolved "https://registry.npmjs.org/zod/-/zod-3.16.0.tgz#edfdbf77fcc9a5af13a2630a44bdda5b90e759b7"
+ integrity sha512-szrIkryADbTM+xBt2a1KoS2CJQXec4f9xG78bj5MJeEH/XqmmHpnO+fG3IE115AKBJak+2HrbxLZkc9mhdbDKA==
zustand@3.6.9:
version "3.6.9"