Compare commits

...

10 Commits

Author SHA1 Message Date
Backstage Service Account 6a65a4cea3
Version Packages (#5041)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-25 08:27:10 -05:00
Backstage Service Account c2261cf6ab
Version Packages (#5042)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-25 08:26:56 -05:00
Backstage Service Account 727c25df51
Version Packages (#5047)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-25 08:26:41 -05:00
Andre Wanlin ff785e582c
Skip version bump when release version matches workspace version (#5043)
Signed-off-by: Andre Wanlin <awanlin@spotify.com>
2025-08-25 08:15:41 -05:00
Backstage Service Account dcffece576
sonarqube - version:bump to v1.42.3 (#5032)
* v1.42.3 version bump

* sonarqube: align to latest nfs specs

Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>

---------

Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Vincenzo Scamporlino <vincenzos@spotify.com>
2025-08-25 15:14:38 +02:00
Andre Wanlin ceeadd1e1a
cost-insights - New Frontend System Fixes (#4839)
* cost-insights - New Frontend System Fixes

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

* Updated API report

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

---------

Signed-off-by: Andre Wanlin <awanlin@spotify.com>
2025-08-25 08:14:14 -05:00
Andre Wanlin 7bafbd4fc8
various workspaces - Added auto bump file (#5044)
Signed-off-by: Andre Wanlin <awanlin@spotify.com>
2025-08-25 07:29:45 -05:00
Backstage Service Account 0493206694
github-actions - version:bump to v1.42.3 (#5021)
* v1.42.3 version bump

* github-actions: nfs fixes and switch to yarn plugin

Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>

* github-actions: prettier tweaks

Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>

* github-actions: update api reports for nfs

Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>

---------

Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Vincenzo Scamporlino <vincenzos@spotify.com>
2025-08-25 10:47:10 +02:00
Backstage Service Account ca3c813046
linguist - version:bump to v1.42.3 (#5039)
* v1.42.3 version bump

* Use yarn plugin

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

* Manual changes for release

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

* Maintenance

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

---------

Signed-off-by: Andre Wanlin <awanlin@spotify.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Andre Wanlin <awanlin@spotify.com>
2025-08-24 13:42:42 -05:00
Backstage Service Account 8367480d11
azure-devops - version:bump to v1.42.3 (#5040)
* v1.42.3 version bump

* Use yarn plugin

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

* Manual changes for release

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

* Maintenance

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

---------

Signed-off-by: Andre Wanlin <awanlin@spotify.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Andre Wanlin <awanlin@spotify.com>
2025-08-24 13:42:27 -05:00
104 changed files with 5388 additions and 11282 deletions

View File

@ -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: |

View File

File diff suppressed because one or more lines are too long

View File

@ -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'

View File

@ -1,6 +1,7 @@
app:
title: Azure DevOps Example App
baseUrl: http://localhost:3000
packages: all
organization:
name: Azure DevOps Example

View File

@ -1,3 +1,3 @@
{
"version": "1.41.1"
"version": "1.42.3"
}

View File

@ -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:^"
}
}

View File

@ -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",

View File

@ -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"

View File

@ -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

View File

@ -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",

View File

@ -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

View File

@ -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:^"
}
}

View File

@ -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

View File

@ -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
```

View File

@ -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",

View File

@ -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;
};

View File

@ -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 =>

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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

View File

View File

View File

View File

View File

@ -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

View File

@ -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",

View File

@ -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<{

View File

@ -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';

View File

@ -14,4 +14,4 @@
* limitations under the License.
*/
export * from './plugin';
export { default } from './plugin';

View File

@ -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,
}),
});

View File

@ -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>
);

View File

@ -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"],

View File

View File

View File

@ -0,0 +1,5 @@
---
'@backstage-community/plugin-github-actions': minor
---
Backstage version bump to v1.42.3

View File

@ -3,3 +3,4 @@ dist-types
coverage
.vscode
.eslintrc.js
.yarnrc.yml

File diff suppressed because one or more lines are too long

View File

@ -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"

View File

@ -1,3 +1,3 @@
{
"version": "1.41.1"
"version": "1.42.3"
}

View File

@ -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",

View File

@ -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",

View File

@ -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],
}),
],
});

View File

@ -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",

View File

@ -21,16 +21,16 @@
"build-image": "docker build ../.. -f Dockerfile --tag backstage"
},
"dependencies": {
"@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/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-node": "^0.6.5",
"@backstage/plugin-catalog-backend": "^3.0.0",
"@backstage/plugin-proxy-backend": "^0.6.4",
"@backstage/backend-defaults": "backstage:^",
"@backstage/backend-plugin-api": "backstage:^",
"@backstage/catalog-model": "backstage:^",
"@backstage/config": "backstage:^",
"@backstage/plugin-app-backend": "backstage:^",
"@backstage/plugin-auth-backend": "backstage:^",
"@backstage/plugin-auth-backend-module-github-provider": "backstage:^",
"@backstage/plugin-auth-node": "backstage:^",
"@backstage/plugin-catalog-backend": "backstage:^",
"@backstage/plugin-proxy-backend": "backstage:^",
"app": "link:../app",
"better-sqlite3": "^9.0.0",
"dockerode": "^3.3.1",
@ -39,7 +39,7 @@
"winston": "^3.2.1"
},
"devDependencies": {
"@backstage/cli": "^0.33.1",
"@backstage/cli": "backstage:^",
"@types/dockerode": "^3.3.0",
"@types/express": "^4.17.6",
"@types/express-serve-static-core": "^4.17.5",

View File

@ -55,14 +55,14 @@
"test": "backstage-cli package test"
},
"dependencies": {
"@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/frontend-plugin-api": "^0.10.4",
"@backstage/integration": "^1.17.1",
"@backstage/integration-react": "^1.2.9",
"@backstage/plugin-catalog-react": "^1.19.1",
"@backstage/catalog-model": "backstage:^",
"@backstage/core-compat-api": "backstage:^",
"@backstage/core-components": "backstage:^",
"@backstage/core-plugin-api": "backstage:^",
"@backstage/frontend-plugin-api": "backstage:^",
"@backstage/integration": "backstage:^",
"@backstage/integration-react": "backstage:^",
"@backstage/plugin-catalog-react": "backstage:^",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.61",
@ -73,11 +73,11 @@
"react-use": "^17.2.4"
},
"devDependencies": {
"@backstage/cli": "^0.33.1",
"@backstage/core-app-api": "^1.18.0",
"@backstage/dev-utils": "^1.1.12",
"@backstage/frontend-test-utils": "^0.3.4",
"@backstage/test-utils": "^1.7.10",
"@backstage/cli": "backstage:^",
"@backstage/core-app-api": "backstage:^",
"@backstage/dev-utils": "backstage:^",
"@backstage/frontend-test-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",

View File

@ -6,43 +6,44 @@
/// <reference types="react" />
import { AnyApiFactory } from '@backstage/core-plugin-api';
import { AnyExtensionDataRef } from '@backstage/frontend-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 { ExtensionInput } 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<
{
entityContent: RouteRef<undefined>;
},
{},
{
[x: `api:${string}`]: ExtensionDefinition<{
'api:github-actions': ExtensionDefinition<{
kind: 'api';
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>;
}>;
[
x: `entity-card:${string}/latest-branch-workflow-runs`
]: ExtensionDefinition<{
'entity-card:github-actions/latest-branch-workflow-runs': ExtensionDefinition<{
config: {
props: {
branch?: string | undefined;
@ -62,22 +63,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',
{
@ -86,7 +87,13 @@ const _default: FrontendPlugin<
>;
inputs: {
[x: string]: ExtensionInput<
AnyExtensionDataRef,
ExtensionDataRef<
unknown,
string,
{
optional?: true | undefined;
}
>,
{
optional: boolean;
singleton: boolean;
@ -101,7 +108,7 @@ const _default: FrontendPlugin<
type?: EntityCardType | undefined;
};
}>;
[x: `entity-card:${string}/latest-workflow-run`]: ExtensionDefinition<{
'entity-card:github-actions/latest-workflow-run': ExtensionDefinition<{
config: {
props: {
branch?: string | undefined;
@ -121,22 +128,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',
{
@ -145,7 +152,13 @@ const _default: FrontendPlugin<
>;
inputs: {
[x: string]: ExtensionInput<
AnyExtensionDataRef,
ExtensionDataRef<
unknown,
string,
{
optional?: true | undefined;
}
>,
{
optional: boolean;
singleton: boolean;
@ -160,7 +173,7 @@ const _default: FrontendPlugin<
type?: EntityCardType | undefined;
};
}>;
[x: `entity-card:${string}/recent-workflow-runs`]: ExtensionDefinition<{
'entity-card:github-actions/recent-workflow-runs': ExtensionDefinition<{
config: {
props: {
dense: boolean;
@ -184,22 +197,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',
{
@ -208,7 +221,13 @@ const _default: FrontendPlugin<
>;
inputs: {
[x: string]: ExtensionInput<
AnyExtensionDataRef,
ExtensionDataRef<
unknown,
string,
{
optional?: true | undefined;
}
>,
{
optional: boolean;
singleton: boolean;
@ -223,7 +242,7 @@ const _default: FrontendPlugin<
type?: EntityCardType | undefined;
};
}>;
[x: `entity-card:${string}/workflow-runs`]: ExtensionDefinition<{
'entity-card:github-actions/workflow-runs': ExtensionDefinition<{
kind: 'entity-card';
name: 'workflow-runs';
config: {
@ -235,22 +254,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',
{
@ -264,7 +283,7 @@ const _default: FrontendPlugin<
type?: EntityCardType | undefined;
};
}>;
[x: `entity-content:${string}/entity`]: ExtensionDefinition<{
'entity-content:github-actions/entity': ExtensionDefinition<{
kind: 'entity-content';
name: 'entity';
config: {
@ -280,35 +299,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',
{
@ -317,10 +332,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'
@ -329,6 +346,7 @@ const _default: FrontendPlugin<
| 'operation'
| 'observability'
| undefined;
loader: () => Promise<JSX.Element>;
routeRef?: RouteRef<AnyRouteRefParams> | undefined;
filter?: EntityPredicate | ((entity: Entity) => boolean) | undefined;
};

View File

@ -29,7 +29,7 @@ import { rootRouteRef } from './routes';
* @alpha
*/
export default createFrontendPlugin({
id: 'github-actions',
pluginId: 'github-actions',
routes: convertLegacyRouteRefs({
entityContent: rootRouteRef,
}),

View File

@ -13,11 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {
configApiRef,
ApiBlueprint,
createApiFactory,
} from '@backstage/frontend-plugin-api';
import { configApiRef, ApiBlueprint } from '@backstage/frontend-plugin-api';
import { scmAuthApiRef } from '@backstage/integration-react';
import { githubActionsApiRef, GithubActionsClient } from '../api';
@ -25,12 +21,11 @@ import { githubActionsApiRef, GithubActionsClient } from '../api';
* @alpha
*/
export const githubActionsApi = ApiBlueprint.make({
params: {
factory: createApiFactory({
params: defineParams =>
defineParams({
api: githubActionsApiRef,
deps: { configApi: configApiRef, scmAuthApi: scmAuthApiRef },
factory: ({ configApi, scmAuthApi }) =>
new GithubActionsClient({ configApi, scmAuthApi }),
}),
},
});

View File

@ -24,8 +24,8 @@ import { rootRouteRef } from '../routes';
export const entityGithubActionsContent = EntityContentBlueprint.make({
name: 'entity',
params: {
defaultPath: 'github-actions',
defaultTitle: 'GitHub Actions',
path: 'github-actions',
title: 'GitHub Actions',
filter: isGithubActionsAvailable,
routeRef: convertLegacyRouteRef(rootRouteRef),
loader: () =>

File diff suppressed because it is too large Load Diff

View File

View File

File diff suppressed because one or more lines are too long

View File

@ -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'

View File

@ -1,3 +1,3 @@
{
"version": "1.41.1"
"version": "1.42.3"
}

View File

@ -37,9 +37,9 @@
"directory": "workspaces/linguist"
},
"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",
@ -62,9 +62,5 @@
"*.{json,md}": [
"prettier --write"
]
},
"dependencies": {
"@backstage-community/plugin-linguist": "workspace:^",
"@backstage-community/plugin-linguist-backend": "workspace:^"
}
}

View File

@ -1,5 +1,16 @@
# @backstage-community/plugin-catalog-backend-module-linguist-tags-processor
## 0.12.0
### Minor Changes
- ca3c813: Backstage version bump to v1.42.3
### Patch Changes
- Updated dependencies [ca3c813]
- @backstage-community/plugin-linguist-common@0.11.0
## 0.11.0
### Minor Changes

View File

@ -1,7 +1,7 @@
{
"name": "@backstage-community/plugin-catalog-backend-module-linguist-tags-processor",
"description": "The linguist-tags-processor backend module for the catalog plugin.",
"version": "0.11.0",
"version": "0.12.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@ -31,16 +31,16 @@
},
"dependencies": {
"@backstage-community/plugin-linguist-common": "workspace:^",
"@backstage/backend-plugin-api": "^1.4.1",
"@backstage/catalog-model": "^1.7.5",
"@backstage/config": "^1.3.3",
"@backstage/plugin-catalog-node": "^1.17.2",
"@backstage/types": "^1.2.1",
"@backstage/backend-plugin-api": "backstage:^",
"@backstage/catalog-model": "backstage:^",
"@backstage/config": "backstage:^",
"@backstage/plugin-catalog-node": "backstage:^",
"@backstage/types": "backstage:^",
"node-fetch": "^2.6.7"
},
"devDependencies": {
"@backstage/backend-test-utils": "^1.7.0",
"@backstage/cli": "^0.33.1",
"@backstage/backend-test-utils": "backstage:^",
"@backstage/cli": "backstage:^",
"@types/js-yaml": "^4.0.9",
"js-yaml": "^4.1.0",
"linguist-js": "^2.5.3"

View File

@ -1,5 +1,16 @@
# @backstage-community/plugin-linguist-backend
## 0.18.0
### Minor Changes
- ca3c813: Backstage version bump to v1.42.3
### Patch Changes
- Updated dependencies [ca3c813]
- @backstage-community/plugin-linguist-common@0.11.0
## 0.17.0
### Minor Changes

View File

@ -1,6 +1,6 @@
{
"name": "@backstage-community/plugin-linguist-backend",
"version": "0.17.0",
"version": "0.18.0",
"backstage": {
"role": "backend-plugin",
"pluginId": "linguist",
@ -41,15 +41,15 @@
},
"dependencies": {
"@backstage-community/plugin-linguist-common": "workspace:^",
"@backstage/backend-defaults": "^0.11.1",
"@backstage/backend-openapi-utils": "^0.5.5",
"@backstage/backend-plugin-api": "^1.4.1",
"@backstage/catalog-client": "^1.10.2",
"@backstage/catalog-model": "^1.7.5",
"@backstage/config": "^1.3.3",
"@backstage/errors": "^1.2.7",
"@backstage/plugin-catalog-node": "^1.17.2",
"@backstage/types": "^1.2.1",
"@backstage/backend-defaults": "backstage:^",
"@backstage/backend-openapi-utils": "backstage:^",
"@backstage/backend-plugin-api": "backstage:^",
"@backstage/catalog-client": "backstage:^",
"@backstage/catalog-model": "backstage:^",
"@backstage/config": "backstage:^",
"@backstage/errors": "backstage:^",
"@backstage/plugin-catalog-node": "backstage:^",
"@backstage/types": "backstage:^",
"@types/express": "*",
"express": "^4.18.1",
"express-promise-router": "^4.1.0",
@ -63,12 +63,12 @@
},
"devDependencies": {
"@backstage-community/plugin-catalog-backend-module-linguist-tags-processor": "workspace:^",
"@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/plugin-catalog-backend": "^3.0.0",
"@backstage/repo-tools": "^0.15.0",
"@backstage/backend-test-utils": "backstage:^",
"@backstage/cli": "backstage:^",
"@backstage/plugin-auth-backend": "backstage:^",
"@backstage/plugin-auth-backend-module-guest-provider": "backstage:^",
"@backstage/plugin-catalog-backend": "backstage:^",
"@backstage/repo-tools": "backstage:^",
"@types/fs-extra": "^11.0.0",
"@types/node-fetch": "^2.5.12",
"@types/supertest": "^6.0.0",

View File

@ -1,5 +1,11 @@
# @backstage-community/plugin-linguist-common
## 0.11.0
### Minor Changes
- ca3c813: Backstage version bump to v1.42.3
## 0.10.0
### Minor Changes

View File

@ -1,6 +1,6 @@
{
"name": "@backstage-community/plugin-linguist-common",
"version": "0.10.0",
"version": "0.11.0",
"description": "Common functionalities for the linguist plugin",
"backstage": {
"role": "common-library",
@ -39,6 +39,6 @@
"test": "backstage-cli package test"
},
"devDependencies": {
"@backstage/cli": "^0.33.1"
"@backstage/cli": "backstage:^"
}
}

View File

@ -1,5 +1,16 @@
# @backstage-community/plugin-linguist
## 0.11.0
### Minor Changes
- ca3c813: Backstage version bump to v1.42.3
### Patch Changes
- Updated dependencies [ca3c813]
- @backstage-community/plugin-linguist-common@0.11.0
## 0.10.0
### Minor Changes

View File

@ -82,3 +82,43 @@ To setup the Linguist Card frontend you'll need to do the following steps:
**Notes:**
- The `if` prop is optional on the `EntitySwitch.Case`, you can remove it if you always want to see the tab even if the entity being viewed does not have the needed annotation
## New Frontend System (Alpha)
The Linguist 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-linguist
```
2. Enable the plugin in your `packages/app(-next)/src/App.tsx`:
After all other imports:
```tsx
import linguistPlugin from '@backstage-community/plugin-linguist';
```
```tsx
export const app = createApp({
features: [
catalogPlugin,
catalogImportPlugin,
userSettingsPlugin,
linguistPlugin,
// ...
],
});
```
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
```

View File

@ -1,6 +1,6 @@
{
"name": "@backstage-community/plugin-linguist",
"version": "0.10.0",
"version": "0.11.0",
"backstage": {
"role": "frontend-plugin",
"pluginId": "linguist",
@ -52,13 +52,13 @@
},
"dependencies": {
"@backstage-community/plugin-linguist-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/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:^",
"@material-ui/core": "^4.9.13",
"@material-ui/lab": "4.0.0-alpha.61",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
@ -67,9 +67,9 @@
"slugify": "^1.6.4"
},
"devDependencies": {
"@backstage/cli": "^0.33.1",
"@backstage/dev-utils": "^1.1.12",
"@backstage/plugin-catalog": "^1.31.1",
"@backstage/cli": "backstage:^",
"@backstage/dev-utils": "backstage:^",
"@backstage/plugin-catalog": "backstage:^",
"@testing-library/dom": "^10.0.0",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^15.0.0",

View File

@ -6,17 +6,19 @@
/// <reference types="react" />
import { AnyApiFactory } from '@backstage/core-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 { TranslationRef } from '@backstage/core-plugin-api/alpha';
// @alpha (undocumented)
const _default: FrontendPlugin<
const _default: OverridableFrontendPlugin<
{},
{},
{
@ -25,15 +27,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:linguist/languages': ExtensionDefinition<{
kind: 'entity-card';
@ -47,22 +51,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',
{

View File

@ -16,7 +16,6 @@
import {
ApiBlueprint,
createApiFactory,
createFrontendPlugin,
discoveryApiRef,
fetchApiRef,
@ -41,8 +40,8 @@ export const entityLinguistCard = EntityCardBlueprint.make({
/** @alpha */
export const linguistApi = ApiBlueprint.make({
params: {
factory: createApiFactory({
params: defineParams =>
defineParams({
api: linguistApiRef,
deps: {
discoveryApi: discoveryApiRef,
@ -51,7 +50,6 @@ export const linguistApi = ApiBlueprint.make({
factory: ({ discoveryApi, fetchApi }) =>
new LinguistClient({ discoveryApi, fetchApi }),
}),
},
});
/** @alpha */

File diff suppressed because it is too large Load Diff

View File

View File

View File

View File

View File

@ -0,0 +1,7 @@
---
'@backstage-community/plugin-sonarqube': minor
'@backstage-community/plugin-sonarqube-backend': minor
'@backstage-community/plugin-sonarqube-react': minor
---
Backstage version bump to v1.42.3

View File

@ -1,3 +1,3 @@
{
"version": "1.41.1"
"version": "1.42.3"
}

View File

@ -37,9 +37,9 @@
"directory": "workspaces/sonarqube"
},
"devDependencies": {
"@backstage/cli": "^0.33.1",
"@backstage/cli": "^0.34.0",
"@backstage/e2e-test-utils": "^0.1.1",
"@backstage/repo-tools": "^0.15.0",
"@backstage/repo-tools": "^0.15.1",
"@changesets/cli": "^2.27.1",
"knip": "^5.27.4",
"node-gyp": "^10.0.0",

View File

@ -20,26 +20,26 @@
},
"dependencies": {
"@backstage-community/plugin-sonarqube": "workspace:^",
"@backstage/app-defaults": "^1.6.4",
"@backstage/app-defaults": "^1.6.5",
"@backstage/catalog-model": "^1.7.5",
"@backstage/cli": "^0.33.1",
"@backstage/cli": "^0.34.0",
"@backstage/core-app-api": "^1.18.0",
"@backstage/core-compat-api": "^0.4.4",
"@backstage/core-components": "^0.17.4",
"@backstage/core-compat-api": "^0.5.1",
"@backstage/core-components": "^0.17.5",
"@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/frontend-app-api": "^0.12.0",
"@backstage/frontend-defaults": "^0.3.0",
"@backstage/frontend-plugin-api": "^0.11.0",
"@backstage/integration-react": "^1.2.9",
"@backstage/plugin-api-docs": "^0.12.9",
"@backstage/plugin-catalog": "^1.31.1",
"@backstage/plugin-api-docs": "^0.12.10",
"@backstage/plugin-catalog": "^1.31.2",
"@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/plugin-catalog-graph": "^0.4.22",
"@backstage/plugin-catalog-import": "^0.13.4",
"@backstage/plugin-catalog-react": "^1.20.1",
"@backstage/plugin-org": "^0.6.43",
"@backstage/plugin-user-settings": "^0.8.25",
"@backstage/theme": "^0.6.8",
"@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": "^1.7.11",
"@testing-library/dom": "^9.0.0",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^14.0.0",

View File

@ -17,18 +17,10 @@ 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';
@ -50,7 +42,7 @@ const signInPage = SignInPageBlueprint.make({
const homePageExtension = PageBlueprint.make({
name: 'home',
params: {
defaultPath: '/',
path: '/',
loader: () => Promise.resolve(<Navigate to="catalog" />),
},
});
@ -61,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,
@ -88,13 +62,7 @@ export const app = createApp({
...collectedLegacyPlugins,
createFrontendModule({
pluginId: 'app',
extensions: [
signInPage,
homePageExtension,
scmAuthApi,
scmIntegrationsApi,
navigationExtension,
],
extensions: [signInPage, homePageExtension, navigationExtension],
}),
],
});

View File

@ -20,23 +20,23 @@
},
"dependencies": {
"@backstage-community/plugin-sonarqube": "workspace:^",
"@backstage/app-defaults": "^1.6.4",
"@backstage/app-defaults": "^1.6.5",
"@backstage/catalog-model": "^1.7.5",
"@backstage/cli": "^0.33.1",
"@backstage/cli": "^0.34.0",
"@backstage/core-app-api": "^1.18.0",
"@backstage/core-components": "^0.17.4",
"@backstage/core-components": "^0.17.5",
"@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-api-docs": "^0.12.10",
"@backstage/plugin-catalog": "^1.31.2",
"@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-catalog-graph": "^0.4.22",
"@backstage/plugin-catalog-import": "^0.13.4",
"@backstage/plugin-catalog-react": "^1.20.1",
"@backstage/plugin-org": "^0.6.43",
"@backstage/plugin-permission-react": "^0.4.36",
"@backstage/plugin-user-settings": "^0.8.24",
"@backstage/theme": "^0.6.7",
"@backstage/plugin-user-settings": "^0.8.25",
"@backstage/theme": "^0.6.8",
"@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": "^1.7.11",
"@playwright/test": "^1.32.3",
"@testing-library/dom": "^9.0.0",
"@testing-library/jest-dom": "^6.0.0",

View File

@ -22,16 +22,16 @@
},
"dependencies": {
"@backstage-community/plugin-sonarqube-backend": "workspace:^",
"@backstage/backend-defaults": "^0.11.1",
"@backstage/backend-plugin-api": "^1.4.1",
"@backstage/backend-defaults": "^0.12.0",
"@backstage/backend-plugin-api": "^1.4.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-proxy-backend": "^0.6.4",
"@backstage/plugin-app-backend": "^0.5.5",
"@backstage/plugin-auth-backend": "^0.25.3",
"@backstage/plugin-auth-backend-module-github-provider": "^0.3.6",
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.11",
"@backstage/plugin-auth-node": "^0.6.6",
"@backstage/plugin-catalog-backend": "^3.0.1",
"@backstage/plugin-proxy-backend": "^0.6.5",
"app": "link:../app",
"better-sqlite3": "^9.0.0",
"dockerode": "^3.3.1",
@ -40,7 +40,7 @@
"winston": "^3.2.1"
},
"devDependencies": {
"@backstage/cli": "^0.33.1",
"@backstage/cli": "^0.34.0",
"@types/dockerode": "^3.3.0",
"@types/express": "^4.17.6",
"@types/express-serve-static-core": "^4.17.5",

View File

@ -38,8 +38,8 @@
"test": "backstage-cli package test"
},
"dependencies": {
"@backstage/backend-defaults": "^0.11.1",
"@backstage/backend-plugin-api": "^1.4.1",
"@backstage/backend-defaults": "^0.12.0",
"@backstage/backend-plugin-api": "^1.4.2",
"@backstage/config": "^1.3.3",
"@backstage/errors": "^1.2.7",
"@types/express": "*",
@ -49,10 +49,10 @@
"yn": "^5.0.0"
},
"devDependencies": {
"@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-test-utils": "^1.8.0",
"@backstage/cli": "^0.34.0",
"@backstage/plugin-auth-backend": "^0.25.3",
"@backstage/plugin-auth-backend-module-guest-provider": "^0.2.11",
"@types/node-fetch": "^2.5.12",
"@types/supertest": "^6.0.0",
"msw": "^1.0.0",

View File

@ -55,7 +55,7 @@
"@backstage/core-plugin-api": "^1.10.9"
},
"devDependencies": {
"@backstage/cli": "^0.33.1",
"@backstage/cli": "^0.34.0",
"@types/react": "^16.13.1 || ^17.0.0",
"@types/react-dom": "^18.2.19",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",

View File

@ -61,12 +61,12 @@
"dependencies": {
"@backstage-community/plugin-sonarqube-react": "workspace:^",
"@backstage/catalog-model": "^1.7.5",
"@backstage/core-compat-api": "^0.4.4",
"@backstage/core-components": "^0.17.4",
"@backstage/core-compat-api": "^0.5.1",
"@backstage/core-components": "^0.17.5",
"@backstage/core-plugin-api": "^1.10.9",
"@backstage/frontend-app-api": "^0.11.4",
"@backstage/frontend-plugin-api": "^0.10.4",
"@backstage/plugin-catalog-react": "^1.19.1",
"@backstage/frontend-app-api": "^0.12.0",
"@backstage/frontend-plugin-api": "^0.11.0",
"@backstage/plugin-catalog-react": "^1.20.1",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/styles": "^4.10.0",
@ -77,11 +77,11 @@
"react-use": "^17.2.4"
},
"devDependencies": {
"@backstage/cli": "^0.33.1",
"@backstage/cli": "^0.34.0",
"@backstage/core-app-api": "^1.18.0",
"@backstage/dev-utils": "^1.1.12",
"@backstage/frontend-test-utils": "^0.3.4",
"@backstage/test-utils": "^1.7.10",
"@backstage/dev-utils": "^1.1.13",
"@backstage/frontend-test-utils": "^0.3.5",
"@backstage/test-utils": "^1.7.11",
"@testing-library/dom": "^10.0.0",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^15.0.0",

View File

@ -3,10 +3,10 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { FrontendPlugin } from '@backstage/frontend-plugin-api';
import { OverridableFrontendPlugin } from '@backstage/frontend-plugin-api';
// @alpha (undocumented)
const _default: FrontendPlugin<{}, {}, {}>;
const _default: OverridableFrontendPlugin<{}, {}, {}>;
export default _default;
// (No @packageDocumentation comment for this package)

View File

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { ApiBlueprint, createApiFactory } from '@backstage/frontend-plugin-api';
import { ApiBlueprint } from '@backstage/frontend-plugin-api';
import { SonarQubeClient } from '../api';
import { sonarQubeApiRef } from '@backstage-community/plugin-sonarqube-react';
import { discoveryApiRef, fetchApiRef } from '@backstage/core-plugin-api';
@ -22,8 +22,8 @@ import { discoveryApiRef, fetchApiRef } from '@backstage/core-plugin-api';
* @alpha
*/
export const sonarQubeApi = ApiBlueprint.make({
params: {
factory: createApiFactory({
params: defineParams =>
defineParams({
api: sonarQubeApiRef,
deps: {
discoveryApi: discoveryApiRef,
@ -35,5 +35,4 @@ export const sonarQubeApi = ApiBlueprint.make({
fetchApi,
}),
}),
},
});

Some files were not shown because too many files have changed in this diff Show More