Compare commits
22 Commits
@backstage
...
main
Author | SHA1 | Date |
---|---|---|
|
6a65a4cea3 | |
|
c2261cf6ab | |
|
727c25df51 | |
|
ff785e582c | |
|
dcffece576 | |
|
ceeadd1e1a | |
|
7bafbd4fc8 | |
|
0493206694 | |
|
ca3c813046 | |
|
8367480d11 | |
|
6e6b88413f | |
|
4815dfd531 | |
|
c2b33a16aa | |
|
56382c80de | |
|
7043b8bbb6 | |
|
8460759070 | |
|
02546adb32 | |
|
c4f95b6e1e | |
|
fe6d855d73 | |
|
e46f2a55c2 | |
|
46e1cefbac | |
|
deb952366a |
|
@ -33,6 +33,7 @@ body:
|
|||
- bazaar
|
||||
- bitrise
|
||||
- blackduck
|
||||
- bookmarks
|
||||
- cicd-statistics
|
||||
- cloudbuild
|
||||
- code-climate
|
||||
|
|
|
@ -34,6 +34,7 @@ body:
|
|||
- bazaar
|
||||
- bitrise
|
||||
- blackduck
|
||||
- bookmarks
|
||||
- cicd-statistics
|
||||
- cloudbuild
|
||||
- code-climate
|
||||
|
|
|
@ -24,6 +24,7 @@ attributes:
|
|||
- bazaar
|
||||
- bitrise
|
||||
- blackduck
|
||||
- bookmarks
|
||||
- cicd-statistics
|
||||
- cloudbuild
|
||||
- code-climate
|
||||
|
|
|
@ -58,6 +58,9 @@ workspace/bitrise:
|
|||
workspace/blackduck:
|
||||
- "Workspace\\s*blackduck"
|
||||
|
||||
workspace/bookmarks:
|
||||
- "Workspace\\s*bookmarks"
|
||||
|
||||
workspace/cicd-statistics:
|
||||
- "Workspace\\s*cicd-statistics"
|
||||
|
||||
|
|
|
@ -78,6 +78,13 @@ jobs:
|
|||
- name: 'Set release name'
|
||||
id: set_release_name
|
||||
run: node scripts/ci/set-release-name.js ${{ matrix.workspace }} ${{ inputs.release_line || 'main' }}
|
||||
- name: 'Check current and release versions'
|
||||
id: check
|
||||
run: |
|
||||
if [[ "${{ steps.set_release_name.outputs.release_version }}" == "${{ steps.set_release_name.outputs.current_version }}" ]]; then
|
||||
echo "Backstage release version and current workspace version are the same, skipping version bump"
|
||||
exit 1 # Non-zero exit code fails the step and job
|
||||
fi
|
||||
- name: 'Configure git'
|
||||
run: |
|
||||
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||
|
@ -97,7 +104,7 @@ jobs:
|
|||
YARN_ENABLE_IMMUTABLE_INSTALLS: false
|
||||
- name: Run dedupe
|
||||
working-directory: ./workspaces/${{ matrix.workspace }}
|
||||
run: yarn dedupe
|
||||
run: yarn dedupe
|
||||
- name: 'Check for changes'
|
||||
id: check_for_changes
|
||||
run: |
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,4 @@
|
|||
plugins:
|
||||
- checksum: 8af7b3f2d7d19cacc7a3712f871efcb6208ba283a1f532260b0cba80c2cb66ed772b207b5ba41b8c5d64dd8d5e0c0e15bbb445bd14afac491712965211ba027c
|
||||
path: .yarn/plugins/@yarnpkg/plugin-backstage.cjs
|
||||
spec: 'https://versions.backstage.io/v1/releases/1.42.3/yarn-plugin'
|
|
@ -1,6 +1,7 @@
|
|||
app:
|
||||
title: Azure DevOps Example App
|
||||
baseUrl: http://localhost:3000
|
||||
packages: all
|
||||
|
||||
organization:
|
||||
name: Azure DevOps Example
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
{
|
||||
"version": "1.41.1"
|
||||
"version": "1.42.3"
|
||||
}
|
||||
|
|
|
@ -36,9 +36,9 @@
|
|||
"directory": "workspaces/azure-devops"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.33.1",
|
||||
"@backstage/e2e-test-utils": "^0.1.1",
|
||||
"@backstage/repo-tools": "^0.15.0",
|
||||
"@backstage/cli": "backstage:^",
|
||||
"@backstage/e2e-test-utils": "backstage:^",
|
||||
"@backstage/repo-tools": "backstage:^",
|
||||
"@changesets/cli": "^2.27.1",
|
||||
"knip": "^5.27.4",
|
||||
"node-gyp": "^10.0.0",
|
||||
|
@ -58,9 +58,5 @@
|
|||
"*.{json,md}": [
|
||||
"prettier --write"
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage-community/plugin-azure-devops": "workspace:^",
|
||||
"@backstage-community/plugin-azure-devops-backend": "workspace:^"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,29 +20,29 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@backstage-community/plugin-azure-devops": "workspace:^",
|
||||
"@backstage/app-defaults": "^1.6.4",
|
||||
"@backstage/catalog-model": "^1.7.5",
|
||||
"@backstage/cli": "^0.33.1",
|
||||
"@backstage/core-app-api": "^1.18.0",
|
||||
"@backstage/core-components": "^0.17.4",
|
||||
"@backstage/core-plugin-api": "^1.10.9",
|
||||
"@backstage/integration-react": "^1.2.9",
|
||||
"@backstage/plugin-api-docs": "^0.12.9",
|
||||
"@backstage/plugin-catalog": "^1.31.1",
|
||||
"@backstage/plugin-catalog-common": "^1.1.5",
|
||||
"@backstage/plugin-catalog-graph": "^0.4.21",
|
||||
"@backstage/plugin-catalog-import": "^0.13.3",
|
||||
"@backstage/plugin-catalog-react": "^1.19.1",
|
||||
"@backstage/plugin-org": "^0.6.41",
|
||||
"@backstage/plugin-permission-react": "^0.4.36",
|
||||
"@backstage/plugin-scaffolder": "^1.33.0",
|
||||
"@backstage/plugin-search": "^1.4.28",
|
||||
"@backstage/plugin-search-react": "^1.9.2",
|
||||
"@backstage/plugin-techdocs": "^1.13.2",
|
||||
"@backstage/plugin-techdocs-module-addons-contrib": "^1.1.26",
|
||||
"@backstage/plugin-techdocs-react": "^1.3.1",
|
||||
"@backstage/plugin-user-settings": "^0.8.24",
|
||||
"@backstage/theme": "^0.6.7",
|
||||
"@backstage/app-defaults": "backstage:^",
|
||||
"@backstage/catalog-model": "backstage:^",
|
||||
"@backstage/cli": "backstage:^",
|
||||
"@backstage/core-app-api": "backstage:^",
|
||||
"@backstage/core-components": "backstage:^",
|
||||
"@backstage/core-plugin-api": "backstage:^",
|
||||
"@backstage/integration-react": "backstage:^",
|
||||
"@backstage/plugin-api-docs": "backstage:^",
|
||||
"@backstage/plugin-catalog": "backstage:^",
|
||||
"@backstage/plugin-catalog-common": "backstage:^",
|
||||
"@backstage/plugin-catalog-graph": "backstage:^",
|
||||
"@backstage/plugin-catalog-import": "backstage:^",
|
||||
"@backstage/plugin-catalog-react": "backstage:^",
|
||||
"@backstage/plugin-org": "backstage:^",
|
||||
"@backstage/plugin-permission-react": "backstage:^",
|
||||
"@backstage/plugin-scaffolder": "backstage:^",
|
||||
"@backstage/plugin-search": "backstage:^",
|
||||
"@backstage/plugin-search-react": "backstage:^",
|
||||
"@backstage/plugin-techdocs": "backstage:^",
|
||||
"@backstage/plugin-techdocs-module-addons-contrib": "backstage:^",
|
||||
"@backstage/plugin-techdocs-react": "backstage:^",
|
||||
"@backstage/plugin-user-settings": "backstage:^",
|
||||
"@backstage/theme": "backstage:^",
|
||||
"@material-ui/core": "^4.12.2",
|
||||
"@material-ui/icons": "^4.9.1",
|
||||
"react": "^18.0.2",
|
||||
|
@ -52,7 +52,7 @@
|
|||
"react-use": "^17.2.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/test-utils": "^1.7.10",
|
||||
"@backstage/test-utils": "backstage:^",
|
||||
"@playwright/test": "^1.32.3",
|
||||
"@testing-library/dom": "^9.0.0",
|
||||
"@testing-library/jest-dom": "^6.0.0",
|
||||
|
|
|
@ -25,26 +25,26 @@
|
|||
"@backstage-community/plugin-catalog-backend-module-azure-devops-annotator-processor": "workspace:^",
|
||||
"@backstage-community/plugin-scaffolder-backend-module-azure-devops": "workspace:^",
|
||||
"@backstage-community/plugin-scaffolder-backend-module-dotnet": "workspace:^",
|
||||
"@backstage/backend-defaults": "^0.11.1",
|
||||
"@backstage/config": "^1.3.3",
|
||||
"@backstage/plugin-app-backend": "^0.5.4",
|
||||
"@backstage/plugin-auth-backend": "^0.25.2",
|
||||
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.10",
|
||||
"@backstage/plugin-auth-node": "^0.6.5",
|
||||
"@backstage/plugin-catalog-backend": "^3.0.0",
|
||||
"@backstage/plugin-catalog-backend-module-logs": "^0.1.12",
|
||||
"@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "^0.2.10",
|
||||
"@backstage/plugin-permission-backend": "^0.7.2",
|
||||
"@backstage/plugin-permission-backend-module-allow-all-policy": "^0.2.10",
|
||||
"@backstage/plugin-permission-common": "^0.9.1",
|
||||
"@backstage/plugin-permission-node": "^0.10.2",
|
||||
"@backstage/plugin-proxy-backend": "^0.6.4",
|
||||
"@backstage/plugin-scaffolder-backend": "^2.1.0",
|
||||
"@backstage/plugin-search-backend": "^2.0.4",
|
||||
"@backstage/plugin-search-backend-module-catalog": "^0.3.6",
|
||||
"@backstage/plugin-search-backend-module-techdocs": "^0.4.4",
|
||||
"@backstage/plugin-search-backend-node": "^1.3.13",
|
||||
"@backstage/plugin-techdocs-backend": "^2.0.4",
|
||||
"@backstage/backend-defaults": "backstage:^",
|
||||
"@backstage/config": "backstage:^",
|
||||
"@backstage/plugin-app-backend": "backstage:^",
|
||||
"@backstage/plugin-auth-backend": "backstage:^",
|
||||
"@backstage/plugin-auth-backend-module-guest-provider": "backstage:^",
|
||||
"@backstage/plugin-auth-node": "backstage:^",
|
||||
"@backstage/plugin-catalog-backend": "backstage:^",
|
||||
"@backstage/plugin-catalog-backend-module-logs": "backstage:^",
|
||||
"@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "backstage:^",
|
||||
"@backstage/plugin-permission-backend": "backstage:^",
|
||||
"@backstage/plugin-permission-backend-module-allow-all-policy": "backstage:^",
|
||||
"@backstage/plugin-permission-common": "backstage:^",
|
||||
"@backstage/plugin-permission-node": "backstage:^",
|
||||
"@backstage/plugin-proxy-backend": "backstage:^",
|
||||
"@backstage/plugin-scaffolder-backend": "backstage:^",
|
||||
"@backstage/plugin-search-backend": "backstage:^",
|
||||
"@backstage/plugin-search-backend-module-catalog": "backstage:^",
|
||||
"@backstage/plugin-search-backend-module-techdocs": "backstage:^",
|
||||
"@backstage/plugin-search-backend-node": "backstage:^",
|
||||
"@backstage/plugin-techdocs-backend": "backstage:^",
|
||||
"app": "link:../app",
|
||||
"better-sqlite3": "^9.0.0",
|
||||
"dockerode": "^3.3.1",
|
||||
|
@ -53,7 +53,7 @@
|
|||
"winston": "^3.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.33.1"
|
||||
"@backstage/cli": "backstage:^"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
|
|
@ -1,5 +1,16 @@
|
|||
# @backstage-community/plugin-azure-devops-backend
|
||||
|
||||
## 0.20.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 8367480: Backstage version bump to v1.42.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8367480]
|
||||
- @backstage-community/plugin-azure-devops-common@0.14.0
|
||||
|
||||
## 0.19.0
|
||||
|
||||
### Minor Changes
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@backstage-community/plugin-azure-devops-backend",
|
||||
"version": "0.19.0",
|
||||
"version": "0.20.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
|
@ -35,17 +35,17 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@backstage-community/plugin-azure-devops-common": "workspace:^",
|
||||
"@backstage/backend-defaults": "^0.11.1",
|
||||
"@backstage/backend-plugin-api": "^1.4.1",
|
||||
"@backstage/catalog-model": "^1.7.5",
|
||||
"@backstage/config": "^1.3.3",
|
||||
"@backstage/errors": "^1.2.7",
|
||||
"@backstage/integration": "^1.17.1",
|
||||
"@backstage/plugin-auth-node": "^0.6.5",
|
||||
"@backstage/plugin-catalog-common": "^1.1.5",
|
||||
"@backstage/plugin-catalog-node": "^1.17.2",
|
||||
"@backstage/plugin-permission-common": "^0.9.1",
|
||||
"@backstage/plugin-permission-node": "^0.10.2",
|
||||
"@backstage/backend-defaults": "backstage:^",
|
||||
"@backstage/backend-plugin-api": "backstage:^",
|
||||
"@backstage/catalog-model": "backstage:^",
|
||||
"@backstage/config": "backstage:^",
|
||||
"@backstage/errors": "backstage:^",
|
||||
"@backstage/integration": "backstage:^",
|
||||
"@backstage/plugin-auth-node": "backstage:^",
|
||||
"@backstage/plugin-catalog-common": "backstage:^",
|
||||
"@backstage/plugin-catalog-node": "backstage:^",
|
||||
"@backstage/plugin-permission-common": "backstage:^",
|
||||
"@backstage/plugin-permission-node": "backstage:^",
|
||||
"@types/express": "^4.17.6",
|
||||
"azure-devops-node-api": "^13.0.0",
|
||||
"express": "^4.17.1",
|
||||
|
@ -54,8 +54,8 @@
|
|||
"p-limit": "^3.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "^1.7.0",
|
||||
"@backstage/cli": "^0.33.1",
|
||||
"@backstage/backend-test-utils": "backstage:^",
|
||||
"@backstage/cli": "backstage:^",
|
||||
"@types/lodash": "^4.14.151",
|
||||
"@types/mime-types": "^2.1.0",
|
||||
"@types/supertest": "^6.0.0",
|
||||
|
|
|
@ -1,5 +1,11 @@
|
|||
# @backstage-community/plugin-azure-devops-common
|
||||
|
||||
## 0.14.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 8367480: Backstage version bump to v1.42.3
|
||||
|
||||
## 0.13.0
|
||||
|
||||
### Minor Changes
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@backstage-community/plugin-azure-devops-common",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.0",
|
||||
"backstage": {
|
||||
"role": "common-library",
|
||||
"pluginId": "azure-devops",
|
||||
|
@ -41,11 +41,11 @@
|
|||
"test": "backstage-cli package test"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/catalog-model": "^1.7.5",
|
||||
"@backstage/plugin-catalog-common": "^1.1.5",
|
||||
"@backstage/plugin-permission-common": "^0.9.1"
|
||||
"@backstage/catalog-model": "backstage:^",
|
||||
"@backstage/plugin-catalog-common": "backstage:^",
|
||||
"@backstage/plugin-permission-common": "backstage:^"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.33.1"
|
||||
"@backstage/cli": "backstage:^"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,16 @@
|
|||
# @backstage-community/plugin-azure-devops
|
||||
|
||||
## 0.19.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 8367480: Backstage version bump to v1.42.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8367480]
|
||||
- @backstage-community/plugin-azure-devops-common@0.14.0
|
||||
|
||||
## 0.18.0
|
||||
|
||||
### Minor Changes
|
||||
|
|
|
@ -412,3 +412,43 @@ async handle(
|
|||
};
|
||||
}
|
||||
```
|
||||
|
||||
## New Frontend System (Alpha)
|
||||
|
||||
The Azure DevOps plugin currently support the New Frontend System via an `/alpha` export, here's how to use it:
|
||||
|
||||
### Use new frontend system
|
||||
|
||||
1. Install the frontend plugin:
|
||||
|
||||
```bash
|
||||
# From your Backstage root directory
|
||||
yarn --cwd packages/app add @backstage-community/plugin-azure-devops
|
||||
```
|
||||
|
||||
2. Enable the plugin in your `packages/app(-next)/src/App.tsx`:
|
||||
|
||||
After all other imports:
|
||||
|
||||
```tsx
|
||||
import azureDevOpsPlugin from '@backstage-community/plugin-azure-devops';
|
||||
```
|
||||
|
||||
```tsx
|
||||
export const app = createApp({
|
||||
features: [
|
||||
catalogPlugin,
|
||||
catalogImportPlugin,
|
||||
userSettingsPlugin,
|
||||
azureDevOpsPlugin,
|
||||
// ...
|
||||
],
|
||||
});
|
||||
```
|
||||
|
||||
Alternatively you can simply use feature discover and skip the above step by adding the following yo your `app-config.yaml` file:
|
||||
|
||||
```yaml
|
||||
app:
|
||||
packages: all
|
||||
```
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@backstage-community/plugin-azure-devops",
|
||||
"version": "0.18.0",
|
||||
"version": "0.19.0",
|
||||
"backstage": {
|
||||
"role": "frontend-plugin",
|
||||
"pluginId": "azure-devops",
|
||||
|
@ -52,14 +52,14 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@backstage-community/plugin-azure-devops-common": "workspace:^",
|
||||
"@backstage/catalog-model": "^1.7.5",
|
||||
"@backstage/core-compat-api": "^0.4.4",
|
||||
"@backstage/core-components": "^0.17.4",
|
||||
"@backstage/core-plugin-api": "^1.10.9",
|
||||
"@backstage/errors": "^1.2.7",
|
||||
"@backstage/frontend-plugin-api": "^0.10.4",
|
||||
"@backstage/plugin-catalog-react": "^1.19.1",
|
||||
"@backstage/plugin-permission-react": "^0.4.36",
|
||||
"@backstage/catalog-model": "backstage:^",
|
||||
"@backstage/core-compat-api": "backstage:^",
|
||||
"@backstage/core-components": "backstage:^",
|
||||
"@backstage/core-plugin-api": "backstage:^",
|
||||
"@backstage/errors": "backstage:^",
|
||||
"@backstage/frontend-plugin-api": "backstage:^",
|
||||
"@backstage/plugin-catalog-react": "backstage:^",
|
||||
"@backstage/plugin-permission-react": "backstage:^",
|
||||
"@material-ui/core": "^4.12.2",
|
||||
"@material-ui/icons": "^4.9.1",
|
||||
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
|
||||
|
@ -68,9 +68,9 @@
|
|||
"react-use": "^17.2.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.33.1",
|
||||
"@backstage/dev-utils": "^1.1.12",
|
||||
"@backstage/test-utils": "^1.7.10",
|
||||
"@backstage/cli": "backstage:^",
|
||||
"@backstage/dev-utils": "backstage:^",
|
||||
"@backstage/test-utils": "backstage:^",
|
||||
"@testing-library/dom": "^10.0.0",
|
||||
"@testing-library/jest-dom": "^6.0.0",
|
||||
"@testing-library/react": "^15.0.0",
|
||||
|
|
|
@ -7,17 +7,19 @@
|
|||
|
||||
import { AnyApiFactory } from '@backstage/core-plugin-api';
|
||||
import { AnyRouteRefParams } from '@backstage/frontend-plugin-api';
|
||||
import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api';
|
||||
import { ApiFactory } from '@backstage/core-plugin-api';
|
||||
import { Entity } from '@backstage/catalog-model';
|
||||
import { EntityCardType } from '@backstage/plugin-catalog-react/alpha';
|
||||
import { EntityPredicate } from '@backstage/plugin-catalog-react/alpha';
|
||||
import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api';
|
||||
import { ExtensionDataRef } from '@backstage/frontend-plugin-api';
|
||||
import { ExtensionDefinition } from '@backstage/frontend-plugin-api';
|
||||
import { FrontendPlugin } from '@backstage/frontend-plugin-api';
|
||||
import { JSX as JSX_2 } from 'react';
|
||||
import { OverridableFrontendPlugin } from '@backstage/frontend-plugin-api';
|
||||
import { RouteRef } from '@backstage/frontend-plugin-api';
|
||||
|
||||
// @alpha (undocumented)
|
||||
const _default: FrontendPlugin<
|
||||
const _default: OverridableFrontendPlugin<
|
||||
{},
|
||||
{},
|
||||
{
|
||||
|
@ -26,15 +28,17 @@ const _default: FrontendPlugin<
|
|||
name: undefined;
|
||||
config: {};
|
||||
configInput: {};
|
||||
output: ConfigurableExtensionDataRef<
|
||||
AnyApiFactory,
|
||||
'core.api.factory',
|
||||
{}
|
||||
>;
|
||||
output: ExtensionDataRef<AnyApiFactory, 'core.api.factory', {}>;
|
||||
inputs: {};
|
||||
params: {
|
||||
factory: AnyApiFactory;
|
||||
};
|
||||
params: <
|
||||
TApi,
|
||||
TImpl extends TApi,
|
||||
TDeps extends {
|
||||
[x: string]: unknown;
|
||||
},
|
||||
>(
|
||||
params: ApiFactory<TApi, TImpl, TDeps>,
|
||||
) => ExtensionBlueprintParams<AnyApiFactory>;
|
||||
}>;
|
||||
'entity-card:azure-devops/readme': ExtensionDefinition<{
|
||||
kind: 'entity-card';
|
||||
|
@ -48,22 +52,22 @@ const _default: FrontendPlugin<
|
|||
type?: 'content' | 'summary' | 'info' | undefined;
|
||||
};
|
||||
output:
|
||||
| ConfigurableExtensionDataRef<JSX_2.Element, 'core.reactElement', {}>
|
||||
| ConfigurableExtensionDataRef<
|
||||
| ExtensionDataRef<JSX_2.Element, 'core.reactElement', {}>
|
||||
| ExtensionDataRef<
|
||||
(entity: Entity) => boolean,
|
||||
'catalog.entity-filter-function',
|
||||
{
|
||||
optional: true;
|
||||
}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
| ExtensionDataRef<
|
||||
string,
|
||||
'catalog.entity-filter-expression',
|
||||
{
|
||||
optional: true;
|
||||
}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
| ExtensionDataRef<
|
||||
EntityCardType,
|
||||
'catalog.entity-card-type',
|
||||
{
|
||||
|
@ -93,35 +97,31 @@ const _default: FrontendPlugin<
|
|||
group?: string | false | undefined;
|
||||
};
|
||||
output:
|
||||
| ConfigurableExtensionDataRef<JSX_2.Element, 'core.reactElement', {}>
|
||||
| ConfigurableExtensionDataRef<string, 'core.routing.path', {}>
|
||||
| ConfigurableExtensionDataRef<
|
||||
| ExtensionDataRef<JSX_2.Element, 'core.reactElement', {}>
|
||||
| ExtensionDataRef<string, 'core.routing.path', {}>
|
||||
| ExtensionDataRef<
|
||||
RouteRef<AnyRouteRefParams>,
|
||||
'core.routing.ref',
|
||||
{
|
||||
optional: true;
|
||||
}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
string,
|
||||
'catalog.entity-content-title',
|
||||
{}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
| ExtensionDataRef<
|
||||
(entity: Entity) => boolean,
|
||||
'catalog.entity-filter-function',
|
||||
{
|
||||
optional: true;
|
||||
}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
| ExtensionDataRef<
|
||||
string,
|
||||
'catalog.entity-filter-expression',
|
||||
{
|
||||
optional: true;
|
||||
}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
| ExtensionDataRef<string, 'catalog.entity-content-title', {}>
|
||||
| ExtensionDataRef<
|
||||
string,
|
||||
'catalog.entity-content-group',
|
||||
{
|
||||
|
@ -130,10 +130,12 @@ const _default: FrontendPlugin<
|
|||
>;
|
||||
inputs: {};
|
||||
params: {
|
||||
loader: () => Promise<JSX.Element>;
|
||||
defaultPath: string;
|
||||
defaultTitle: string;
|
||||
defaultGroup?:
|
||||
defaultPath?: [Error: "Use the 'path' param instead"] | undefined;
|
||||
path: string;
|
||||
defaultTitle?: [Error: "Use the 'title' param instead"] | undefined;
|
||||
title: string;
|
||||
defaultGroup?: [Error: "Use the 'group' param instead"] | undefined;
|
||||
group?:
|
||||
| (string & {})
|
||||
| 'development'
|
||||
| 'deployment'
|
||||
|
@ -142,6 +144,7 @@ const _default: FrontendPlugin<
|
|||
| 'operation'
|
||||
| 'observability'
|
||||
| undefined;
|
||||
loader: () => Promise<JSX.Element>;
|
||||
routeRef?: RouteRef<AnyRouteRefParams> | undefined;
|
||||
filter?: EntityPredicate | ((entity: Entity) => boolean) | undefined;
|
||||
};
|
||||
|
@ -162,35 +165,31 @@ const _default: FrontendPlugin<
|
|||
group?: string | false | undefined;
|
||||
};
|
||||
output:
|
||||
| ConfigurableExtensionDataRef<JSX_2.Element, 'core.reactElement', {}>
|
||||
| ConfigurableExtensionDataRef<string, 'core.routing.path', {}>
|
||||
| ConfigurableExtensionDataRef<
|
||||
| ExtensionDataRef<JSX_2.Element, 'core.reactElement', {}>
|
||||
| ExtensionDataRef<string, 'core.routing.path', {}>
|
||||
| ExtensionDataRef<
|
||||
RouteRef<AnyRouteRefParams>,
|
||||
'core.routing.ref',
|
||||
{
|
||||
optional: true;
|
||||
}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
string,
|
||||
'catalog.entity-content-title',
|
||||
{}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
| ExtensionDataRef<
|
||||
(entity: Entity) => boolean,
|
||||
'catalog.entity-filter-function',
|
||||
{
|
||||
optional: true;
|
||||
}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
| ExtensionDataRef<
|
||||
string,
|
||||
'catalog.entity-filter-expression',
|
||||
{
|
||||
optional: true;
|
||||
}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
| ExtensionDataRef<string, 'catalog.entity-content-title', {}>
|
||||
| ExtensionDataRef<
|
||||
string,
|
||||
'catalog.entity-content-group',
|
||||
{
|
||||
|
@ -199,10 +198,12 @@ const _default: FrontendPlugin<
|
|||
>;
|
||||
inputs: {};
|
||||
params: {
|
||||
loader: () => Promise<JSX.Element>;
|
||||
defaultPath: string;
|
||||
defaultTitle: string;
|
||||
defaultGroup?:
|
||||
defaultPath?: [Error: "Use the 'path' param instead"] | undefined;
|
||||
path: string;
|
||||
defaultTitle?: [Error: "Use the 'title' param instead"] | undefined;
|
||||
title: string;
|
||||
defaultGroup?: [Error: "Use the 'group' param instead"] | undefined;
|
||||
group?:
|
||||
| (string & {})
|
||||
| 'development'
|
||||
| 'deployment'
|
||||
|
@ -211,6 +212,7 @@ const _default: FrontendPlugin<
|
|||
| 'operation'
|
||||
| 'observability'
|
||||
| undefined;
|
||||
loader: () => Promise<JSX.Element>;
|
||||
routeRef?: RouteRef<AnyRouteRefParams> | undefined;
|
||||
filter?: EntityPredicate | ((entity: Entity) => boolean) | undefined;
|
||||
};
|
||||
|
@ -231,35 +233,31 @@ const _default: FrontendPlugin<
|
|||
group?: string | false | undefined;
|
||||
};
|
||||
output:
|
||||
| ConfigurableExtensionDataRef<JSX_2.Element, 'core.reactElement', {}>
|
||||
| ConfigurableExtensionDataRef<string, 'core.routing.path', {}>
|
||||
| ConfigurableExtensionDataRef<
|
||||
| ExtensionDataRef<JSX_2.Element, 'core.reactElement', {}>
|
||||
| ExtensionDataRef<string, 'core.routing.path', {}>
|
||||
| ExtensionDataRef<
|
||||
RouteRef<AnyRouteRefParams>,
|
||||
'core.routing.ref',
|
||||
{
|
||||
optional: true;
|
||||
}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
string,
|
||||
'catalog.entity-content-title',
|
||||
{}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
| ExtensionDataRef<
|
||||
(entity: Entity) => boolean,
|
||||
'catalog.entity-filter-function',
|
||||
{
|
||||
optional: true;
|
||||
}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
| ExtensionDataRef<
|
||||
string,
|
||||
'catalog.entity-filter-expression',
|
||||
{
|
||||
optional: true;
|
||||
}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
| ExtensionDataRef<string, 'catalog.entity-content-title', {}>
|
||||
| ExtensionDataRef<
|
||||
string,
|
||||
'catalog.entity-content-group',
|
||||
{
|
||||
|
@ -268,10 +266,12 @@ const _default: FrontendPlugin<
|
|||
>;
|
||||
inputs: {};
|
||||
params: {
|
||||
loader: () => Promise<JSX.Element>;
|
||||
defaultPath: string;
|
||||
defaultTitle: string;
|
||||
defaultGroup?:
|
||||
defaultPath?: [Error: "Use the 'path' param instead"] | undefined;
|
||||
path: string;
|
||||
defaultTitle?: [Error: "Use the 'title' param instead"] | undefined;
|
||||
title: string;
|
||||
defaultGroup?: [Error: "Use the 'group' param instead"] | undefined;
|
||||
group?:
|
||||
| (string & {})
|
||||
| 'development'
|
||||
| 'deployment'
|
||||
|
@ -280,6 +280,7 @@ const _default: FrontendPlugin<
|
|||
| 'operation'
|
||||
| 'observability'
|
||||
| undefined;
|
||||
loader: () => Promise<JSX.Element>;
|
||||
routeRef?: RouteRef<AnyRouteRefParams> | undefined;
|
||||
filter?: EntityPredicate | ((entity: Entity) => boolean) | undefined;
|
||||
};
|
||||
|
@ -294,9 +295,9 @@ const _default: FrontendPlugin<
|
|||
path?: string | undefined;
|
||||
};
|
||||
output:
|
||||
| ConfigurableExtensionDataRef<JSX_2.Element, 'core.reactElement', {}>
|
||||
| ConfigurableExtensionDataRef<string, 'core.routing.path', {}>
|
||||
| ConfigurableExtensionDataRef<
|
||||
| ExtensionDataRef<JSX_2.Element, 'core.reactElement', {}>
|
||||
| ExtensionDataRef<string, 'core.routing.path', {}>
|
||||
| ExtensionDataRef<
|
||||
RouteRef<AnyRouteRefParams>,
|
||||
'core.routing.ref',
|
||||
{
|
||||
|
@ -305,7 +306,8 @@ const _default: FrontendPlugin<
|
|||
>;
|
||||
inputs: {};
|
||||
params: {
|
||||
defaultPath: string;
|
||||
defaultPath?: [Error: "Use the 'path' param instead"] | undefined;
|
||||
path: string;
|
||||
loader: () => Promise<JSX.Element>;
|
||||
routeRef?: RouteRef<AnyRouteRefParams> | undefined;
|
||||
};
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
|
||||
import {
|
||||
ApiBlueprint,
|
||||
createApiFactory,
|
||||
PageBlueprint,
|
||||
createFrontendPlugin,
|
||||
discoveryApiRef,
|
||||
|
@ -36,8 +35,8 @@ import { isAzureDevOpsAvailable, isAzurePipelinesAvailable } from '../plugin';
|
|||
|
||||
/** @alpha */
|
||||
export const azureDevOpsApi = ApiBlueprint.make({
|
||||
params: {
|
||||
factory: createApiFactory({
|
||||
params: defineParams =>
|
||||
defineParams({
|
||||
api: azureDevOpsApiRef,
|
||||
deps: {
|
||||
discoveryApi: discoveryApiRef,
|
||||
|
@ -46,13 +45,12 @@ export const azureDevOpsApi = ApiBlueprint.make({
|
|||
factory: ({ discoveryApi, fetchApi }) =>
|
||||
new AzureDevOpsClient({ discoveryApi, fetchApi }),
|
||||
}),
|
||||
},
|
||||
});
|
||||
|
||||
/** @alpha */
|
||||
export const azureDevOpsPullRequestPage = PageBlueprint.make({
|
||||
params: {
|
||||
defaultPath: '/azure-pull-requests',
|
||||
path: '/azure-pull-requests',
|
||||
routeRef: convertLegacyRouteRef(azurePullRequestDashboardRouteRef),
|
||||
loader: () =>
|
||||
import('../components/PullRequestsPage').then(m =>
|
||||
|
@ -65,8 +63,8 @@ export const azureDevOpsPullRequestPage = PageBlueprint.make({
|
|||
export const azureDevOpsPipelinesEntityContent = EntityContentBlueprint.make({
|
||||
name: 'pipelines',
|
||||
params: {
|
||||
defaultPath: '/pipelines',
|
||||
defaultTitle: 'Pipelines',
|
||||
path: '/pipelines',
|
||||
title: 'Pipelines',
|
||||
filter: isAzurePipelinesAvailable,
|
||||
loader: () =>
|
||||
import('../components/EntityPageAzurePipelines').then(m =>
|
||||
|
@ -79,8 +77,8 @@ export const azureDevOpsPipelinesEntityContent = EntityContentBlueprint.make({
|
|||
export const azureDevOpsGitTagsEntityContent = EntityContentBlueprint.make({
|
||||
name: 'git-tags',
|
||||
params: {
|
||||
defaultPath: '/git-tags',
|
||||
defaultTitle: 'Git Tags',
|
||||
path: '/git-tags',
|
||||
title: 'Git Tags',
|
||||
filter: isAzureDevOpsAvailable,
|
||||
loader: () =>
|
||||
import('../components/EntityPageAzureGitTags').then(m =>
|
||||
|
@ -94,8 +92,8 @@ export const azureDevOpsPullRequestsEntityContent = EntityContentBlueprint.make(
|
|||
{
|
||||
name: 'pull-requests',
|
||||
params: {
|
||||
defaultPath: '/pull-requests',
|
||||
defaultTitle: 'Pull Requests',
|
||||
path: '/pull-requests',
|
||||
title: 'Pull Requests',
|
||||
filter: isAzureDevOpsAvailable,
|
||||
loader: () =>
|
||||
import('../components/EntityPageAzurePullRequests').then(m =>
|
||||
|
|
|
@ -1,5 +1,16 @@
|
|||
# @backstage-community/plugin-catalog-backend-module-azure-devops-annotator-processor
|
||||
|
||||
## 0.11.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 8367480: Backstage version bump to v1.42.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [8367480]
|
||||
- @backstage-community/plugin-azure-devops-common@0.14.0
|
||||
|
||||
## 0.10.0
|
||||
|
||||
### Minor Changes
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@backstage-community/plugin-catalog-backend-module-azure-devops-annotator-processor",
|
||||
"description": "The azure-devops-annotator-processor backend module for the catalog plugin.",
|
||||
"version": "0.10.0",
|
||||
"version": "0.11.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
|
@ -31,17 +31,17 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@backstage-community/plugin-azure-devops-common": "workspace:^",
|
||||
"@backstage/backend-plugin-api": "^1.4.1",
|
||||
"@backstage/catalog-model": "^1.7.5",
|
||||
"@backstage/config": "^1.3.3",
|
||||
"@backstage/integration": "^1.17.1",
|
||||
"@backstage/plugin-catalog-common": "^1.1.5",
|
||||
"@backstage/plugin-catalog-node": "^1.17.2",
|
||||
"@backstage/backend-plugin-api": "backstage:^",
|
||||
"@backstage/catalog-model": "backstage:^",
|
||||
"@backstage/config": "backstage:^",
|
||||
"@backstage/integration": "backstage:^",
|
||||
"@backstage/plugin-catalog-common": "backstage:^",
|
||||
"@backstage/plugin-catalog-node": "backstage:^",
|
||||
"lodash": "^4.17.21"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "^1.7.0",
|
||||
"@backstage/cli": "^0.33.1"
|
||||
"@backstage/backend-test-utils": "backstage:^",
|
||||
"@backstage/cli": "backstage:^"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
|
|
@ -1,5 +1,11 @@
|
|||
# @backstage-community/plugin-scaffolder-backend-module-azure-devops
|
||||
|
||||
## 0.13.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 8367480: Backstage version bump to v1.42.3
|
||||
|
||||
## 0.12.0
|
||||
|
||||
### Minor Changes
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@backstage-community/plugin-scaffolder-backend-module-azure-devops",
|
||||
"description": "The azure-devops module for @backstage/plugin-scaffolder-backend",
|
||||
"version": "0.12.0",
|
||||
"version": "0.13.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
|
@ -39,17 +39,17 @@
|
|||
"postpack": "backstage-cli package postpack"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/backend-plugin-api": "^1.4.1",
|
||||
"@backstage/config": "^1.3.3",
|
||||
"@backstage/errors": "^1.2.7",
|
||||
"@backstage/integration": "^1.17.1",
|
||||
"@backstage/plugin-scaffolder-node": "^0.10.0",
|
||||
"@backstage/backend-plugin-api": "backstage:^",
|
||||
"@backstage/config": "backstage:^",
|
||||
"@backstage/errors": "backstage:^",
|
||||
"@backstage/integration": "backstage:^",
|
||||
"@backstage/plugin-scaffolder-node": "backstage:^",
|
||||
"azure-devops-node-api": "^14.1.0",
|
||||
"yaml": "^2.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.33.1",
|
||||
"@backstage/plugin-scaffolder-node-test-utils": "^0.3.1"
|
||||
"@backstage/cli": "backstage:^",
|
||||
"@backstage/plugin-scaffolder-node-test-utils": "backstage:^"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
|
|
@ -1,5 +1,11 @@
|
|||
# @backstage-community/plugin-scaffolder-backend-module-dotnet
|
||||
|
||||
## 0.6.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- 8367480: Backstage version bump to v1.42.3
|
||||
|
||||
## 0.5.0
|
||||
|
||||
### Minor Changes
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"version": "0.5.0",
|
||||
"version": "0.6.0",
|
||||
"license": "Apache-2.0",
|
||||
"name": "@backstage-community/plugin-scaffolder-backend-module-dotnet",
|
||||
"description": "The azure-devops module for @backstage/plugin-scaffolder-backend",
|
||||
|
@ -39,15 +39,15 @@
|
|||
"postpack": "backstage-cli package postpack"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/backend-plugin-api": "^1.4.1",
|
||||
"@backstage/plugin-scaffolder-node": "^0.10.0",
|
||||
"@backstage/backend-plugin-api": "backstage:^",
|
||||
"@backstage/plugin-scaffolder-node": "backstage:^",
|
||||
"fs-extra": "^11.3.0",
|
||||
"yaml": "^2.6.0",
|
||||
"zod": "^3.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.33.1",
|
||||
"@backstage/plugin-scaffolder-node-test-utils": "^0.3.1",
|
||||
"@backstage/cli": "backstage:^",
|
||||
"@backstage/plugin-scaffolder-node-test-utils": "backstage:^",
|
||||
"@types/fs-extra": "^11"
|
||||
},
|
||||
"files": [
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
'@backstage-community/plugin-azure-storage-explorer': minor
|
||||
'@backstage-community/plugin-azure-storage-explorer-backend': minor
|
||||
---
|
||||
|
||||
Backstage version bump to v1.41.1
|
|
@ -1,3 +1,3 @@
|
|||
{
|
||||
"version": "1.40.2"
|
||||
"version": "1.41.1"
|
||||
}
|
||||
|
|
|
@ -36,9 +36,9 @@
|
|||
"directory": "workspaces/azure-storage-explorer"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.33.0",
|
||||
"@backstage/cli": "^0.33.1",
|
||||
"@backstage/e2e-test-utils": "^0.1.1",
|
||||
"@backstage/repo-tools": "^0.14.0",
|
||||
"@backstage/repo-tools": "^0.15.0",
|
||||
"@changesets/cli": "^2.27.1",
|
||||
"knip": "^5.27.4",
|
||||
"node-gyp": "^9.0.0",
|
||||
|
|
|
@ -20,29 +20,29 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@backstage-community/plugin-azure-storage-explorer": "workspace:^",
|
||||
"@backstage/app-defaults": "^1.6.3",
|
||||
"@backstage/catalog-model": "^1.7.4",
|
||||
"@backstage/cli": "^0.33.0",
|
||||
"@backstage/core-app-api": "^1.17.1",
|
||||
"@backstage/core-components": "^0.17.3",
|
||||
"@backstage/core-plugin-api": "^1.10.8",
|
||||
"@backstage/integration-react": "^1.2.8",
|
||||
"@backstage/plugin-api-docs": "^0.12.8",
|
||||
"@backstage/plugin-catalog": "^1.31.0",
|
||||
"@backstage/plugin-catalog-common": "^1.1.4",
|
||||
"@backstage/plugin-catalog-graph": "^0.4.20",
|
||||
"@backstage/plugin-catalog-import": "^0.13.2",
|
||||
"@backstage/plugin-catalog-react": "^1.19.0",
|
||||
"@backstage/plugin-org": "^0.6.40",
|
||||
"@backstage/plugin-permission-react": "^0.4.35",
|
||||
"@backstage/plugin-scaffolder": "^1.32.0",
|
||||
"@backstage/plugin-search": "^1.4.27",
|
||||
"@backstage/plugin-search-react": "^1.9.1",
|
||||
"@backstage/plugin-techdocs": "^1.13.1",
|
||||
"@backstage/plugin-techdocs-module-addons-contrib": "^1.1.25",
|
||||
"@backstage/plugin-techdocs-react": "^1.3.0",
|
||||
"@backstage/plugin-user-settings": "^0.8.23",
|
||||
"@backstage/theme": "^0.6.6",
|
||||
"@backstage/app-defaults": "^1.6.4",
|
||||
"@backstage/catalog-model": "^1.7.5",
|
||||
"@backstage/cli": "^0.33.1",
|
||||
"@backstage/core-app-api": "^1.18.0",
|
||||
"@backstage/core-components": "^0.17.4",
|
||||
"@backstage/core-plugin-api": "^1.10.9",
|
||||
"@backstage/integration-react": "^1.2.9",
|
||||
"@backstage/plugin-api-docs": "^0.12.9",
|
||||
"@backstage/plugin-catalog": "^1.31.1",
|
||||
"@backstage/plugin-catalog-common": "^1.1.5",
|
||||
"@backstage/plugin-catalog-graph": "^0.4.21",
|
||||
"@backstage/plugin-catalog-import": "^0.13.3",
|
||||
"@backstage/plugin-catalog-react": "^1.19.1",
|
||||
"@backstage/plugin-org": "^0.6.41",
|
||||
"@backstage/plugin-permission-react": "^0.4.36",
|
||||
"@backstage/plugin-scaffolder": "^1.33.0",
|
||||
"@backstage/plugin-search": "^1.4.28",
|
||||
"@backstage/plugin-search-react": "^1.9.2",
|
||||
"@backstage/plugin-techdocs": "^1.13.2",
|
||||
"@backstage/plugin-techdocs-module-addons-contrib": "^1.1.26",
|
||||
"@backstage/plugin-techdocs-react": "^1.3.1",
|
||||
"@backstage/plugin-user-settings": "^0.8.24",
|
||||
"@backstage/theme": "^0.6.7",
|
||||
"@material-ui/core": "^4.12.2",
|
||||
"@material-ui/icons": "^4.9.1",
|
||||
"react": "^18.0.2",
|
||||
|
@ -51,7 +51,7 @@
|
|||
"react-router-dom": "^6.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/test-utils": "^1.7.9",
|
||||
"@backstage/test-utils": "^1.7.10",
|
||||
"@playwright/test": "^1.32.3",
|
||||
"@testing-library/dom": "^9.0.0",
|
||||
"@testing-library/jest-dom": "^6.0.0",
|
||||
|
|
|
@ -22,27 +22,27 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@backstage-community/plugin-azure-storage-explorer-backend": "workspace:^",
|
||||
"@backstage/backend-defaults": "^0.11.0",
|
||||
"@backstage/catalog-client": "^1.10.1",
|
||||
"@backstage/config": "^1.3.2",
|
||||
"@backstage/plugin-app-backend": "^0.5.3",
|
||||
"@backstage/plugin-auth-backend": "^0.25.1",
|
||||
"@backstage/plugin-auth-backend-module-github-provider": "^0.3.4",
|
||||
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.9",
|
||||
"@backstage/plugin-auth-node": "^0.6.4",
|
||||
"@backstage/plugin-catalog-backend": "^2.1.0",
|
||||
"@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "^0.2.9",
|
||||
"@backstage/plugin-permission-backend": "^0.7.1",
|
||||
"@backstage/plugin-permission-backend-module-allow-all-policy": "^0.2.9",
|
||||
"@backstage/plugin-permission-common": "^0.9.0",
|
||||
"@backstage/plugin-permission-node": "^0.10.1",
|
||||
"@backstage/plugin-proxy-backend": "^0.6.3",
|
||||
"@backstage/plugin-scaffolder-backend": "^2.0.0",
|
||||
"@backstage/plugin-search-backend": "^2.0.3",
|
||||
"@backstage/plugin-search-backend-module-catalog": "^0.3.5",
|
||||
"@backstage/plugin-search-backend-module-techdocs": "^0.4.3",
|
||||
"@backstage/plugin-search-backend-node": "^1.3.12",
|
||||
"@backstage/plugin-techdocs-backend": "^2.0.3",
|
||||
"@backstage/backend-defaults": "^0.11.1",
|
||||
"@backstage/catalog-client": "^1.10.2",
|
||||
"@backstage/config": "^1.3.3",
|
||||
"@backstage/plugin-app-backend": "^0.5.4",
|
||||
"@backstage/plugin-auth-backend": "^0.25.2",
|
||||
"@backstage/plugin-auth-backend-module-github-provider": "^0.3.5",
|
||||
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.10",
|
||||
"@backstage/plugin-auth-node": "^0.6.5",
|
||||
"@backstage/plugin-catalog-backend": "^3.0.0",
|
||||
"@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "^0.2.10",
|
||||
"@backstage/plugin-permission-backend": "^0.7.2",
|
||||
"@backstage/plugin-permission-backend-module-allow-all-policy": "^0.2.10",
|
||||
"@backstage/plugin-permission-common": "^0.9.1",
|
||||
"@backstage/plugin-permission-node": "^0.10.2",
|
||||
"@backstage/plugin-proxy-backend": "^0.6.4",
|
||||
"@backstage/plugin-scaffolder-backend": "^2.1.0",
|
||||
"@backstage/plugin-search-backend": "^2.0.4",
|
||||
"@backstage/plugin-search-backend-module-catalog": "^0.3.6",
|
||||
"@backstage/plugin-search-backend-module-techdocs": "^0.4.4",
|
||||
"@backstage/plugin-search-backend-node": "^1.3.13",
|
||||
"@backstage/plugin-techdocs-backend": "^2.0.4",
|
||||
"app": "link:../app",
|
||||
"better-sqlite3": "^9.0.0",
|
||||
"dockerode": "^3.3.1",
|
||||
|
@ -52,7 +52,7 @@
|
|||
"winston": "^3.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.33.0"
|
||||
"@backstage/cli": "^0.33.1"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
|
|
@ -40,19 +40,19 @@
|
|||
"dependencies": {
|
||||
"@azure/identity": "4.10.2",
|
||||
"@azure/storage-blob": "12.27.0",
|
||||
"@backstage/backend-defaults": "^0.11.0",
|
||||
"@backstage/backend-plugin-api": "^1.4.0",
|
||||
"@backstage/config": "^1.3.2",
|
||||
"@backstage/backend-defaults": "^0.11.1",
|
||||
"@backstage/backend-plugin-api": "^1.4.1",
|
||||
"@backstage/config": "^1.3.3",
|
||||
"@backstage/errors": "^1.2.7",
|
||||
"@types/express": "*",
|
||||
"express": "^4.17.1",
|
||||
"express-promise-router": "^4.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "^1.6.0",
|
||||
"@backstage/cli": "^0.33.0",
|
||||
"@backstage/plugin-auth-backend": "^0.25.1",
|
||||
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.9",
|
||||
"@backstage/backend-test-utils": "^1.7.0",
|
||||
"@backstage/cli": "^0.33.1",
|
||||
"@backstage/plugin-auth-backend": "^0.25.2",
|
||||
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.10",
|
||||
"@types/supertest": "^6.0.0",
|
||||
"supertest": "^7.0.0"
|
||||
},
|
||||
|
|
|
@ -39,10 +39,10 @@
|
|||
"postpack": "backstage-cli package postpack"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage/core-components": "^0.17.3",
|
||||
"@backstage/core-plugin-api": "^1.10.8",
|
||||
"@backstage/core-components": "^0.17.4",
|
||||
"@backstage/core-plugin-api": "^1.10.9",
|
||||
"@backstage/errors": "^1.2.7",
|
||||
"@backstage/theme": "^0.6.6",
|
||||
"@backstage/theme": "^0.6.7",
|
||||
"@material-ui/core": "^4.9.13",
|
||||
"@material-ui/icons": "^4.9.1",
|
||||
"@material-ui/lab": "^4.0.0-alpha.61",
|
||||
|
@ -54,10 +54,10 @@
|
|||
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.33.0",
|
||||
"@backstage/core-app-api": "^1.17.1",
|
||||
"@backstage/dev-utils": "^1.1.11",
|
||||
"@backstage/test-utils": "^1.7.9",
|
||||
"@backstage/cli": "^0.33.1",
|
||||
"@backstage/core-app-api": "^1.18.0",
|
||||
"@backstage/dev-utils": "^1.1.12",
|
||||
"@backstage/test-utils": "^1.7.10",
|
||||
"@testing-library/jest-dom": "^6.0.0",
|
||||
"@testing-library/react": "^12.1.3",
|
||||
"@testing-library/user-event": "^14.0.0",
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,11 @@
|
|||
# @backstage-community/plugin-cost-insights
|
||||
|
||||
## 0.19.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- ceeadd1: **ALPHA BREAKING** The New Frontend System `CostInsightsProjectGrowthInstructionsPage` and `CostInsightsLabelDataflowInstructionsPage` have been removed and the new frontend system support refactored to work in the same way as the current implementation.
|
||||
|
||||
## 0.18.0
|
||||
|
||||
### Minor Changes
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@backstage-community/plugin-cost-insights",
|
||||
"version": "0.18.0",
|
||||
"version": "0.19.0",
|
||||
"description": "A Backstage plugin that helps you keep track of your cloud spend",
|
||||
"backstage": {
|
||||
"role": "frontend-plugin",
|
||||
|
|
|
@ -5,10 +5,9 @@
|
|||
```ts
|
||||
/// <reference types="react" />
|
||||
|
||||
import { AnyApiFactory } from '@backstage/core-plugin-api';
|
||||
import { AnyRouteRefParams } from '@backstage/frontend-plugin-api';
|
||||
import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api';
|
||||
import { Entity } from '@backstage/catalog-model';
|
||||
import { EntityPredicate } from '@backstage/plugin-catalog-react/alpha';
|
||||
import { ExtensionDefinition } from '@backstage/frontend-plugin-api';
|
||||
import { FrontendPlugin } from '@backstage/frontend-plugin-api';
|
||||
import { IconComponent } from '@backstage/core-plugin-api';
|
||||
|
@ -19,78 +18,22 @@ import { RouteRef } from '@backstage/frontend-plugin-api';
|
|||
const _default: FrontendPlugin<
|
||||
{
|
||||
root: RouteRef<undefined>;
|
||||
growthAlerts: RouteRef<undefined>;
|
||||
unlabeledDataflowAlerts: RouteRef<undefined>;
|
||||
},
|
||||
{},
|
||||
{
|
||||
'entity-content:cost-insights/EntityCostInsightsContent': ExtensionDefinition<{
|
||||
kind: 'entity-content';
|
||||
name: 'EntityCostInsightsContent';
|
||||
config: {
|
||||
path: string | undefined;
|
||||
title: string | undefined;
|
||||
filter: EntityPredicate | undefined;
|
||||
group: string | false | undefined;
|
||||
};
|
||||
configInput: {
|
||||
filter?: EntityPredicate | undefined;
|
||||
title?: string | undefined;
|
||||
path?: string | undefined;
|
||||
group?: string | false | undefined;
|
||||
};
|
||||
output:
|
||||
| ConfigurableExtensionDataRef<JSX_2.Element, 'core.reactElement', {}>
|
||||
| ConfigurableExtensionDataRef<string, 'core.routing.path', {}>
|
||||
| ConfigurableExtensionDataRef<
|
||||
RouteRef<AnyRouteRefParams>,
|
||||
'core.routing.ref',
|
||||
{
|
||||
optional: true;
|
||||
}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
string,
|
||||
'catalog.entity-content-title',
|
||||
{}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
(entity: Entity) => boolean,
|
||||
'catalog.entity-filter-function',
|
||||
{
|
||||
optional: true;
|
||||
}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
string,
|
||||
'catalog.entity-filter-expression',
|
||||
{
|
||||
optional: true;
|
||||
}
|
||||
>
|
||||
| ConfigurableExtensionDataRef<
|
||||
string,
|
||||
'catalog.entity-content-group',
|
||||
{
|
||||
optional: true;
|
||||
}
|
||||
>;
|
||||
'api:cost-insights': ExtensionDefinition<{
|
||||
kind: 'api';
|
||||
name: undefined;
|
||||
config: {};
|
||||
configInput: {};
|
||||
output: ConfigurableExtensionDataRef<
|
||||
AnyApiFactory,
|
||||
'core.api.factory',
|
||||
{}
|
||||
>;
|
||||
inputs: {};
|
||||
params: {
|
||||
loader: () => Promise<JSX.Element>;
|
||||
defaultPath: string;
|
||||
defaultTitle: string;
|
||||
defaultGroup?:
|
||||
| (string & {})
|
||||
| 'overview'
|
||||
| 'documentation'
|
||||
| 'development'
|
||||
| 'deployment'
|
||||
| 'operation'
|
||||
| 'observability'
|
||||
| undefined;
|
||||
routeRef?: RouteRef<AnyRouteRefParams> | undefined;
|
||||
filter?: EntityPredicate | ((entity: Entity) => boolean) | undefined;
|
||||
factory: AnyApiFactory;
|
||||
};
|
||||
}>;
|
||||
'nav-item:cost-insights': ExtensionDefinition<{
|
||||
|
|
|
@ -14,34 +14,5 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { convertLegacyRouteRefs } from '@backstage/core-compat-api';
|
||||
|
||||
import {
|
||||
projectGrowthAlertRef,
|
||||
rootRouteRef,
|
||||
unlabeledDataflowAlertRef,
|
||||
} from './routes';
|
||||
import { createFrontendPlugin } from '@backstage/frontend-plugin-api';
|
||||
import {
|
||||
CostInsightsLabelDataflowInstructionsPage,
|
||||
CostInsightsNavItem,
|
||||
CostInsightsPage,
|
||||
CostInsightsProjectGrowthInstructionsPage,
|
||||
EntityCostInsightsContent,
|
||||
} from './alpha/plugin';
|
||||
|
||||
export default createFrontendPlugin({
|
||||
pluginId: 'cost-insights',
|
||||
extensions: [
|
||||
CostInsightsPage,
|
||||
CostInsightsProjectGrowthInstructionsPage,
|
||||
CostInsightsLabelDataflowInstructionsPage,
|
||||
EntityCostInsightsContent,
|
||||
CostInsightsNavItem,
|
||||
],
|
||||
routes: convertLegacyRouteRefs({
|
||||
root: rootRouteRef,
|
||||
growthAlerts: projectGrowthAlertRef,
|
||||
unlabeledDataflowAlerts: unlabeledDataflowAlertRef,
|
||||
}),
|
||||
});
|
||||
export * from './alpha/index';
|
||||
export { default } from './alpha/index';
|
||||
|
|
|
@ -14,4 +14,4 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
export * from './plugin';
|
||||
export { default } from './plugin';
|
||||
|
|
|
@ -17,18 +17,31 @@
|
|||
import {
|
||||
PageBlueprint,
|
||||
NavItemBlueprint,
|
||||
createFrontendPlugin,
|
||||
ApiBlueprint,
|
||||
createApiFactory,
|
||||
} from '@backstage/frontend-plugin-api';
|
||||
import {
|
||||
compatWrapper,
|
||||
convertLegacyRouteRef,
|
||||
convertLegacyRouteRefs,
|
||||
} from '@backstage/core-compat-api';
|
||||
import { EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';
|
||||
import MoneyIcon from '@material-ui/icons/MonetizationOn';
|
||||
import {
|
||||
projectGrowthAlertRef,
|
||||
rootRouteRef,
|
||||
unlabeledDataflowAlertRef,
|
||||
} from '../routes';
|
||||
import { rootRouteRef } from '../routes';
|
||||
import { costInsightsApiRef } from '../api';
|
||||
import { ExampleCostInsightsClient } from '../example';
|
||||
|
||||
/** @alpha */
|
||||
export const CostInsightsApi = ApiBlueprint.make({
|
||||
params: {
|
||||
factory: createApiFactory({
|
||||
api: costInsightsApiRef,
|
||||
deps: {},
|
||||
factory: ({}) => new ExampleCostInsightsClient(),
|
||||
}),
|
||||
},
|
||||
});
|
||||
|
||||
/** @alpha */
|
||||
export const CostInsightsPage = PageBlueprint.make({
|
||||
|
@ -36,33 +49,7 @@ export const CostInsightsPage = PageBlueprint.make({
|
|||
defaultPath: '/cost-insights',
|
||||
routeRef: convertLegacyRouteRef(rootRouteRef),
|
||||
loader: () =>
|
||||
import('../components/CostInsightsPage').then(m =>
|
||||
compatWrapper(<m.CostInsightsPage />),
|
||||
),
|
||||
},
|
||||
});
|
||||
|
||||
/** @alpha */
|
||||
export const CostInsightsProjectGrowthInstructionsPage = PageBlueprint.make({
|
||||
params: {
|
||||
defaultPath: '/cost-insights/investigating-growth',
|
||||
routeRef: convertLegacyRouteRef(projectGrowthAlertRef),
|
||||
loader: () =>
|
||||
import('../components/ProjectGrowthInstructionsPage').then(m =>
|
||||
compatWrapper(<m.ProjectGrowthInstructionsPage />),
|
||||
),
|
||||
},
|
||||
});
|
||||
|
||||
/** @alpha */
|
||||
export const CostInsightsLabelDataflowInstructionsPage = PageBlueprint.make({
|
||||
params: {
|
||||
defaultPath: '/cost-insights/labeling-jobs',
|
||||
routeRef: convertLegacyRouteRef(unlabeledDataflowAlertRef),
|
||||
loader: () =>
|
||||
import('../components/LabelDataflowInstructionsPage').then(m =>
|
||||
compatWrapper(<m.LabelDataflowInstructionsPage />),
|
||||
),
|
||||
import('./router').then(m => compatWrapper(<m.CostInsightsRouter />)),
|
||||
},
|
||||
});
|
||||
|
||||
|
@ -72,7 +59,6 @@ export const EntityCostInsightsContent = EntityContentBlueprint.make({
|
|||
params: {
|
||||
defaultPath: '/cost-insights',
|
||||
defaultTitle: 'Cost Insights',
|
||||
routeRef: convertLegacyRouteRef(rootRouteRef),
|
||||
loader: () =>
|
||||
import('../components/EntityCosts').then(m =>
|
||||
compatWrapper(<m.EntityCosts />),
|
||||
|
@ -90,3 +76,11 @@ export const CostInsightsNavItem = NavItemBlueprint.make({
|
|||
icon: MoneyIcon,
|
||||
},
|
||||
});
|
||||
|
||||
export default createFrontendPlugin({
|
||||
pluginId: 'cost-insights',
|
||||
extensions: [CostInsightsApi, CostInsightsPage, CostInsightsNavItem],
|
||||
routes: convertLegacyRouteRefs({
|
||||
root: rootRouteRef,
|
||||
}),
|
||||
});
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* Copyright 2025 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 { createSubRouteRef } from '@backstage/core-plugin-api';
|
||||
import { Route, Routes } from 'react-router-dom';
|
||||
import { rootRouteRef } from '../routes';
|
||||
import {
|
||||
CostInsightsPage,
|
||||
LabelDataflowInstructionsPage,
|
||||
ProjectGrowthInstructionsPage,
|
||||
} from '../components';
|
||||
|
||||
export const projectGrowthAlertSubRouteRef = createSubRouteRef({
|
||||
id: 'cost-insights/investigating-growth',
|
||||
parent: rootRouteRef,
|
||||
path: '/investigating-growth',
|
||||
});
|
||||
|
||||
export const unlabeledDataflowAlertSubRouteRef = createSubRouteRef({
|
||||
id: 'cost-insights/labeling-jobs',
|
||||
parent: rootRouteRef,
|
||||
path: '/labeling-jobs',
|
||||
});
|
||||
|
||||
export const CostInsightsRouter = () => (
|
||||
<Routes>
|
||||
<Route path="/" element={<CostInsightsPage />} />
|
||||
<Route
|
||||
path={projectGrowthAlertSubRouteRef.path}
|
||||
element={<ProjectGrowthInstructionsPage />}
|
||||
/>
|
||||
<Route
|
||||
path={unlabeledDataflowAlertSubRouteRef.path}
|
||||
element={<LabelDataflowInstructionsPage />}
|
||||
/>
|
||||
</Routes>
|
||||
);
|
|
@ -9,6 +9,7 @@
|
|||
"files": ["node_modules/@backstage/cli/asset-types/asset-types.d.ts"],
|
||||
"exclude": ["node_modules"],
|
||||
"compilerOptions": {
|
||||
"types": ["node"],
|
||||
"outDir": "dist-types",
|
||||
"rootDir": ".",
|
||||
"lib": ["DOM", "DOM.Iterable", "ScriptHost", "ES2022"],
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
'@backstage-community/plugin-explore': patch
|
||||
---
|
||||
|
||||
Migrate the explore api, index page, and nav item to the new frontend system.
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,4 @@
|
|||
plugins:
|
||||
- checksum: 8af7b3f2d7d19cacc7a3712f871efcb6208ba283a1f532260b0cba80c2cb66ed772b207b5ba41b8c5d64dd8d5e0c0e15bbb445bd14afac491712965211ba027c
|
||||
path: .yarn/plugins/@yarnpkg/plugin-backstage.cjs
|
||||
spec: 'https://versions.backstage.io/v1/releases/1.42.3/yarn-plugin'
|
|
@ -1,3 +1,3 @@
|
|||
{
|
||||
"version": "1.41.1"
|
||||
"version": "1.42.3"
|
||||
}
|
||||
|
|
|
@ -35,9 +35,9 @@
|
|||
"directory": "workspaces/explore"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.33.1",
|
||||
"@backstage/e2e-test-utils": "^0.1.1",
|
||||
"@backstage/repo-tools": "^0.15.0",
|
||||
"@backstage/cli": "backstage:^",
|
||||
"@backstage/e2e-test-utils": "backstage:^",
|
||||
"@backstage/repo-tools": "backstage:^",
|
||||
"@changesets/cli": "^2.27.1",
|
||||
"knip": "^5.27.4",
|
||||
"node-gyp": "^10.0.0",
|
||||
|
|
|
@ -1,5 +1,19 @@
|
|||
# @backstage-community/plugin-explore-backend
|
||||
|
||||
## 0.9.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- deb9523: Backstage version bump to v1.42.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 02546ad: Internall update to use the yarn plugin for version management
|
||||
- Updated dependencies [02546ad]
|
||||
- Updated dependencies [deb9523]
|
||||
- @backstage-community/plugin-explore-common@0.7.0
|
||||
- @backstage-community/plugin-explore-node@0.8.0
|
||||
|
||||
## 0.8.0
|
||||
|
||||
### Minor Changes
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@backstage-community/plugin-explore-backend",
|
||||
"version": "0.8.0",
|
||||
"version": "0.9.0",
|
||||
"backstage": {
|
||||
"role": "backend-plugin",
|
||||
"pluginId": "explore",
|
||||
|
@ -42,9 +42,9 @@
|
|||
"dependencies": {
|
||||
"@backstage-community/plugin-explore-common": "workspace:^",
|
||||
"@backstage-community/plugin-explore-node": "workspace:^",
|
||||
"@backstage/backend-plugin-api": "^1.4.1",
|
||||
"@backstage/config": "^1.3.3",
|
||||
"@backstage/types": "^1.2.1",
|
||||
"@backstage/backend-plugin-api": "backstage:^",
|
||||
"@backstage/config": "backstage:^",
|
||||
"@backstage/types": "backstage:^",
|
||||
"@types/express": "*",
|
||||
"express": "^4.18.1",
|
||||
"express-promise-router": "^4.1.0",
|
||||
|
@ -53,11 +53,11 @@
|
|||
"yn": "^4.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-defaults": "^0.11.1",
|
||||
"@backstage/backend-test-utils": "^1.7.0",
|
||||
"@backstage/cli": "^0.33.1",
|
||||
"@backstage/plugin-auth-backend": "^0.25.2",
|
||||
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.10",
|
||||
"@backstage/backend-defaults": "backstage:^",
|
||||
"@backstage/backend-test-utils": "backstage:^",
|
||||
"@backstage/cli": "backstage:^",
|
||||
"@backstage/plugin-auth-backend": "backstage:^",
|
||||
"@backstage/plugin-auth-backend-module-guest-provider": "backstage:^",
|
||||
"@types/lodash": "^4.14.151",
|
||||
"@types/node-fetch": "^2.5.12",
|
||||
"@types/supertest": "^6.0.0",
|
||||
|
|
|
@ -1,5 +1,15 @@
|
|||
# @backstage-community/plugin-explore-common
|
||||
|
||||
## 0.7.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- deb9523: Backstage version bump to v1.42.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 02546ad: Internall update to use the yarn plugin for version management
|
||||
|
||||
## 0.6.0
|
||||
|
||||
### Minor Changes
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@backstage-community/plugin-explore-common",
|
||||
"version": "0.6.0",
|
||||
"version": "0.7.0",
|
||||
"description": "Common functionalities for the explore plugin",
|
||||
"backstage": {
|
||||
"role": "common-library",
|
||||
|
@ -43,6 +43,6 @@
|
|||
"test": "backstage-cli package test"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.33.1"
|
||||
"@backstage/cli": "backstage:^"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,18 @@
|
|||
# @backstage-community/plugin-explore-node
|
||||
|
||||
## 0.8.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- deb9523: Backstage version bump to v1.42.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 02546ad: Internall update to use the yarn plugin for version management
|
||||
- Updated dependencies [02546ad]
|
||||
- Updated dependencies [deb9523]
|
||||
- @backstage-community/plugin-explore-common@0.7.0
|
||||
|
||||
## 0.7.0
|
||||
|
||||
### Minor Changes
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@backstage-community/plugin-explore-node",
|
||||
"description": "Node.js library for the explore plugin",
|
||||
"version": "0.7.0",
|
||||
"version": "0.8.0",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"license": "Apache-2.0",
|
||||
|
@ -35,13 +35,13 @@
|
|||
"postpack": "backstage-cli package postpack"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.33.1"
|
||||
"@backstage/cli": "backstage:^"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"dependencies": {
|
||||
"@backstage-community/plugin-explore-common": "workspace:^",
|
||||
"@backstage/backend-plugin-api": "^1.4.1"
|
||||
"@backstage/backend-plugin-api": "backstage:^"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,18 @@
|
|||
# @backstage-community/plugin-explore-react
|
||||
|
||||
## 0.7.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- deb9523: Backstage version bump to v1.42.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 02546ad: Internall update to use the yarn plugin for version management
|
||||
- Updated dependencies [02546ad]
|
||||
- Updated dependencies [deb9523]
|
||||
- @backstage-community/plugin-explore-common@0.7.0
|
||||
|
||||
## 0.6.0
|
||||
|
||||
### Minor Changes
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@backstage-community/plugin-explore-react",
|
||||
"version": "0.6.0",
|
||||
"version": "0.7.0",
|
||||
"description": "A frontend library for Backstage plugins that want to interact with the explore plugin",
|
||||
"backstage": {
|
||||
"role": "web-library",
|
||||
|
@ -45,10 +45,10 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@backstage-community/plugin-explore-common": "workspace:^",
|
||||
"@backstage/core-plugin-api": "^1.10.9"
|
||||
"@backstage/core-plugin-api": "backstage:^"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.33.1",
|
||||
"@backstage/cli": "backstage:^",
|
||||
"@testing-library/dom": "^10.0.0",
|
||||
"@testing-library/jest-dom": "^6.0.0",
|
||||
"@testing-library/react": "^15.0.0",
|
||||
|
|
|
@ -1,5 +1,20 @@
|
|||
# @backstage-community/plugin-explore
|
||||
|
||||
## 0.12.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- deb9523: Backstage version bump to v1.42.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 13c0def: Migrate the explore api, index page, and nav item to the new frontend system.
|
||||
- 02546ad: Internall update to use the yarn plugin for version management
|
||||
- Updated dependencies [02546ad]
|
||||
- Updated dependencies [deb9523]
|
||||
- @backstage-community/plugin-explore-common@0.7.0
|
||||
- @backstage-community/plugin-explore-react@0.7.0
|
||||
|
||||
## 0.11.0
|
||||
|
||||
### Minor Changes
|
||||
|
|
|
@ -3,6 +3,9 @@ app:
|
|||
baseUrl: http://localhost:3000
|
||||
extensions:
|
||||
- 'nav-item:catalog': false
|
||||
- 'page:explore':
|
||||
config:
|
||||
path: '/'
|
||||
backend:
|
||||
baseUrl: http://localhost:7007
|
||||
listen:
|
||||
|
|
|
@ -15,15 +15,12 @@
|
|||
*/
|
||||
|
||||
import ReactDOM from 'react-dom/client';
|
||||
import { Navigate } from 'react-router';
|
||||
|
||||
import { createApp } from '@backstage/frontend-defaults';
|
||||
|
||||
import {
|
||||
ApiBlueprint,
|
||||
PageBlueprint,
|
||||
createFrontendModule,
|
||||
createFrontendPlugin,
|
||||
} from '@backstage/frontend-plugin-api';
|
||||
|
||||
import catalogPlugin from '@backstage/plugin-catalog/alpha';
|
||||
|
@ -33,18 +30,6 @@ import explorePlugin from '../src/alpha';
|
|||
|
||||
import { catalogApiMock } from '@backstage/plugin-catalog-react/testUtils';
|
||||
|
||||
const homePlugin = createFrontendPlugin({
|
||||
pluginId: 'home',
|
||||
extensions: [
|
||||
PageBlueprint.make({
|
||||
params: {
|
||||
path: '/',
|
||||
loader: async () => <Navigate to="/explore" />,
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
|
||||
const components = [
|
||||
{
|
||||
apiVersion: 'backstage.io/v1alpha1',
|
||||
|
@ -100,7 +85,7 @@ const catalogPluginOverrides = createFrontendModule({
|
|||
});
|
||||
|
||||
const app = createApp({
|
||||
features: [homePlugin, explorePlugin, catalogPlugin, catalogPluginOverrides],
|
||||
features: [explorePlugin, catalogPlugin, catalogPluginOverrides],
|
||||
});
|
||||
|
||||
const root = app.createRoot();
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@backstage-community/plugin-explore",
|
||||
"version": "0.11.0",
|
||||
"version": "0.12.0",
|
||||
"description": "A Backstage plugin for building an exploration page of your software ecosystem",
|
||||
"backstage": {
|
||||
"role": "frontend-plugin",
|
||||
|
@ -59,16 +59,16 @@
|
|||
"dependencies": {
|
||||
"@backstage-community/plugin-explore-common": "workspace:^",
|
||||
"@backstage-community/plugin-explore-react": "workspace:^",
|
||||
"@backstage/catalog-client": "^1.10.2",
|
||||
"@backstage/catalog-model": "^1.7.5",
|
||||
"@backstage/core-compat-api": "^0.5.0",
|
||||
"@backstage/core-components": "^0.17.4",
|
||||
"@backstage/core-plugin-api": "^1.10.9",
|
||||
"@backstage/errors": "^1.2.7",
|
||||
"@backstage/frontend-plugin-api": "^0.11.0",
|
||||
"@backstage/plugin-catalog-react": "^1.20.0",
|
||||
"@backstage/plugin-search-common": "^1.2.19",
|
||||
"@backstage/plugin-search-react": "^1.9.3",
|
||||
"@backstage/catalog-client": "backstage:^",
|
||||
"@backstage/catalog-model": "backstage:^",
|
||||
"@backstage/core-compat-api": "backstage:^",
|
||||
"@backstage/core-components": "backstage:^",
|
||||
"@backstage/core-plugin-api": "backstage:^",
|
||||
"@backstage/errors": "backstage:^",
|
||||
"@backstage/frontend-plugin-api": "backstage:^",
|
||||
"@backstage/plugin-catalog-react": "backstage:^",
|
||||
"@backstage/plugin-search-common": "backstage:^",
|
||||
"@backstage/plugin-search-react": "backstage:^",
|
||||
"@material-ui/core": "^4.12.2",
|
||||
"@material-ui/icons": "^4.9.1",
|
||||
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
|
||||
|
@ -77,12 +77,12 @@
|
|||
"react-use": "^17.2.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.34.0",
|
||||
"@backstage/core-app-api": "^1.18.0",
|
||||
"@backstage/dev-utils": "^1.1.12",
|
||||
"@backstage/frontend-defaults": "^0.3.0",
|
||||
"@backstage/plugin-catalog": "^1.31.2",
|
||||
"@backstage/test-utils": "^1.7.10",
|
||||
"@backstage/cli": "backstage:^",
|
||||
"@backstage/core-app-api": "backstage:^",
|
||||
"@backstage/dev-utils": "backstage:^",
|
||||
"@backstage/frontend-defaults": "backstage:^",
|
||||
"@backstage/plugin-catalog": "backstage:^",
|
||||
"@backstage/test-utils": "backstage:^",
|
||||
"@testing-library/dom": "^10.0.0",
|
||||
"@testing-library/jest-dom": "^6.0.0",
|
||||
"@testing-library/react": "^15.0.0",
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
module.exports = require('@backstage/cli/config/eslint-factory')(__dirname);
|
|
@ -0,0 +1,15 @@
|
|||
# @backstage-community/plugin-search-backend-module-explore
|
||||
|
||||
## 0.4.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- c4f95b6: Initial release in backstage-community
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 8460759: **BREAKING ALPHA**: This module is no longer available on the `/alpha` export, please update your imports to remove that last part.
|
||||
- 02546ad: Internall update to use the yarn plugin for version management
|
||||
- Updated dependencies [02546ad]
|
||||
- Updated dependencies [deb9523]
|
||||
- @backstage-community/plugin-explore-common@0.7.0
|
|
@ -0,0 +1,30 @@
|
|||
# search-backend-module-explore
|
||||
|
||||
This package exports a module that extends the search backend to also indexing the tools exposed by the [`explore` service](https://github.com/backstage/community-plugins/tree/main/workspaces/explore/plugins/explore-backend).
|
||||
|
||||
It was moved here from [the main Backstage repository](https://github.com/backstage/backstage/blob/b1bd24a0b2991c5b3fb2760ed06351421bc3bd97/plugins/search-backend-module-explore/README.md) where it was originally hosted, then under the package name `@backstage/plugin-search-backend-module-explore`. That old package name has now been deprecated, and this new `@backstage-community/plugin-search-backend-module-explore` replaces it.
|
||||
|
||||
## Installation
|
||||
|
||||
Add the module package as a dependency:
|
||||
|
||||
```bash
|
||||
# From your Backstage root directory
|
||||
yarn --cwd packages/backend add @backstage-community/plugin-search-backend-module-explore
|
||||
```
|
||||
|
||||
Add the collator to your backend instance, along with the search plugin itself:
|
||||
|
||||
```tsx
|
||||
// packages/backend/src/index.ts
|
||||
import { createBackend } from '@backstage/backend-defaults';
|
||||
|
||||
const backend = createBackend();
|
||||
backend.add(import('@backstage/plugin-search-backend'));
|
||||
backend.add(
|
||||
import('@backstage-community/plugin-search-backend-module-explore'),
|
||||
);
|
||||
backend.start();
|
||||
```
|
||||
|
||||
You may also want to add configuration parameters to your app-config, for example for controlling the scheduled indexing interval. These parameters should be placed under the `search.collators.explore` key. See [the config definition file](https://github.com/backstage/community-plugins/blob/main/workspaces/explore/plugins/search-backend-module-explore/config.d.ts) for more details.
|
|
@ -0,0 +1,10 @@
|
|||
apiVersion: backstage.io/v1alpha1
|
||||
kind: Component
|
||||
metadata:
|
||||
name: backstage-community-plugin-search-backend-module-explore
|
||||
title: '@backstage-community/plugin-search-backend-module-explore'
|
||||
description: A module for the search backend that exports explore modules
|
||||
spec:
|
||||
lifecycle: experimental
|
||||
type: backstage-backend-plugin-module
|
||||
owner: search-maintainers
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* Copyright 2023 The Backstage Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { SchedulerServiceTaskScheduleDefinitionConfig } from '@backstage/backend-plugin-api';
|
||||
|
||||
export interface Config {
|
||||
search?: {
|
||||
collators?: {
|
||||
/**
|
||||
* Configuration options for `@backstage/plugin-search-backend-module-explore`
|
||||
*/
|
||||
explore?: {
|
||||
/**
|
||||
* The schedule for how often to run the collation job.
|
||||
*/
|
||||
schedule?: SchedulerServiceTaskScheduleDefinitionConfig;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
# Knip report
|
|
@ -0,0 +1,59 @@
|
|||
{
|
||||
"name": "@backstage-community/plugin-search-backend-module-explore",
|
||||
"version": "0.4.0",
|
||||
"description": "A module for the search backend that exports explore modules",
|
||||
"backstage": {
|
||||
"role": "backend-plugin-module",
|
||||
"pluginId": "search",
|
||||
"pluginPackage": "@backstage/plugin-search-backend"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"homepage": "https://backstage.io",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/backstage/community-plugins",
|
||||
"directory": "workspaces/explore/plugins/search-backend-module-explore"
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
"exports": {
|
||||
".": "./src/index.ts",
|
||||
"./package.json": "./package.json"
|
||||
},
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"typesVersions": {
|
||||
"*": {
|
||||
"package.json": [
|
||||
"package.json"
|
||||
]
|
||||
}
|
||||
},
|
||||
"files": [
|
||||
"dist",
|
||||
"config.d.ts"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "backstage-cli package build",
|
||||
"clean": "backstage-cli package clean",
|
||||
"lint": "backstage-cli package lint",
|
||||
"prepack": "backstage-cli package prepack",
|
||||
"postpack": "backstage-cli package postpack",
|
||||
"start": "backstage-cli package start",
|
||||
"test": "backstage-cli package test"
|
||||
},
|
||||
"dependencies": {
|
||||
"@backstage-community/plugin-explore-common": "workspace:^",
|
||||
"@backstage/backend-plugin-api": "backstage:^",
|
||||
"@backstage/config": "backstage:^",
|
||||
"@backstage/plugin-search-backend-node": "backstage:^",
|
||||
"@backstage/plugin-search-common": "backstage:^"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/backend-test-utils": "backstage:^",
|
||||
"@backstage/cli": "backstage:^",
|
||||
"msw": "^1.2.1"
|
||||
},
|
||||
"configSchema": "config.d.ts"
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
## API Report File for "@backstage-community/plugin-search-backend-module-explore"
|
||||
|
||||
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
|
||||
|
||||
```ts
|
||||
import { BackendFeature } from '@backstage/backend-plugin-api';
|
||||
import { ExploreTool } from '@backstage-community/plugin-explore-common';
|
||||
import { IndexableDocument } from '@backstage/plugin-search-common';
|
||||
|
||||
// @public
|
||||
const _default: BackendFeature;
|
||||
export default _default;
|
||||
|
||||
// @public
|
||||
export interface ToolDocument extends IndexableDocument, ExploreTool {}
|
||||
```
|
|
@ -0,0 +1,116 @@
|
|||
/*
|
||||
* Copyright 2023 The Backstage Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { TestPipeline } from '@backstage/plugin-search-backend-node';
|
||||
import {
|
||||
mockServices,
|
||||
registerMswTestHooks,
|
||||
} from '@backstage/backend-test-utils';
|
||||
import { rest } from 'msw';
|
||||
import { setupServer } from 'msw/node';
|
||||
import { Readable } from 'stream';
|
||||
import { ToolDocumentCollatorFactory } from './ToolDocumentCollatorFactory';
|
||||
|
||||
const logger = mockServices.logger.mock();
|
||||
|
||||
const mockTools = {
|
||||
tools: [
|
||||
{
|
||||
title: 'tool1',
|
||||
description: 'tool 1 description',
|
||||
url: 'https://some-url.com',
|
||||
image: 'https://some-url.com/image.png',
|
||||
tags: ['one'],
|
||||
},
|
||||
{
|
||||
title: 'tool2',
|
||||
description: 'tool 2 description',
|
||||
url: 'https://some-url.com',
|
||||
image: 'https://some-url.com/image.png',
|
||||
tags: ['two'],
|
||||
},
|
||||
{
|
||||
title: 'tool3',
|
||||
description: 'tool 3 description',
|
||||
url: 'https://some-url.com',
|
||||
image: 'https://some-url.com/image.png',
|
||||
tags: ['three'],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
describe('ToolDocumentCollatorFactory', () => {
|
||||
const config = mockServices.rootConfig();
|
||||
const mockDiscoveryApi = mockServices.discovery.mock({
|
||||
getBaseUrl: async () => 'http://test-backend/api/explore',
|
||||
});
|
||||
|
||||
const options = {
|
||||
discovery: mockDiscoveryApi,
|
||||
logger,
|
||||
auth: mockServices.auth(),
|
||||
};
|
||||
|
||||
it('has expected type', () => {
|
||||
const factory = ToolDocumentCollatorFactory.fromConfig(config, options);
|
||||
expect(factory.type).toBe('tools');
|
||||
});
|
||||
|
||||
describe('getCollator', () => {
|
||||
let factory: ToolDocumentCollatorFactory;
|
||||
let collator: Readable;
|
||||
|
||||
const worker = setupServer();
|
||||
registerMswTestHooks(worker);
|
||||
|
||||
beforeEach(async () => {
|
||||
factory = ToolDocumentCollatorFactory.fromConfig(config, options);
|
||||
collator = await factory.getCollator();
|
||||
|
||||
worker.use(
|
||||
rest.get('http://test-backend/api/explore/tools', (_, res, ctx) =>
|
||||
res(ctx.status(200), ctx.json(mockTools)),
|
||||
),
|
||||
);
|
||||
});
|
||||
|
||||
it('returns a readable stream', async () => {
|
||||
expect(collator).toBeInstanceOf(Readable);
|
||||
});
|
||||
|
||||
it('runs against mock tools', async () => {
|
||||
const pipeline = TestPipeline.fromCollator(collator);
|
||||
const { documents } = await pipeline.execute();
|
||||
expect(mockDiscoveryApi.getBaseUrl).toHaveBeenCalledWith('explore');
|
||||
expect(documents).toHaveLength(mockTools.tools.length);
|
||||
});
|
||||
|
||||
it('non-authenticated backend', async () => {
|
||||
factory = ToolDocumentCollatorFactory.fromConfig(config, {
|
||||
discovery: mockDiscoveryApi,
|
||||
logger,
|
||||
auth: mockServices.auth(),
|
||||
});
|
||||
collator = await factory.getCollator();
|
||||
|
||||
const pipeline = TestPipeline.fromCollator(collator);
|
||||
const { documents } = await pipeline.execute();
|
||||
|
||||
expect(mockDiscoveryApi.getBaseUrl).toHaveBeenCalledWith('explore');
|
||||
expect(documents).toHaveLength(mockTools.tools.length);
|
||||
});
|
||||
});
|
||||
});
|
|
@ -0,0 +1,111 @@
|
|||
/*
|
||||
* 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 {
|
||||
AuthService,
|
||||
DiscoveryService,
|
||||
LoggerService,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import { Config } from '@backstage/config';
|
||||
import { ExploreTool } from '@backstage-community/plugin-explore-common';
|
||||
import {
|
||||
DocumentCollatorFactory,
|
||||
IndexableDocument,
|
||||
} from '@backstage/plugin-search-common';
|
||||
import { Readable } from 'stream';
|
||||
|
||||
/**
|
||||
* Extended IndexableDocument with explore tool specific properties
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export interface ToolDocument extends IndexableDocument, ExploreTool {}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export type ToolDocumentCollatorFactoryOptions = {
|
||||
discovery: DiscoveryService;
|
||||
logger: LoggerService;
|
||||
auth: AuthService;
|
||||
};
|
||||
|
||||
/**
|
||||
* Search collator responsible for collecting explore tools to index.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
export class ToolDocumentCollatorFactory implements DocumentCollatorFactory {
|
||||
public readonly type: string = 'tools';
|
||||
|
||||
private readonly discovery: DiscoveryService;
|
||||
private readonly logger: LoggerService;
|
||||
private readonly auth: AuthService;
|
||||
|
||||
private constructor(options: ToolDocumentCollatorFactoryOptions) {
|
||||
this.discovery = options.discovery;
|
||||
this.logger = options.logger;
|
||||
this.auth = options.auth;
|
||||
}
|
||||
|
||||
static fromConfig(
|
||||
_config: Config,
|
||||
options: ToolDocumentCollatorFactoryOptions,
|
||||
) {
|
||||
return new ToolDocumentCollatorFactory(options);
|
||||
}
|
||||
|
||||
async getCollator() {
|
||||
return Readable.from(this.execute());
|
||||
}
|
||||
|
||||
async *execute(): AsyncGenerator<ToolDocument> {
|
||||
this.logger.info('Starting collation of explore tools');
|
||||
|
||||
const tools = await this.fetchTools();
|
||||
|
||||
for (const tool of tools) {
|
||||
yield {
|
||||
...tool,
|
||||
text: tool.description,
|
||||
location: tool.url,
|
||||
};
|
||||
}
|
||||
|
||||
this.logger.info('Finished collation of explore tools');
|
||||
}
|
||||
|
||||
private async fetchTools() {
|
||||
const baseUrl = await this.discovery.getBaseUrl('explore');
|
||||
|
||||
const { token } = await this.auth.getPluginRequestToken({
|
||||
onBehalfOf: await this.auth.getOwnServiceCredentials(),
|
||||
targetPluginId: 'explore',
|
||||
});
|
||||
const response = await fetch(`${baseUrl}/tools`, {
|
||||
headers: { Authorization: `Bearer ${token}` },
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(
|
||||
`Failed to explore fetch tools, ${response.status}: ${response.statusText}`,
|
||||
);
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
return data.tools;
|
||||
}
|
||||
}
|
|
@ -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 type { ToolDocument } from './ToolDocumentCollatorFactory';
|
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* Copyright 2023 The Backstage Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @packageDocumentation
|
||||
* A module for the search backend that exports Explore modules.
|
||||
*/
|
||||
|
||||
export * from './collators';
|
||||
export { default } from './module';
|
|
@ -0,0 +1,57 @@
|
|||
/*
|
||||
* Copyright 2023 The Backstage Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { searchIndexRegistryExtensionPoint } from '@backstage/plugin-search-backend-node/alpha';
|
||||
import searchModuleExploreCollator from './module';
|
||||
|
||||
describe('searchModuleExploreCollator', () => {
|
||||
const schedule = {
|
||||
frequency: { minutes: 10 },
|
||||
timeout: { minutes: 15 },
|
||||
initialDelay: { seconds: 3 },
|
||||
};
|
||||
|
||||
it('should register the explore collator to the search index registry extension point with factory and schedule', async () => {
|
||||
const extensionPointMock = {
|
||||
addCollator: jest.fn(),
|
||||
};
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [
|
||||
[searchIndexRegistryExtensionPoint, extensionPointMock],
|
||||
],
|
||||
features: [
|
||||
searchModuleExploreCollator,
|
||||
mockServices.rootConfig.factory({
|
||||
data: {
|
||||
search: {
|
||||
explore: {
|
||||
schedule,
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
|
||||
expect(extensionPointMock.addCollator).toHaveBeenCalledTimes(1);
|
||||
expect(extensionPointMock.addCollator).toHaveBeenCalledWith({
|
||||
factory: expect.objectContaining({ type: 'tools' }),
|
||||
schedule: expect.objectContaining({ run: expect.any(Function) }),
|
||||
});
|
||||
});
|
||||
});
|
|
@ -0,0 +1,79 @@
|
|||
/*
|
||||
* Copyright 2023 The Backstage Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @packageDocumentation
|
||||
* A module for the search backend that exports Explore modules.
|
||||
*/
|
||||
|
||||
import {
|
||||
coreServices,
|
||||
createBackendModule,
|
||||
readSchedulerServiceTaskScheduleDefinitionFromConfig,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import { searchIndexRegistryExtensionPoint } from '@backstage/plugin-search-backend-node/alpha';
|
||||
import { ToolDocumentCollatorFactory } from './collators/ToolDocumentCollatorFactory';
|
||||
|
||||
/**
|
||||
* Search backend module for the Explore index.
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export default createBackendModule({
|
||||
pluginId: 'search',
|
||||
moduleId: 'explore-collator',
|
||||
register(env) {
|
||||
env.registerInit({
|
||||
deps: {
|
||||
config: coreServices.rootConfig,
|
||||
logger: coreServices.logger,
|
||||
discovery: coreServices.discovery,
|
||||
scheduler: coreServices.scheduler,
|
||||
auth: coreServices.auth,
|
||||
indexRegistry: searchIndexRegistryExtensionPoint,
|
||||
},
|
||||
async init({
|
||||
config,
|
||||
logger,
|
||||
discovery,
|
||||
scheduler,
|
||||
auth,
|
||||
indexRegistry,
|
||||
}) {
|
||||
const defaultSchedule = {
|
||||
frequency: { minutes: 10 },
|
||||
timeout: { minutes: 15 },
|
||||
initialDelay: { seconds: 3 },
|
||||
};
|
||||
|
||||
const schedule = config.has('search.collators.explore.schedule')
|
||||
? readSchedulerServiceTaskScheduleDefinitionFromConfig(
|
||||
config.getConfig('search.collators.explore.schedule'),
|
||||
)
|
||||
: defaultSchedule;
|
||||
|
||||
indexRegistry.addCollator({
|
||||
schedule: scheduler.createScheduledTaskRunner(schedule),
|
||||
factory: ToolDocumentCollatorFactory.fromConfig(config, {
|
||||
discovery,
|
||||
logger,
|
||||
auth,
|
||||
}),
|
||||
});
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
'@backstage-community/plugin-github-actions': minor
|
||||
---
|
||||
|
||||
Backstage version bump to v1.42.3
|
|
@ -3,3 +3,4 @@ dist-types
|
|||
coverage
|
||||
.vscode
|
||||
.eslintrc.js
|
||||
.yarnrc.yml
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,4 @@
|
|||
plugins:
|
||||
- checksum: 8af7b3f2d7d19cacc7a3712f871efcb6208ba283a1f532260b0cba80c2cb66ed772b207b5ba41b8c5d64dd8d5e0c0e15bbb445bd14afac491712965211ba027c
|
||||
path: .yarn/plugins/@yarnpkg/plugin-backstage.cjs
|
||||
spec: "https://versions.backstage.io/v1/releases/1.42.3/yarn-plugin"
|
|
@ -1,3 +1,3 @@
|
|||
{
|
||||
"version": "1.41.1"
|
||||
"version": "1.42.3"
|
||||
}
|
||||
|
|
|
@ -37,9 +37,9 @@
|
|||
"directory": "workspaces/github-actions"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.33.1",
|
||||
"@backstage/e2e-test-utils": "^0.1.1",
|
||||
"@backstage/repo-tools": "^0.15.0",
|
||||
"@backstage/cli": "backstage:^",
|
||||
"@backstage/e2e-test-utils": "backstage:^",
|
||||
"@backstage/repo-tools": "backstage:^",
|
||||
"@changesets/cli": "^2.27.1",
|
||||
"knip": "^5.27.4",
|
||||
"node-gyp": "^10.0.0",
|
||||
|
|
|
@ -20,26 +20,26 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@backstage-community/plugin-github-actions": "workspace:^",
|
||||
"@backstage/app-defaults": "^1.6.4",
|
||||
"@backstage/catalog-model": "^1.7.5",
|
||||
"@backstage/cli": "^0.33.1",
|
||||
"@backstage/core-app-api": "^1.18.0",
|
||||
"@backstage/core-compat-api": "^0.4.4",
|
||||
"@backstage/core-components": "^0.17.4",
|
||||
"@backstage/core-plugin-api": "^1.10.9",
|
||||
"@backstage/frontend-app-api": "^0.11.4",
|
||||
"@backstage/frontend-defaults": "^0.2.4",
|
||||
"@backstage/frontend-plugin-api": "^0.10.4",
|
||||
"@backstage/integration-react": "^1.2.9",
|
||||
"@backstage/plugin-api-docs": "^0.12.9",
|
||||
"@backstage/plugin-catalog": "^1.31.1",
|
||||
"@backstage/plugin-catalog-common": "^1.1.5",
|
||||
"@backstage/plugin-catalog-graph": "^0.4.21",
|
||||
"@backstage/plugin-catalog-import": "^0.13.3",
|
||||
"@backstage/plugin-catalog-react": "^1.19.1",
|
||||
"@backstage/plugin-org": "^0.6.41",
|
||||
"@backstage/plugin-user-settings": "^0.8.24",
|
||||
"@backstage/theme": "^0.6.7",
|
||||
"@backstage/app-defaults": "backstage:^",
|
||||
"@backstage/catalog-model": "backstage:^",
|
||||
"@backstage/cli": "backstage:^",
|
||||
"@backstage/core-app-api": "backstage:^",
|
||||
"@backstage/core-compat-api": "backstage:^",
|
||||
"@backstage/core-components": "backstage:^",
|
||||
"@backstage/core-plugin-api": "backstage:^",
|
||||
"@backstage/frontend-app-api": "backstage:^",
|
||||
"@backstage/frontend-defaults": "backstage:^",
|
||||
"@backstage/frontend-plugin-api": "backstage:^",
|
||||
"@backstage/integration-react": "backstage:^",
|
||||
"@backstage/plugin-api-docs": "backstage:^",
|
||||
"@backstage/plugin-catalog": "backstage:^",
|
||||
"@backstage/plugin-catalog-common": "backstage:^",
|
||||
"@backstage/plugin-catalog-graph": "backstage:^",
|
||||
"@backstage/plugin-catalog-import": "backstage:^",
|
||||
"@backstage/plugin-catalog-react": "backstage:^",
|
||||
"@backstage/plugin-org": "backstage:^",
|
||||
"@backstage/plugin-user-settings": "backstage:^",
|
||||
"@backstage/theme": "backstage:^",
|
||||
"@material-ui/core": "^4.12.2",
|
||||
"@material-ui/icons": "^4.9.1",
|
||||
"history": "^5.0.0",
|
||||
|
@ -51,7 +51,7 @@
|
|||
"styled-components": "^6.1.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/test-utils": "^1.7.10",
|
||||
"@backstage/test-utils": "backstage:^",
|
||||
"@playwright/test": "^1.32.3",
|
||||
"@testing-library/dom": "^9.0.0",
|
||||
"@testing-library/jest-dom": "^6.0.0",
|
||||
|
|
|
@ -17,18 +17,11 @@ import { FlatRoutes } from '@backstage/core-app-api';
|
|||
import { convertLegacyApp } from '@backstage/core-compat-api';
|
||||
import { createApp } from '@backstage/frontend-defaults';
|
||||
import {
|
||||
configApiRef,
|
||||
ApiBlueprint,
|
||||
createApiFactory,
|
||||
createFrontendModule,
|
||||
PageBlueprint,
|
||||
SignInPageBlueprint,
|
||||
} from '@backstage/frontend-plugin-api';
|
||||
import {
|
||||
ScmAuth,
|
||||
ScmIntegrationsApi,
|
||||
scmIntegrationsApiRef,
|
||||
} from '@backstage/integration-react';
|
||||
|
||||
import { ApiExplorerPage } from '@backstage/plugin-api-docs';
|
||||
import catalogPlugin from '@backstage/plugin-catalog/alpha';
|
||||
import catalogImportPlugin from '@backstage/plugin-catalog-import/alpha';
|
||||
|
@ -49,7 +42,7 @@ const signInPage = SignInPageBlueprint.make({
|
|||
const homePageExtension = PageBlueprint.make({
|
||||
name: 'home',
|
||||
params: {
|
||||
defaultPath: '/',
|
||||
path: '/',
|
||||
loader: () => Promise.resolve(<Navigate to="catalog" />),
|
||||
},
|
||||
});
|
||||
|
@ -60,24 +53,6 @@ const collectedLegacyPlugins = convertLegacyApp(
|
|||
</FlatRoutes>,
|
||||
);
|
||||
|
||||
const scmAuthApi = ApiBlueprint.make({
|
||||
name: 'scm-auth',
|
||||
params: {
|
||||
factory: ScmAuth.createDefaultApiFactory(),
|
||||
},
|
||||
});
|
||||
|
||||
const scmIntegrationsApi = ApiBlueprint.make({
|
||||
name: 'scm-integrations',
|
||||
params: {
|
||||
factory: createApiFactory({
|
||||
api: scmIntegrationsApiRef,
|
||||
deps: { configApi: configApiRef },
|
||||
factory: ({ configApi }) => ScmIntegrationsApi.fromConfig(configApi),
|
||||
}),
|
||||
},
|
||||
});
|
||||
|
||||
export const app = createApp({
|
||||
features: [
|
||||
catalogPlugin,
|
||||
|
@ -87,13 +62,7 @@ export const app = createApp({
|
|||
...collectedLegacyPlugins,
|
||||
createFrontendModule({
|
||||
pluginId: 'app',
|
||||
extensions: [
|
||||
signInPage,
|
||||
homePageExtension,
|
||||
scmAuthApi,
|
||||
scmIntegrationsApi,
|
||||
navigationExtension,
|
||||
],
|
||||
extensions: [signInPage, homePageExtension, navigationExtension],
|
||||
}),
|
||||
],
|
||||
});
|
||||
|
|
|
@ -20,23 +20,23 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@backstage-community/plugin-github-actions": "workspace:^",
|
||||
"@backstage/app-defaults": "^1.6.4",
|
||||
"@backstage/catalog-model": "^1.7.5",
|
||||
"@backstage/cli": "^0.33.1",
|
||||
"@backstage/core-app-api": "^1.18.0",
|
||||
"@backstage/core-components": "^0.17.4",
|
||||
"@backstage/core-plugin-api": "^1.10.9",
|
||||
"@backstage/integration-react": "^1.2.9",
|
||||
"@backstage/plugin-api-docs": "^0.12.9",
|
||||
"@backstage/plugin-catalog": "^1.31.1",
|
||||
"@backstage/plugin-catalog-common": "^1.1.5",
|
||||
"@backstage/plugin-catalog-graph": "^0.4.21",
|
||||
"@backstage/plugin-catalog-import": "^0.13.3",
|
||||
"@backstage/plugin-catalog-react": "^1.19.1",
|
||||
"@backstage/plugin-org": "^0.6.41",
|
||||
"@backstage/plugin-permission-react": "^0.4.36",
|
||||
"@backstage/plugin-user-settings": "^0.8.24",
|
||||
"@backstage/theme": "^0.6.7",
|
||||
"@backstage/app-defaults": "backstage:^",
|
||||
"@backstage/catalog-model": "backstage:^",
|
||||
"@backstage/cli": "backstage:^",
|
||||
"@backstage/core-app-api": "backstage:^",
|
||||
"@backstage/core-components": "backstage:^",
|
||||
"@backstage/core-plugin-api": "backstage:^",
|
||||
"@backstage/integration-react": "backstage:^",
|
||||
"@backstage/plugin-api-docs": "backstage:^",
|
||||
"@backstage/plugin-catalog": "backstage:^",
|
||||
"@backstage/plugin-catalog-common": "backstage:^",
|
||||
"@backstage/plugin-catalog-graph": "backstage:^",
|
||||
"@backstage/plugin-catalog-import": "backstage:^",
|
||||
"@backstage/plugin-catalog-react": "backstage:^",
|
||||
"@backstage/plugin-org": "backstage:^",
|
||||
"@backstage/plugin-permission-react": "backstage:^",
|
||||
"@backstage/plugin-user-settings": "backstage:^",
|
||||
"@backstage/theme": "backstage:^",
|
||||
"@material-ui/core": "^4.12.2",
|
||||
"@material-ui/icons": "^4.9.1",
|
||||
"history": "^5.0.0",
|
||||
|
@ -47,7 +47,7 @@
|
|||
"react-use": "^17.2.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/test-utils": "^1.7.10",
|
||||
"@backstage/test-utils": "backstage:^",
|
||||
"@playwright/test": "^1.32.3",
|
||||
"@testing-library/dom": "^9.0.0",
|
||||
"@testing-library/jest-dom": "^6.0.0",
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue